sql - 关于正确数据结构的问题
问题描述
我有一个请求表。
对于每个请求,有 2 个不同角色的人与之相关,详细信息应保持完全相同。
人们的详细信息出现在另一个表中。
为链接到人员表的每个人在请求表中放置 2 个关键字段是否正确
或者最好将关键字段放在persons表中?(每个人只能有一个请求)
你会这样做吗:
或者像那样
提前致谢
解决方案
您的设计的典型解决方案是维护三个表。除了 person 和 requests 表(用于存储有关人员和请求本身的数据)之外,还有第三个联结表,用于维护人员和请求之间的关系。这是该联结表的外观:
person_id | request_id
1 | 1
2 | 1
3 | 2
4 | 2
person_id
可以使用联结表中的唯一约束来强制执行只有一个人有一个请求的要求。
将每个请求限制为只有两个人有点棘手,但可以使用插入前触发器来完成。
推荐阅读
- android - 颤振 image_cropper 崩溃
- r - 在 full_join() 之后如何用其他来源的数据替换一个来源中的 NA
- java - 如何在浏览器堆栈或 GRID 上使用 Selenium Webdriver(JAVA) 下载文件并检查其内容?
- javascript - 使用 :not() 过滤掉事件处理程序中的元素
- typescript - 对返回对象字面量的 Array.map 进行类型检查
- php - CPanel 中的 Laravel 部署返回 HTTP 错误 500
- mysql - 如何将参数传递给 Pentaho Report (.prpt) 以便 sql 查询可以动态运行以在运行时生成报告
- javascript - 在 RequireJS 配置中包含 Bootstrap 4 时出现 popper.js 错误
- reactjs - 如果使用 ES6 箭头函数,JSDoc 在生成文档时会抛出错误
- jquery - Ajax .done() 和 .fail() 同时触发