mysql - 设计自动化数据库的最佳解决方案?
问题描述
在位于本地服务器上的大型自动化系统中实现具有一对多关系的信息的最佳方法是什么?获取报告并记录它是系统最重要的一点。
例如,考虑一个旅行社,它有几个导游每周进行一次旅行。记录机构信息,最好的方法是使用三张表,一张存储机构信息,一张存储个性化导游信息,一张存储关系(一对多),但是这样,改变人的导游信息,将执行一个本周巡演会发生变化,因此从系统收到的报告也会发生变化。另一种存储方法是使用表,其中存储了机构的信息,而人员的信息也以json格式存储在列中。例如,考虑下表。
代理表: agent_id | 姓名 | 电话号码 | 地址 | guides_details(存储在此列中的信息以 json 格式存储,例如姓名、移动设备和....)
现在我的问题是: 鉴于项目的存储大小并不重要(由于在本地服务器上使用),第二种方法是否适合大规模信息存储(归档)?或者,如果有另一种存档方式,请教我。
解决方案
通常,如果可以以表格格式表示 JSON 数据,则将其存储在表中是一种不好的做法。这样做的原因是因为您无法轻松地用您的数据库语言查询这些详细信息。
我建议以下表格:
代理表
代理ID | (任何其他静态信息)
机构详情表
Agency_detail_id | 代理ID | 创建日期 | 姓名 | 电话号码 | 地址 | (任何其他可更改的细节)
指南表
guide_id | (任何其他静态信息)
指南详细信息表
guide_detail_id | guide_id | 创建日期 | 电话 | 电子邮件 | (任何其他可更改的细节)
旅游表
tour_id | 姓名 | 日期 | Agency_detail_id | guide_detail_id
推理:
机构和导游的详细信息表将允许您为不同的旅行保留每个机构和导游的不同版本,并允许您保留将记录链接回旅行所属机构或导游的能力,即使细节不同.
我们已将指南详细信息分解为一个表格,以便可以轻松地对其进行查询。
推荐阅读
- javascript - Accessing Axios data (Objects)
- bash - 从 bash 中的命令输出检查 2 列的值
- mongodb - Mongo Union All 在好友表中查找某人的好友
- android - 如何保护我的移动应用程序的云数据库?
- c++ - 为什么 wxCrafter Hello World 程序不起作用?[C++, wxWidgets]
- json - 如何将json数据重塑为另一种格式
- javascript - 对对象数组进行排序并创建具有公共值的新数组
- laravel - 提交表单Laravel 6后意外注销
- python - 如何从 Python 函数返回多个变量
- php - 从 pdo 结果中获取值