標籤:

SQL新手請教一下設計表的問題?

我想做一個SQL資料庫,主表是物品信息,這些物品可能有著不同的來源,而每種來源的欄位也可能不同,請問如何關聯物品信息表和多個物品來源表!謝謝!


輪子哥是這個意思:

物品表:

id name ??

1 iPhone8

2 ThinkPad

3 二手絲襪

4 大蝦干

5 內增高鞋

來源表1,店鋪:

id 店鋪名 價格 發票號

1 蘋果園旗艦店 5000 5h4643875

2 聯想旗艦店 8000 4394k5315

來源表2,別人送的:

id name

3 女朋友的名字

5 另一個女朋友的名字

來源表3,淘寶

id 鏈接 價格 購買賬號

4 ?? ?? ??

see?


每一類物品一張表放來源等各不相同的欄位,但是相同的屬性都存在同一張表裡(譬如說名字)。這樣就完美滿足了範式的要求,擁有強類型、容易做transaction和查錯的好處。缺點是產品狗可能要多次被打。


幹嘛要多個來源表啊? 一個表包含所有欄位不就得了? 無非就是有些來源用欄位A、B、C、D,有些來源用欄位A、B、D、E而已

物品ID, 物品名稱,來源類型, 公用欄位1-N, 類型A專用欄位1-N。。。類型B專用欄位1-N。。。


典型的一對多關係,一個物品對應一個來源,一個來源對應多個物品;設計範式採用第三範式;具體表格結構,可參考oracle中的Scott用戶下,emp表和dept表的關係


一對多


1 物品表 {id , 名稱 , 描述}

1.1 物品明細表 {id ,物品表id ,來源ID ,物品明細編號 ,物品明細名稱 ,價格 , 入庫日期 ,等欄位 }

2 來源表 {id , 名稱 ,來源類型,多個來源欄位冗餘}


外鍵~而且外鍵最好還是自增seed

到時候主表裡就是一堆1,1,1,1,1 ;2,2,2,2,2 ;1,2,3,1,2。。。

看著就這麼高大上


先定義來源

來源ID 來源類型

1  贈送

2  採購

3  地上撿的

然後物品表和來源表,上面大神們已經說很多了

物品ID 物品名稱 來源類型ID 來源表記錄ID

1   iphone手機  3    1

2   iphone手機  1    1

3   聯想筆記本  2    1

來源表1記錄ID 贈送人姓名

1       樓主

來源表2記錄ID 採購價格

1       3000.00

來源表3記錄ID 拾取地點

1       領導辦公室門口


給物品做編號,將物品編號作為兩張表的主碼。並且物品來源表的物品編號參照物品表的物品編號。

至於物品編號,是有國際標準的,你可以查一下超市貨品的編號。或者如果不需要特別規範只是自己小範圍使用的話,也可以自定義物品編號,怎麼方便怎麼來吧。


每個來源一組表(每個來源自己的key關聯)然後通過主表互相關聯不就行了。。。。


來源存成一個json欄位。搞定!


推薦閱讀:

釘釘數據存儲使用阿里雲的表格存儲,如何設計資料庫?
mysql分表策略?
如何配合使用NoSQL和SQL,特別是原子性問題存在的時候?
從oracle到mysql引發的技術思考,數據如何拆分到多個資料庫?
Access資料庫如何使用?

TAG:資料庫設計 |