自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)于商城系統(tǒng)中商品類別的設(shè)計(jì)(續(xù)篇)

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
上一節(jié)《關(guān)于商城系統(tǒng)中商品類別的設(shè)計(jì)》中我說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)有一塊硬傷,到底在哪兒?今天我們來(lái)進(jìn)行分析。

上一節(jié)《關(guān)于商城系統(tǒng)中商品類別的設(shè)計(jì)》中我說(shuō)數(shù)據(jù)庫(kù)設(shè)計(jì)有一塊硬傷,到底在哪兒?先看下圖:

 

 

看上圖中有什么地方是相同的?

“品牌”→“三星”在手機(jī)數(shù)碼分類里面有,在電腦辦公分類里面也有,這有什么問(wèn)題?再來(lái)看看上篇中的那個(gè)關(guān)系圖:

 

再看數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù),首先是(T_FilterCategory表)

 

如下(T_FilterAttributes表)

 

如下(T_FilterCategory與T_FilterAttributes之間的關(guān)聯(lián)表)

 

如上圖,既然“品牌”→“三星”在手機(jī)數(shù)碼分類里面有,在電腦辦公分類里面也有,那么如果只是像上面這個(gè)關(guān)聯(lián)表這么保存篩選條件和篩選條件值,我如何區(qū)分哪個(gè)是手機(jī)數(shù)碼下的“品牌”→“三星”,哪個(gè)是電腦辦公分類下的“品牌”→“三星”?如果我不區(qū)分它,會(huì)發(fā)生什么情況?現(xiàn)在有這么個(gè)業(yè)務(wù),需要我通過(guò)用戶選擇的三級(jí)類別,展示出指定三級(jí)類型下的“篩選條件”和對(duì)應(yīng)的“篩選條件值”,那么我該怎么實(shí)現(xiàn)呢,按照上面的關(guān)系圖,假設(shè)用戶點(diǎn)擊了“手機(jī)數(shù)碼分類”下的“手機(jī)”,它的類別編號(hào)為“14”,那么我可以寫(xiě)出如下SQL語(yǔ)句:

***步,根據(jù)用戶選擇的類別獲取其下的“篩選條件”。

  1. select fc.fc_Id,fc.fc_Name from T_FilterCategory as fc  
  2. inner join RF_Columns_FilterCategory as cfc on fc.fc_Id = cfc.fc_Id  
  3. inner join T_Columns as col on cfc.col_Id = col.col_Id  
  4. where col.col_Id = '14' 

執(zhí)行結(jié)果如下:

現(xiàn)在我再根據(jù)上面的“篩選條件”獲取對(duì)應(yīng)的“篩選屬性值”:

  1. select fa.attr_Id,fa.attr_Name from T_FilterAttributes as fa  
  2. inner join RF_FilterCategory_TFilterAttributes as fcfa on fa.attr_Id = fcfa.attr_Id  
  3. inner join T_FilterCategory as fc on fcfa.fc_Id = fc.fc_Id  
  4. where fc.fc_Id in 
  5. (select fc.fc_Id from T_FilterCategory as fc  
  6. inner join RF_Columns_FilterCategory as cfc on fc.fc_Id = cfc.fc_Id  
  7. inner join T_Columns as col on cfc.col_Id = col.col_Id  
  8. where col.col_Id = '14'

結(jié)果如下:

看上面紅色方框中的“篩選屬性值”,像宏碁、華碩、戴爾、Gateway、清華同方等,它們是電腦廠商,而不是手機(jī)廠商,然而卻出現(xiàn)在手機(jī)類別下,這不是有問(wèn)題嗎?

所以這種設(shè)計(jì)有問(wèn)題,因?yàn)樗绷艘粡埍?這張表就是存儲(chǔ)關(guān)聯(lián)表RF_FilterCategory_TFilterAttributes與T_Columns表之間的關(guān)系的中間表。為什么要加中間表?因?yàn)橐粋€(gè)三級(jí)類別可以對(duì)應(yīng)多個(gè)RF_FilterCategory_TFilterAttributes,而一個(gè)RF_FilterCategory_TFilterAttributes又可以被多個(gè)三級(jí)類別擁有。圖示見(jiàn):頂部 圖(1)

于是我繼續(xù)加表,名曰:RF_Columns_FilterCategory_FilterAttributes,如下圖:

 

然后建立外鍵關(guān)聯(lián),如下圖:

 

然后完整的關(guān)系圖如下:

 

然后我再次執(zhí)行上面那個(gè)業(yè)務(wù),假設(shè)用戶選擇的三級(jí)類別的編號(hào)為14,我需要獲取其下的所以“篩選條件值“,那么SQL語(yǔ)句如下:

  1. with t as   
  2. (   
  3. select FA.attr_Id,FA.attr_Name,CDF.col_Id,CDF.sort from T_FilterAttributes as FA   
  4. inner join dbo.RF_FilterCategory_TFilterAttributes as DF on FA.attr_Id = DF.attr_Id   
  5. inner join dbo.RF_Columns_FilterCategory_FilterAttributes as CDF on CDF.df_Id = DF.df_Id and CDF.col_Id = '14'   
  6. )   
  7. select t.attr_Id,t.attr_Name from t   
  8. inner join dbo.RF_FilterCategory_TFilterAttributes as DF on t.attr_Id = DF.attr_Id   
  9. inner join dbo.T_FilterCategory as FC on DF.fc_Id = FC.fc_Id and FC.fc_Id in   
  10. (  
  11.  select fc.fc_Id from T_Columns as tc  
  12.  inner join dbo.RF_Columns_FilterCategory as cdc on tc.col_Id = cdc.col_Id   
  13.  inner join T_FilterCategory as fc on cdc.fc_Id = fc.fc_Id14 where tc.col_Id = '  
  14. '  
  15. )  
  16.  
  17. 16 order by t.sort 

然后就得到如下所有手機(jī)類別下的“篩選條件“對(duì)應(yīng)的”篩選條件值“,如下圖:

 

 

原文鏈接:http://www.cnblogs.com/twittersu/archive/2011/06/14/2080868.html

【編輯推薦】

  1. 關(guān)于商城系統(tǒng)中商品類別的設(shè)計(jì)
  2. 數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)化與范式
  3. 數(shù)據(jù)庫(kù)設(shè)計(jì)三大范式應(yīng)用實(shí)例剖析
  4. 知道數(shù)據(jù)庫(kù)設(shè)計(jì)的三大范式嗎
  5. 數(shù)據(jù)庫(kù)應(yīng)用呈三大趨勢(shì) DBA要如何應(yīng)對(duì)
責(zé)任編輯:艾婧 來(lái)源: 錫子博客
相關(guān)推薦

2011-06-13 13:06:20

數(shù)據(jù)庫(kù)設(shè)計(jì)

2021-09-01 10:05:04

機(jī)器學(xué)習(xí)人工智能算法

2015-11-13 10:25:04

京東商品搜索架構(gòu)

2023-03-09 09:31:58

架構(gòu)設(shè)計(jì)vivo

2023-06-02 11:55:02

jvm多線程并發(fā)

2010-01-07 09:42:02

Linux遠(yuǎn)程監(jiān)控系統(tǒng)

2025-04-30 08:56:34

2024-11-14 08:57:49

商品系統(tǒng)數(shù)據(jù)

2017-07-19 16:09:27

華碩

2015-03-24 20:10:21

2015-05-18 13:58:32

CephBufferlist分布式文件系統(tǒng)

2009-12-02 14:05:44

VPN路由配置

2009-10-14 13:19:20

2012-07-17 16:37:43

json

2014-09-01 09:09:05

商品信息數(shù)據(jù)分析

2010-01-18 13:54:01

程控交換機(jī)

2020-07-07 09:30:13

智能家居新冠疫情智能

2011-08-03 09:30:15

數(shù)據(jù)結(jié)構(gòu)

2024-07-22 11:48:42

2022-07-10 07:48:26

緩存軟件設(shè)計(jì)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)