我有一个PostgreSQL数据库来表示关系数据。在我的例子中,表如下所示:
*用户:基本用户
*颁发者:已升级用户
*徽章:要颁发的徽章,只能由颁发者创建,可以颁发给任何类型的用户
各表之间的关系如下:
*颁发者-用户:一对一,发卡行基本信息保存在User表,发卡行相关信息保存在Issuer表
*颁发者-徽章:一对多,发行者可以创建多个唯一的徽章
*徽章-用户:多对多,一个用户可以持有多个不同的徽章,一个徽章可以发放给多个不同的用户
1.我应该将User和Issuer表合并为一个表,并添加一个字段来指示用户的角色,还是应该将它们分开?请注意,Issuer有多个对它们唯一的字段(如createdBadges)。这样,User将同时拥有createdBadges和issuedBadges字段。
1.我是否应该创建单独的表来指示徽章和用户之间的关系(称为“Issuances”),或者我是否应该只使用彼此的数组引用?
我需要更好的逻辑一致性、更好的管理和更高的效率。
1条答案
按热度按时间oxiaedzo1#
issuer
gets aNOT NULL
foreign key tousers
with a unique constraint on itbadge
gets aNOT NULL
foreign key toissuer
user_badge
hasNOT NULL
foreign keys to bothusers
andbadge
and a primary key that is composed of both foreign keysDon't call a table
user
, since that is a reserved word in SQL.