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

时间:2019-02-03 06:17:17

标签: mysql database-design automation

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

例如,考虑一家旅行社,该旅行社有几位导游每周进行一次旅行。要记录代理商的信息,最好的方法是使用三个表,一个用于存储代理商的信息,一个用于存储个性化指南信息,一个用于存储关系(一对多)。 本周将进行巡回演出的人员指南信息将发生变化,因此从系统收到的报告也将发生变化。 另一种存储方法是使用一个表,该表中存储了代理商的信息,而该人的信息也以json格式存储在列中。例如,考虑下表。 >

代理商表: agency_id |名称|电话号码|地址| guides_details (存储在此列中的信息以json格式存储,例如name,mobile和....)

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

1 个答案:

答案 0 :(得分:1)

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

我建议使用以下表格:

代理商表

agency_id | (其他任何静态信息)

代理商详细信息表

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

指南表

guide_id | (其他任何静态信息)

指南详细信息表

guide_detail_id | guide_id | created_date |电话|电邮| (其他任何可更改的详细信息)

游览表

tour_id |名称|日期| agency_detail_id | guide_detail_id

原因:

代理商和指南的详细信息表将使您可以保留每个代理商和指南的不同版本,以进行不同的旅行,并使您能够保留将记录链接回所属的代理商或指南的能力,即使细节不同。

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