Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SQL Server:如何将产品规范(标记)存储和读取到数据库_C#_Asp.net_Sql_Sql Server - Fatal编程技术网

C# SQL Server:如何将产品规范(标记)存储和读取到数据库

C# SQL Server:如何将产品规范(标记)存储和读取到数据库,c#,asp.net,sql,sql-server,C#,Asp.net,Sql,Sql Server,我需要你的帮助 我正在创建一个电子商务网站,我撞上了产品规格的墙 我有下列表格 项目 ItemID (1231) ItemName (Dell Inspiron) SpecID (5342) (5343) ItemID (1231) (1231) SpecName (HDD) (MEM) SpecValue (500GB) (4GB) 规格 ItemID (1231) ItemName (Dell Inspiron) SpecID (53

我需要你的帮助

我正在创建一个电子商务网站,我撞上了产品规格的墙

我有下列表格

项目

ItemID    (1231)
ItemName  (Dell Inspiron)
SpecID    (5342)   (5343)
ItemID    (1231)   (1231)
SpecName  (HDD)    (MEM)
SpecValue (500GB)  (4GB)
规格

ItemID    (1231)
ItemName  (Dell Inspiron)
SpecID    (5342)   (5343)
ItemID    (1231)   (1231)
SpecName  (HDD)    (MEM)
SpecValue (500GB)  (4GB)
括号中的值是表行

这是将规格存储在数据库中的最佳方式吗

我以后怎么查询呢?假设我需要的所有产品都具有
HDD=500GB
MEM=4GB

是否可以从C#(asp.net)中的数据库中将其作为具有子对象
规范的对象

是否有办法将所有规格组合到一个
项目
行中,按
项目ID
分组


提前感谢。

您暗示的内容称为EAV()。您可以阅读链接的Wiki,了解要查找的内容应该可以让您开始进一步挖掘,并为特定的EAV相关问题找到C#/EF/Linq/ASP.Net解决方案

这里将有一些很好的讨论,例如


SQL Server CAT团队提出了一个必须阅读的问题。

您所暗示的内容称为EAV()。您可以阅读链接的Wiki,了解要查找的内容应该可以让您开始进一步挖掘,并为特定的EAV相关问题找到C#/EF/Linq/ASP.Net解决方案

这里将有一些很好的讨论,例如

SQLServerCAT团队提出了一个必须阅读的问题

这是将规格存储在数据库中的最佳方式吗

看起来物品和规格有多对多的关系。所以更好的设计是这样的:

项目(项目ID主键、项目名称)

ItemSpecs(ItemId、SpecId、SpecValue)

规格(SpecId主键、SpecName)

我以后怎么查询呢?假设我需要HDD=500GB和MEM=4GB的所有产品

但是,通常您已经知道要查询的SpecId,因此不需要在spec上进行连接

是否可以从C#(asp.net)中的数据库中读取它作为具有子对象规范的对象项

我不知道你这是什么意思

是否有办法将所有规格合并到一个按ItemID分组的Items行中

仅当您事先知道规范的数量或动态构造查询时。规格越多,行中的列就越多

这是将规格存储在数据库中的最佳方式吗

看起来物品和规格有多对多的关系。所以更好的设计是这样的:

项目(项目ID主键、项目名称)

ItemSpecs(ItemId、SpecId、SpecValue)

规格(SpecId主键、SpecName)

我以后怎么查询呢?假设我需要HDD=500GB和MEM=4GB的所有产品

但是,通常您已经知道要查询的SpecId,因此不需要在spec上进行连接

是否可以从C#(asp.net)中的数据库中读取它作为具有子对象规范的对象项

我不知道你这是什么意思

是否有办法将所有规格合并到一个按ItemID分组的Items行中


仅当您事先知道规范的数量或动态构造查询时。规格越多,行中的列就越多。

这个问题非常广泛,你可能需要谷歌数据库设计、SQL C#之类的东西,很难回答这么多广泛的问题。这个问题非常广泛,你可能需要谷歌数据库设计、SQL C#之类的东西,很难回答这么多广泛的问题。+1对于一个使用EAV可以做什么的非常糟糕的例子,+1对于一个使用EAV可以做什么的非常糟糕的例子,