mysql - 构造一对多表php mysql的正确方法
问题描述
假设我有一张lawareas
法律领域的表格,例如:
ID Area
1 Children Law
2 EU law
3 Crime
还有律师,但每个律师可以分配多个法律领域,所以表格就像
ID Name Areas
1 John 1,3
2 Bob 2,3
这就是我现在正在做的方式,但它似乎是错误的。
有没有更好的方法来构建这些数据?
我想我可以有第三个表与上述两个表之间的关系,例如:
AreaID LawyerID
1 1
3 1
2 2
3 2
哪个更好,为什么原始选项在各方面对我来说都不太麻烦?
解决方案
在第一个解决方案中,您通过字符串连接来表达数据语义。这有严重的缺点:
查询数据会很麻烦(例如获取所有行使刑法的律师)
向律师添加和删除区域很麻烦(因为您必须进行字符串解析和连接)
您必须自己注意数据的一致性(例如,所有区域 ID 都必须存在于区域表中)
基本上,您将失去 DBMS 提供的所有功能,除了一般数据存储和检索。您最终会得到可怕的应用程序代码,在其中重新实现此功能、性能不佳以及最有可能的数据不一致。
让数据库为您做它可以做的事情,但您必须符合它的结构要求。
推荐阅读
- google-chrome-extension - 如何让我的 chrome 扩展程序启动并运行?
- php - AWS 使用 PHP 开发工具包删除文件夹中包含的所有内容
- powerbi - 使用 Power Query 或 Power BI 转换表中的 100 多个范围
- ios - 构建 Flutter iOS 应用程序时如何解决“格式错误的项目”构建错误
- python - 多变量赋值:order_item, created =
- c - IO Completion Ports 本地文件操作
- android - Expo - 某些 Android 设备上奇怪的垂直 FlatList 行为
- spring-kafka - kafka 批处理消费者如何处理长时间运行/处理记录?
- oracle - Oracle PL/SQL 更新语句永远循环 - 504 网关超时
- r - 单击 DT:: 数据表行使其他行淡出一点