C# 如何使用EAV模型向Sql数据库插入数据

C# 如何使用EAV模型向Sql数据库插入数据,c#,sql,sql-server,entity-attribute-value,C#,Sql,Sql Server,Entity Attribute Value,我目前正在使用C#创建一个项目,这是一个PC商店管理系统。我想将windows窗体中的数据插入SQL数据库,问题是我不知道如何管理它。我使用的是这个模型: create table product ( part_number int, (PK) name varchar(10), price int ); insert into product values (1, 'product1', 50), (2, 'product2', 95.99); 第二

我目前正在使用C#创建一个项目,这是一个PC商店管理系统。我想将windows窗体中的数据插入SQL数据库,问题是我不知道如何管理它。我使用的是这个模型:

create table product
(
    part_number int, (PK)
    name varchar(10),
    price int
);

insert into product 
values (1, 'product1', 50),
       (2, 'product2', 95.99);
第二个属性表存储每个不同的属性

create table attribute
(
     attributeid int, (PK)
     attribute_name varchar(10),
     attribute_value varchar(50)
);

insert into attribute 
values (1, 'color', 'red'),
       (2, 'color', 'blue'),
       (3, 'material', 'chrome'),
       (4, 'material', 'plastic'),
       (5, 'color', 'yellow'),
       (6, 'size', 'x-large');
最后创建
product\u属性
表作为每个产品及其相关属性之间的联接表

create table product_attribute
(
     part_number int, (FK)
     attributeid int  (FK) 
);

insert into product_attribute 
values (1, 1), (1, 3), (2, 6),
       (2, 2), (2, 6);
从这个来源->

现在让我们假设我有耳机、CPU、显示器、键盘等类别。 每个类别都有自己的属性,所以我认为在这种情况下,我需要使用EAV模型

如何编写我的查询?我是否总是需要检查属性是否已经存在,如果它存在,那么我需要检查属性值是否与我的当前值相同,然后才将其与我的产品关联?如果它不存在,我需要创建它,然后关联它


我真的很困惑,请帮帮我。

请看一篇关于为什么EAV真的很糟糕的讨论,以及一篇关于一个EAV系统设计毁掉了一家蓬勃发展的公司的真实恐怖故事。老实说,这只是一个获得我文凭的项目,所以我只需要它工作,您认为我需要为每个类别创建20个表吗?仅此而已?将数据拆分为表只会减少数据库的大小,因此您不需要在每一行上重复相同的信息。在尝试使用c#之前,我会先让查询在SQL Server工具中工作。c#查询(命令文本)将与SQL Server中的相同。