存储文档表行的最佳方式(SQL)?
我有一份有表格的报告 该报告也有字段 例如,JSON:存储文档表行的最佳方式(SQL)?,sql,database-design,Sql,Database Design,我有一份有表格的报告 该报告也有字段 例如,JSON: { company: Company, period: "3M2019", typeReport: "type", multiplicity: 1000 currency: "USD", rows: [ { parameter: parameter1, value: 1000 }, { parameter: param
{
company: Company,
period: "3M2019",
typeReport: "type",
multiplicity: 1000
currency: "USD",
rows: [
{ parameter: parameter1, value: 1000 },
{ parameter: parameter2, value: 2000 },
{ parameter: parameter3, value: 3000 },
]
}
我有两种获取数据的方案:
获取所选报表的所有行;
从期间、类型报告、货币、公司的所有或选定参数的所有报告中获取所有行。
如果理解了第一种情况,则第二种情况有两种存储方式:
从数据库读取更多信息
公司、期间、类型报表货币存储在报表表中,当我想要获取行时,我应该查找具有这些字段的所有报表,然后按报表和参数查找所有行
更多存储数据
公司、期间、类型报告、货币存储在每行的行表中。然后我可以按字段找到每一行,对一个表进行一次查询
例如,数据库中的行:
{公司:公司,期间:3M2019,类型报告:类型,多重性:1000,币种:美元,参数:parameter1,值:1000}
{公司:公司,期间:3M2019,类型报告:类型,多重性:1000,币种:美元,参数:parameter2,值:2000}
{公司:公司,期间:3M2019,类型报告:类型,多重性:1000,币种:美元,参数:parameter3,值:3000}
存储数据的最佳方式是:从数据库中读取更多数据还是读取更多数据?对于这种具有明显1-n关系的树状数据结构,存储数据的一种简单方式可以是: 表1:带列的基础
id, company, period, typeReport, multiplicity, currency
列id是此表的唯一主键。通常,它将是一个自动递增的列
表2:带列的参数:
tid, parameter, value
然后,您可以使用获取所有数据或搜索任何列值
select company, period, typeReport,
multiplicity, currency,
parameter, value
from base
inner join params on tid=id
-- where parameter=...
使用这种类型的数据结构,您可以确保没有冗余,并且不会存储冲突数据 那么我的报告表是基础吗?或者我会有3个表:base、params、reports?其中报告将有下一列:id,tid只有两个表,请参见上文,但报告可以通过使用内部联接生成,如SELECT语句中所示。当然,您也可以列出id或tid-它们在您的报告中是相同的。