我们将离开用户和其他社交媒体机制(例如通知,朋友等)。我们希望关注用户可能发布的内容以及其他用户如何与之互动。
到目前为止,我们将为每个实体提供表格。
我认为我们将为每个实体 - 交互组合提供表格,以跟踪哪个记录的评级,评论等。例如,对于Blog,我们会有BlogRatings,BlogComments,BlogFlags,BlogLikes和BlogShares。
但是对于我们稍后添加的每个实体{E},我们需要为{E}评级,{E}评论,{E}标志,{E}喜欢和{E}股创建表格。然后,如果我们想出一个新的交互,我们需要编写与已存在的实体一样多的新表,以便用户可以对所有内容执行新的交互。这看起来真的很乏味。
我如何计划这样的表来最小化/简化维护?
答案 0 :(得分:0)
这是使用单表继承的解决方案,但在这种情况下您可能希望查看类表继承。
--postgres syntax
create table nodes (
node_id serial primary key,
type varchar(20) not null check (type in ('BLOG_POST','PHOTO','STATUS_UPDATE') ),
blog_title text null,
blog_body text null,
status_body text null,
...
);
create table comments (
comment_id serial primary key,
node_id int not null references nodes(node_id),
comment text not null,
parent_comment_id int null references comments(id)
...
);
您还可以将评论视为一种节点。您可以将喜欢,评级,旗帜和可能的分组分组为“反馈”类型