表示不同类型关系的PostgreSQL

5gfr0r5j  于 2022-12-03  发布在  PostgreSQL
关注(0)|答案(1)|浏览(102)

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

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

各表之间的关系如下:

*颁发者-用户:一对一,发卡行基本信息保存在User表,发卡行相关信息保存在Issuer表
*颁发者-徽章:一对多,发行者可以创建多个唯一的徽章
*徽章-用户:多对多,一个用户可以持有多个不同的徽章,一个徽章可以发放给多个不同的用户

1.我应该将User和Issuer表合并为一个表,并添加一个字段来指示用户的角色,还是应该将它们分开?请注意,Issuer有多个对它们唯一的字段(如createdBadges)。这样,User将同时拥有createdBadges和issuedBadges字段。
1.我是否应该创建单独的表来指示徽章和用户之间的关系(称为“Issuances”),或者我是否应该只使用彼此的数组引用?
我需要更好的逻辑一致性、更好的管理和更高的效率。

oxiaedzo

oxiaedzo1#

  • issuer gets a NOT NULL foreign key to users with a unique constraint on it
  • badge gets a NOT NULL foreign key to issuer
  • a junction table user_badge has NOT NULL foreign keys to both users and badge and a primary key that is composed of both foreign keys

Don't call a table user , since that is a reserved word in SQL.

相关问题