mysql - 设计自动化数据库的最佳解决方案?

标签 mysql database-design automation

在位于本地服务器上的大型自动化系统中实现具有一对多关系的信息的最佳方法是什么? 获取报告并记录是系统最重要的一点。

例如,假设一家旅行社拥有多名导游,每周执行一次旅行。要记录机构信息,最好的方法是使用三个表,一张存储机构信息,一张存储个性化指导信息,一张存储关系(一对多)但是这样一来,就改变了本周将进行游览的人员的导游信息将发生变化,因此从系统收到的报告也会发生变化。 另一种存储方法是使用表,其中存储机构的信息,人员的信息也以 json 格式存储在列中。例如,考虑下表。

代理机构表: 代理机构 ID |名称 |电话号码 |地址 | guides_details(此列中存储的信息以 json 格式存储,如姓名、手机等。)

现在我的问题是: 鉴于项目的存储大小并不重要(由于在本地服务器上使用),第二种方法是否适合大规模信息存储(归档)?或者,如果有其他存档方法,请教我。

最佳答案

通常,如果 JSON 数据可以用表格格式表示,那么将其存储在表中是一种不好的做法。原因是您无法轻松地用数据库语言查询这些详细信息。

我建议使用下表:

代理表

机构 ID | (任何其他静态信息)

机构详细信息表

agency_detail_id | agency_id |创建日期 |名称 |电话号码 |地址 | (任何其他可更改的详细信息)

指南表

指南 ID | (任何其他静态信息)

指南详细信息表

guide_detail_id | guide_id |创建日期 |电话 |电子邮件 | (任何其他可更改的详细信息)

游览表

tour_id |名称 |日期 | agency_detail_id | guide_detail_id

推理:

旅行社和导游的详细信息表将允许您为不同的旅行保留每个旅行社和导游的不同版本,并且允许您保留将记录链接回该旅行所属的旅行社或导游的能力,即使细节不同。

我们已将指南详细信息分解为表格,以便可以轻松查询。

关于mysql - 设计自动化数据库的最佳解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54500466/

相关文章:

mysql - 在 MYSQL 存储过程中选择和更新相同的行

javascript - 使用 codeigniter MVC 插入到数据库 mysql 后立即显示数据

sql - 帮助处理复杂的连接条件

database - 如何将模式规范化为 BCNF

mysql - 使用shell脚本更改mysql root用户密码

mysql - mySQL中的CASE语句,比较运算符

php - 从循环构建参数化查询

sql - 在 SQL Server 2008 R2 中 - 您可以在数据库图表工具中重命名表吗?

visual-studio - 我可以添加一个命令以使 ReSharper 重复上次测试运行到 Visual Studio 中的右键单击上下文菜单吗?

testing - Window defender 想要重置您的设置”-ChromeDriver 2.29 问题 :ChromeBrowser opening with a new tab