2016-12-16 143 views
-1

我有一个关于数据库设计的问题。关于设计数据库

对于比较大的数据库系统,哪一个更好?

设计1 enter image description here

设计2 enter image description here

在我看来我舒服的第二个,但第一个比第二个我想更多的传统。

你的想法是什么?

+0

请编辑您的问题,以解释我们应该如何阅读第二个图表。 – philipxy

+0

@philipxy我认为图很清楚。首先我们将学生电话号码存储在另一个表格中,第二个我们使用XML将学生电话号码存储在同一个表格中。 –

回答

3

都没有。如果两个学生住在宿舍里,并且拥有(共用)相同的电话号码(宿舍电话),或者是在家生活的兄弟姐妹?电话号码表应该是一个组合键,phonenumber,studentId作为复合主键。这反映了所谓的多对多或关联关系,它们不容易用XML表示。

下面的模式假设每个学生都可以确定他/她使用该行的电话的“类型”。如果电话类型仅由电话确定,那么您将为电话号码和电话类型添加另一个单独的表格,而不使用studentId,并在关联表中将phoneNumber字段设置为该新电话的外键(FK)表

enter image description here

+0

谢谢你的回答,我会支付你的更正。 但是,这并不是我期待的答案,我想学习的是“哪种方法更有用,关系还是XML?” 再次感谢您。 –

+0

ahhhh,如果这就是你感兴趣的所有内容,那么关系就是答案。您不能轻松地在XML中执行多对多的关系。 –

0

我会与设计1走,但有修改。电话号码表,但是,将学生ID作为主键。这样,您可以让多个学生使用同一部电话,这对我来说是完全正常的场景。

+0

谢谢你的回答,我会考虑你的警告。 –

+0

如果电话号码表具有'studentId'作为主键,则每个学生只能有一条记录。不,需要在'studentId'和'phoneNumber'上有一个COMPOSITE主键。 –

0

我不会通过将电话号码标准化为某些潜在的无限列表来解决此问题。

你真的需要一个学生多少个/什么类型的电话号码?比如,你需要传真号码吗? 也许你需要一个学期时间和一个非学期时间数?

您似乎更有可能需要一个主号码和一个备用号码,并且这些号码可以存储在学生表本身中。

+0

比你的答案。但我注意到,你们所有人都迷恋我的小学生例子,我设计这个数据库只是为了“示例”的目的。我真正想学的是,使用XML是设计数据库的一个不好的习惯。 –

+0

@OnurEryilmaz我们只能回答你提出的问题,并且描述那些花时间帮助“迷恋”的人是非常粗鲁的。你应该问:“使用XML是设计数据库的一个不好的做法吗?”,或者更好地提到关于该主题的任何现有问题。 –

+0

我对我的语言感到抱歉,我没有想到“痴迷”是无礼的。但是,正如我问我的问题:“哪个设计”更好。我没有问:“我的第一张图是错的吗?”。但是,我很抱歉。 –