簡體   English   中英

SQL Server:如何存儲和讀取產品規格(標簽)到數據庫

[英]SQL Server : how to store and read product specifications (tags) to database

我需要你的幫助。

我正在創建一個電子商務網站,並碰觸了產品規格。

我有下表

項目

ItemID    (1231)
ItemName  (Dell Inspiron)

眼鏡

SpecID    (5342)   (5343)
ItemID    (1231)   (1231)
SpecName  (HDD)    (MEM)
SpecValue (500GB)  (4GB)

括號中的值是表格行。

這是將規格存儲在數據庫中的最佳方法嗎?

以后如何查詢? 可以說我需要HDD=500GBMEM=4GB所有產品嗎?

是否可以從C#(asp.net)中的數據庫中將其讀取為具有子對象Specs的對象Items

有沒有一種方法可以將所有規范合並到按ItemID分組的一個Items行中?

提前致謝。

您要暗示的是EAV( 實體屬性值 )。 您可以閱讀鏈接的Wiki,並且知道要查找的內容將使您開始進一步挖掘並找到針對特定EAV相關問題的C#/ EF / Linq / ASP.Net解決方案。

例如,一些不錯的討論就在這里。 實體屬性值數據庫與嚴格的關系模型電子商務問題

SQL Server CAT團隊提出了有關性能和可伸縮性的語義數據建模最佳實踐 ,這是必讀的。

這是將規格存儲在數據庫中的最佳方法嗎?

看來Item和Spec具有多對多關系。 因此,更好的設計如下所示:

Item(ItemId PK,ItemName)

ItemSpecs(ItemId,SpecId,SpecValue)

規格(SpecId PK,SpecName)

以后如何查詢? 可以說我需要HDD = 500GB和MEM = 4GB的所有產品嗎?

SELECT i.* FROM Items i, ItemSpecs is1, Specs s1, ItemSpecs is2, Specs s2
WHERE i.ItemId = is1.ItemId
AND is1.SpecId = s1.SpecId
AND s1.SpecName = 'HDD'
AND is1.SpecValue = '500GB'
AND i.ItemId = is2.ItemId
AND is2.SpecId = s2.SpecId
AND s2.SpecName = 'MEM'
AND is2.SpecValue = '4GB'

但是,通常您已經知道要查詢的SpecId,因此不需要Specs上的聯接。

是否可以從C#(asp.net)中的數據庫中將其讀取為具有子對象Specs的對象Items?

我不確定您的意思。

有沒有一種方法可以將所有規范合並到按ItemID分組的一個Items行中?

僅當您事先知道規格數量或動態構造查詢時。 規格越多,該行將具有更多列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM