一些关于数据库建模的提示

时间:2016-04-20 18:36:37

标签: database database-design database-normalization

我正在研究规范化形式,然后出现了疑问:

假设我有一个表公司(pk,CompanyName)。 公司可能有一个或多个电话号码(1:N)。 公司可能有一名或多名代表(pk,代表名称)(1:N)。 这个代表可能有一个或多个电话号码(1:N)。

不知道为什么但是感觉不对,为公司的电话和代表电话创建一个单独的表。字段相同(pk,areacode,number),因此它应存储在同一个表中。

然后,让我们制作一个电话表。但是当遇到FK时,它可能无法正常工作。

1 CompanyA

2 CompanyB

3 CompanyC

1名代表A

2代表B

3代表C

如果我的电话表是(PK,FK,AreaCode,Number)公司PK和代表PK将具有相同的值,搜索将返回错误的值。

如果我的电话表是(PK,CFK,RFK AreaCode,Number),则会有空白单元格,再次感觉不对。

所以,任何人都有,让我看看,“优雅的解决方案”?

1 个答案:

答案 0 :(得分:0)

让我们看看情况: 你需要一个电话桌 2.表格包含代表电话和公司电话的记录 3.指向Compnay表的代表表的FK是不可区分的(即相同类型的数值) 4.您不希望在电话表中有两个不同的FK列

现在,在运行查询时,应该有一些方法来区分电话,无论它属于公共场所还是代表。您可以通过在电话表中添​​加列calles电话类型来实现。该列可以保存C或R等值,以表示电话是公司还是代表。