我正在研究规范化形式,然后出现了疑问:
假设我有一个表公司(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),则会有空白单元格,再次感觉不对。
所以,任何人都有,让我看看,“优雅的解决方案”?
答案 0 :(得分:0)
让我们看看情况: 你需要一个电话桌 2.表格包含代表电话和公司电话的记录 3.指向Compnay表的代表表的FK是不可区分的(即相同类型的数值) 4.您不希望在电话表中有两个不同的FK列
现在,在运行查询时,应该有一些方法来区分电话,无论它属于公共场所还是代表。您可以通过在电话表中添加列calles电话类型来实现。该列可以保存C或R等值,以表示电话是公司还是代表。