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
这个答案可能会进一步帮助您:许多实体的一个地址表?
推荐阅读
- javascript - 如何在 onchange 函数中传递 datalist 的数据值?
- python - 为什么我得到“分配前引用的局部变量”?
- spring-boot - 如何使用带有 Spring MVC/Thymeleaf 的 Rest Assured 的表单登录?
- python - 使用 Seaborn 的 factorplot 方法时遇到问题
- vim - 无法从 vimrc (mac) 成功使用自定义映射的 vim 命令
- sql - 如果运行超过 20 分钟,Postgresql 将终止查询
- javascript - 用于绘制图像的 for 循环
- express - 如果我将所有内容都包含在 jwt 有效负载中,是否需要在数据库中查找用户?
- salesforce - 在 SalesForce 中构建报告/仪表板
- android - 如何在 Google Maps Android 上“增加” VisibleRegion 的大小