首页 > 解决方案 > 地址映射到客户、员工和餐厅

问题描述

我需要一些关于如何设计数据库模式以在客户地址、员工地址餐厅和餐厅本身地址之间共享地址表的建议。客户可以有多个地址,我们如何以规范化的形式处理这种情况。

标签: database-design

解决方案


为了解决这个问题,您需要将所有实体分组到一个公共组下,比如“用户”,并通过单独的“用户类型”表来区分它们。

在您的情况下,有三种“用户类型”-客户、员工、餐厅

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

这个答案可能会进一步帮助您:许多实体的一个地址表?


推荐阅读