SQL新手請教一下設計表的問題?
01-15
我想做一個SQL資料庫,主表是物品信息,這些物品可能有著不同的來源,而每種來源的欄位也可能不同,請問如何關聯物品信息表和多個物品來源表!謝謝!
輪子哥是這個意思:
物品表:id name ??1 iPhone82 ThinkPad
3 二手絲襪4 大蝦干5 內增高鞋來源表1,店鋪:
id 店鋪名 價格 發票號1 蘋果園旗艦店 5000 5h46438752 聯想旗艦店 8000 4394k5315來源表2,別人送的:
id name3 女朋友的名字
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 來源表記錄ID1 iphone手機 3 12 iphone手機 1 13 聯想筆記本 2 1來源表1記錄ID 贈送人姓名
1 樓主來源表2記錄ID 採購價格
1 3000.00來源表3記錄ID 拾取地點1 領導辦公室門口給物品做編號,將物品編號作為兩張表的主碼。並且物品來源表的物品編號參照物品表的物品編號。
至於物品編號,是有國際標準的,你可以查一下超市貨品的編號。或者如果不需要特別規範只是自己小範圍使用的話,也可以自定義物品編號,怎麼方便怎麼來吧。每個來源一組表(每個來源自己的key關聯)然後通過主表互相關聯不就行了。。。。
來源存成一個json欄位。搞定!
推薦閱讀:
※釘釘數據存儲使用阿里雲的表格存儲,如何設計資料庫?
※mysql分表策略?
※如何配合使用NoSQL和SQL,特別是原子性問題存在的時候?
※從oracle到mysql引發的技術思考,數據如何拆分到多個資料庫?
※Access資料庫如何使用?
TAG:資料庫設計 |