我需要一些有关如何设计数据库架构的建议,以在客户地址,员工地址餐厅和餐厅本身地址之间共享地址表。客户可以有多个地址,我们如何以规范化形式处理这种情况。
答案 0 :(得分:0)
为了解决此问题,您需要将所有实体归为一个共同的组,例如“用户”,并通过单独的“ user_types”表对其进行区分。
在您的情况下,有三种“用户类型”-客户,员工,餐厅
id | user_type
--------------
1 | customer
2 | employee
3 | restaurant
在用户表中,您可以通过user_type_id列
获得外键引用使用所需的地址字段创建一个单独的地址表 然后,您可以通过对用户的外键引用在客户地址,员工地址或餐厅地址之间建立一对多关系。例如,
id|door_no|address_line_1|address_line_2|user_id
----------------------------------------
1 | 21/B | Baker street |8th avenue |1
此答案可能会进一步帮助您:One Address Table for Many entities?