我有一个输入JSON,我需要将其输入数据库。我们正在探索是否规范化我们的数据库表。
以下是输入数据(json)的结构:
"attachments": [
{
"filename": "abc.pdf",
"url": "https://www.web.com/abc.pdf",
"type": "done"
},
{
"filename": "pqr.pdf",
"url": "https://www.web.com/pqr.pdf",
"type": "done"
},
],
在上面的示例中,attachments
可能有多个值(超过2,最多为8)。
我们正在考虑创建一个名为DB_ATTACHMENT
的不同表格,并保留工作人员的所有附件。但问题是我们有30多种不同的附件类型阵列(电话,地址,previous_emp,签证等)
有没有办法将所有内容存储在一个表(员工)中?我能想到的是使用单个列(ATTACHMENT)并以“分隔格式”添加所有数据,并在目标系统中使用逻辑来解析和提取所有内容。 还有其他更好的解决方
谢谢..
答案 0 :(得分:1)
有没有办法将所有内容存储在一个表(员工)中?一个我可以 想到是使用单个列(ATTACHMENT)并添加所有数据 'delimited-format'并且在目标系统上有逻辑来解析和 提取一切..还有其他更好的解决方案吗?
您可以将数据作为JSON存储在单个VARCHAR列中,然后在客户端中恢复解码此JSON数据的信息。
此外,已经有一些SQL实现提供本机JSON数据类型。例如:
答案 1 :(得分:0)
数据库系统存储您的数据并为您提供SQL,以便在您的数据结构化时简化搜索请求。
这取决于您决定是否要存储结构化的数据以从SQL中受益,或者让搜索请求者承担解析它的负担。
答案 2 :(得分:0)
这在很大程度上取决于您打算如何使用数据。我不完全确定我理解你的问题,所以我将重新考虑我认为你正在使用的业务领域 - 如果这不正确,请发表评论。
如果附件在业务领域中不重要 - 它们基本上是注释,您不需要查询或推理它们 - 您可以将它们存储为“employee”表中的列,并解析它们当你向最终用户展示它们时。
此解决方案可能看起来更简单 - 但不要低估转换逻辑 - 您必须支持每个附件的创建,读取,更新和删除。
如果附件在业务领域中有意义,则会很快崩溃。如果您需要回答诸如“查找所有已附加abc.pdf的员工”,“查找没有phone_number附件的员工”等问题,则解压每个employee_attachment会使您的查询非常困难。
在这种情况下,您几乎肯定需要将附件存储在一个或多个单独的表中。如果每个附件的架构确实不同,那么您需要弄清楚如何处理inheritance in relational database models。
最后 - 一些数据库引擎本身支持JSON和XML等格式。您可以将此作为妥协解决方案。