2017-04-04 86 views
0

嘿,我要创建数据库的应该是像以下路线: http://imgur.com/a/UdFKr实现关系数据库方案

,但没有“接触”表。这甚至有可能吗?

而另一个问题: 如何将几个值放入单个字段?是否有可能,或者我需要创建额外的表格?

http://imgur.com/5Op7FXt

+0

你当然可以创建一个由其他4个表组成的数据库,但是如果没有“contact”表,它的用处就会有限。 –

+0

不要将多个值放入一个元组中。这违反了1NF,并且与合作令人难以置信的痛苦。当你遇到希望这样做的时候,这是一个明确的信号,你需要一个表格来获取这些信息。 –

+0

所以我的理念是相当合理的? 'contact'表只包含一个字段不是问题吗? – bielu000

回答

0

很可能没有联系表来建模。 解决方案可能是将Employee表放在de模型的中心。然后,您可以使用一对多关系将Phone_number和Email_address表链接到Employee表中,就像它们现在建模为Contact一样。由于员工可能有多个电子邮件地址和多个电话号码,因此这些表应具有员工的外键。

您必须记住的唯一事情是Employee表与Employee表的关系的基数。为了消除数据冗余,您可能希望在那里建立多对多关系,因为员工可以有多个雇主,公司可以属于多个员工。这意味着你最终将拥有一个联结表。

希望这会回答你的问题。

0

根据外键乌鸦脚的通常解释来阅读您的设计图,每个公司,员工,电子邮件地址和电话号码都有一个联系人,每个联系人至少有一个联系人。因此,Contact中的ID集合始终是其他四个表中联系ID的集合。所以你不需要联系。 (但是,如果一个联系人可能存在而没有与任何其他四个实体关联,那么这四个表本身将无法记录这些业务情况。)

我猜不清楚“如何将几个值成单场?“你的意思是你如何将多个值放入一个字段中。选择一个函数,将多个值映射为单个值,方法是可以撤消/反转。但如果你有兴趣使用个人价值观进行查询,那么你不应该这样做,这是一个糟糕的设计。研究它。 (这通常被认为违反了1NF,但这取决于1NF的含义,这个术语通常意味着很多不同的东西,最终在可以说违反它的情况下,1NF本身取决于哪些部分值你希望能够查询。)