我有一个表示关系数据的PostgreSQL数据库。在我的例子中,表如下:
用户- :基本用户
- 发行人:升级用户
- :要颁发的徽章,只能由颁发者创建,可以颁发给任何类型的用户
表之间的关系如下:
- 发行者-用户:一对一,发行人基本信息保存在User表中,发行人相关信息保存在发行人表 中
- 发行者-徽章:一对多,一个发行者可以创建多个唯一的徽章
- 徽章-用户:多对多,一个用户可以持有多个diff. badge,一个badge可以发给多个diff. users
- 我应该将User和Issuer表合并为一个表,并添加一个字段来指示用户的角色,还是应该将它们分开?注意,发行者有多个对它们来说是唯一的字段(比如createdBadges)。这样,用户将同时拥有createdBadges和issuedBadges字段。
- 我是否应该创建单独的表来指示Badge和用户之间的关系,称为Issuances,或者我应该只对彼此进行数组引用?
我想要更好的逻辑一致性,更好的管理和更高的效率。
-
issuer
获得NOT NULL
到users
的唯一约束的外键 -
badge
获取NOT NULL
到issuer
的外键 -
连接表
user_badge
有指向users
和badge
的NOT NULL
外键和一个由两个外键组成的主键
不要调用表user
,因为这是SQL中的保留字。