【发布时间】:2014-03-06 16:05:44
【问题描述】:
我有下表,代表了足球比赛期间给球员的牌:
CREATE TABLE cards (
player_id INT,
match_id INT,
color VARCHAR(4),
minute INT,
FOREIGN KEY (player_id) REFERENCES players(id),
FOREIGN KEY (match_id) REFERENCES matches(id)
);
如您所见,其中没有主键。玩家有可能在同一场比赛中,在同一分钟,收到两张相同颜色的牌。我认为这没问题,因为不需要更精确地知道卡片是在哪一秒发出的。
这是糟糕的设计吗?这个有名字吗?这是任何一种正常的形式吗?
【问题讨论】:
-
大多数情况下,没有主键的数据库表是weak-entity表,通常我们应该为每个数据库表设置一个主键。
-
@AlbusShin 不,弱实体仍然有密钥。只是外键在键“内”。
标签: database database-design relational-database database-schema