因为我是数据库设计的新手,所以有一个“最佳实践”问题,我想确保自己在正确的方向上工作! r1 T- s. P9 I9 R9 M
我有三种用户类型:用户(单人)、组(许多用户)和公司(许多组)。每个用户都有自己的登录名称,允许他们发布消息。因此,例如。如果公司发布消息,它将显示在所有链接的用户新闻摘要中。 - N5 p& r. N$ P( O为此,我有一个表 messages存储信息内容和链接用户类型的外键0 ]0 I. m- W2 R1 P3 u3 L. @( p2 W
我打算使用以下架构(PostgreSQL)实现这一目标… - ?2 T' H) A; Z$ Gcreate table notifications( notification_id serial primary key, user_id integer references users, group_id integer references groups, company_id integer references companies, date_created timestamp not null default now(), title_id text not null, message_id text not null, icon text not null default 'logo');comment on table notifications is 'Messages to be displayed on a users home feed';这将允许我构建一个查询来提取用户新闻提取的相关信息(例如,只有一个字段user_id,group_id或company_id将具有值)$ y1 u1 z3 [: e" h' [
但这是最好的方法吗?我一定有一个空的外键是个坏主意。我认为使用枚举键可能会有更好的解决方案?(这是否存在?!)" M j8 ?/ Y/ _" H
谢谢9 v. |. j* V3 p4 j' }3 C