设计两个具有相同ID的DB表?好的做法?

时间:2017-08-02 21:07:18

标签: sql-server database database-design

我必须再次上一个关于数据库设计的在线课程,因为我有一个非常懒惰的老师,我认为这教过我们一切,我继续发现他没有。

我正在设计一个小型数据库,其中两个特定的表提出了这个问题。

我有一张叫做“运动员”的桌子,里面有运动员信息和第二张名为“EntryInfo”的桌子,如果他是另一名运动员的推荐,那就存储了一个人的目标。

运动员不可能有多个这样的录入信息,所以我认为idAthlete适用于“运动员”和“EntryInfo”,但我不知道这是否正确。现在我有这些问题:

1)尽量保持“运动员”表尽可能干净但我没有在“运动员 EntryInfo ” >“表格从一开始,但它可能在同一张表中。这是处理它的最佳方式吗?关于DB设计的良好实践,它们应该在1或2个表中吗?

2)如果最好将它保存在两个单独的表中,我可以在运动员表(身份,增量)中将 idAthlete 作为PK,并让它也有作为入门信息中的PK仅作为FK?或者在具有FK idAthlete的 EntryInfo 表中使用PK身份增量 idEntryInfo 会更好吗?

我知道这是一个基本问题,我知道我应该学习数据库设计和规范化课程(我会这样做)。

1 个答案:

答案 0 :(得分:0)

当你有两个具有相同密钥的表时,它被称为垂直分区,并且由于各种原因它是有效的设计。

但是我在你的解释中没有看到任何理由。我只看到你的陈述保持“运动员”表尽可能干净,这具有非常普遍的含义。如果您要将不同的字段组放入不同的表中,您可以按照任意数量的方式对其进行分类

如果您有大量的记录并且您遇到了性能问题,那么可能值得考虑。

如果将它保存在一个表中,那么对你来说会更简单,那么你就不必在表之间同步键了