表示不同类型关系的PostgreSQL



我有一个表示关系数据的PostgreSQL数据库。在我的例子中,表如下:

用户
  • :基本用户
  • 发行人:升级用户
  • :要颁发的徽章,只能由颁发者创建,可以颁发给任何类型的用户

表之间的关系如下:

  • 发行者-用户:一对一,发行人基本信息保存在User表中,发行人相关信息保存在发行人表
  • 发行者-徽章:一对多,一个发行者可以创建多个唯一的徽章
  • 徽章-用户:多对多,一个用户可以持有多个diff. badge,一个badge可以发给多个diff. users
  1. 我应该将User和Issuer表合并为一个表,并添加一个字段来指示用户的角色,还是应该将它们分开?注意,发行者有多个对它们来说是唯一的字段(比如createdBadges)。这样,用户将同时拥有createdBadges和issuedBadges字段。
  2. 我是否应该创建单独的表来指示Badge和用户之间的关系,称为Issuances,或者我应该只对彼此进行数组引用?

我想要更好的逻辑一致性,更好的管理和更高的效率。

  • issuer获得NOT NULLusers的唯一约束的外键

  • badge获取NOT NULLissuer的外键

  • 连接表user_badge有指向usersbadgeNOT NULL外键和一个由两个外键组成的主键

不要调用表user,因为这是SQL中的保留字。

最新更新