我对表格设计有点困惑。
方法1)使用第一种方法,我可以从电话簿表中选择所有电话号码,并通过指定类型过滤出员工的电话号码。方法2)在第二种方法中,我可以通过连接两个表来选择全部,并可以检索员工的电话号码。
我对地址也有同样的问题。我有员工、客户、员工和其他人的地址。我已经在谷歌上搜索过了,仍然无法选择哪种方法是正确的。哪种方法是正确的,为什么另一种不正确,还有其他更好的设计?
方法1
employee
id | name
1 e
customer
id | name
1 c
phone_book
type | fk_id | phone
e 1 123123123
c 1 451323123
方法2
employee
id | name
1 e
customer
id | name
1 c
employee_phone_book
emp_id | phone
1 1231233434
2 6273343423
customer_phone_book
cus_id | phone
1 5231233434
2 1251233434
编辑:员工和客户可以有多个电话号码。地址详细信息也是如此。
employee
id | name | phone_id
1 e 1
customer
id | name | phone_id
1 c 2
phone_book
phone_id | phone
1 123123123
2 451323123
对我来说,对电话的引用应该在employee
和customer
表中(FK到phone_book
表)
更新:如果客户/员工可能有多部手机,最好通过附加表格(如)定义多对多关系
customer_phone
phone_id | customer_id (reference to the customer table)
1 1
2 1
如果员工和客户有多个电话号码,那么你的电话簿应该是这样的。您需要创建一对多关系表结构。
phone_book
phone_id | EmpOrCustomer | EmpOrCustomerId | phone
1 1 1 123123123
2 1 1 45132XXXX
3 2 4 45132XXXX
在上面的表结构中,您可以添加两个额外的列,告诉您其员工或客户,另一个列告诉员工或客户id是什么。
希望这能有所帮助。