带有json的Sql,具有多个集合值的动态多属性的动态多产品类型

问题描述 投票:0回答:1

我正在寻找在2019年创建ERD(SQL Server)的最佳实践,以用于以下示例。

我有多种产品(汽车如雷诺,欧宝) - 大约10万条记录。每个产品都有系列,例如(clio,laguna),每个系列都有一个车型,例如(I,II,III)

enter image description here

enter image description here

每个汽车模型都有许多具有多个值的属性(主要是集合值),例如

Diagram Car model attribute and values

正如您在图表中看到的,一些属性具有一个值,其中一些值具有集合值。一些属性在不同的汽车模型中具有相同的名称,一些属性是新的。属性中的值通常会重复,但它们也是模型的特定值

在我的真实模型中,每个产品的属性和值每月会改变几次。

所以我的问题是:创建数据库模式的最佳做法是什么? (我使用SQL Server 2017和ASPNET.CORE作为后端API)

下面我向您展示我的解决方案:

  1. 第一个EAV模式。 (为清楚起见,我没有将值类型(varchar,bool,int等)分成单独的表):我不是这个解决方案的支持者

enter image description here

  1. 为每个系列模型创建表。

enter image description here

但接下来呢?大多数属性都有一个集合值。我应该在这种情况下使用每个属性的json值吗? E.g {“length”:[“4848”,“5000”,“5005”]}。尽管有EAV模式并且保持基础归一化1NF我想为每个属性创建单独的表与值并创建与汽车模型(I,II,III)的关系,但表的数量将是巨大的。

  1. 稀疏表作为值集合的JSON列

enter image description here

enter image description here

  1. 使用以下json结构在SeriesModel表中创建JsonObject列: {“III”:{“长度”:[“4848”,“5000”,“5005”],“UpholsteryColor”:[“black”,“bronze”],“Color”:[“blue”,“black” , “绿色”] } }

enter image description here

  1. 在BrandSeries中只创建两个表Car和BrandSeries我添加了具有以下json结构的JsonObject列 { "III" : { "length": ["4848", "5000", "5005"], "UpholsteryColor" : ["black", "bronze"], "Color" : ["blue", "black", "green"] }, "II" : { "length": ["4000", "5000"], "UpholsteryColor" : ["black", "bronze"], "Color" : ["blue", "violet"], "GasCar" : 1 } }
json sql-server database-normalization
1个回答
0
投票

我选择了4号选项,但任何建议都将不胜感激。

© www.soinside.com 2019 - 2024. All rights reserved.