推 kucom:懂了,受益良多! 謝謝! 02/25 09:20
資料關聯圖:
客戶(1)<=(n)訂單(1)<=(n)訂單明細(n)=>(1)產品
以階層表示法再畫一遍 :9
(n)+=>(1)產品
訂單明細--+
(n)+=>(1)訂單(n)+
+=>(1)客戶
1. 一個客戶可以下多張訂單, 而一張訂單同時僅能屬於一個客戶,
所以客戶對訂單的數量關係是1對n, 而且訂單必須一定要有客戶,
所以以 客戶<=訂單 代表'完全依附'的關聯.
2. 一張訂單可以包括多筆訂單明細, 而一筆訂單明細同時僅能屬於一張訂單,
所以訂單對明細的數量關係是1對n, 而且明細必須一定要有訂單,
所以以 訂單<=訂單明細 代表'完全依附'的關聯.
3. 一筆訂單明細就只記錄一個產品, 而一個產品可以被多筆訂單明細所記錄,
所以明細對產品的數量關係是n對1, 而且明細必須一定要記錄產品,
所以以 訂單明細=>產品 代表'完全依附'的關聯.
data schema:
客戶: ClientID,Name,etc..
^主
+---------+
|外
訂單: OrderID,OwnerID,OrderDate,OrderNum,etc..
^主
+-----------+
|外
訂單明細: ItemID, OrderID, Idx, ProdID, Qty, Price,etc..
|外
+------------------------+
v主
產品: ProductID, Name, etc..
訂單明細的Idx代表訂單項次, 另外, 應該要有單價比較合理,
所以補上Price.
至於文中的'主鍵'不該只有一個, 不太確定是指什麼意思, 不過'主鍵'
跟'外鍵'的觀念要分清楚. 一般是'外鍵'聯結'主鍵'才有意義.
※ 引述《kucom (kucom)》之銘言:
: 今天面試 一題寫錯 想請問大家解題...
: 一張訂單可以訂很多產品,以下有這些資訊,如何規畫資料表及主鍵
: 訂單編號,訂單項次,產品編號,訂購數量,訂購人,訂購日期
: 我是寫:
: TABLE A TABLE B
: OrderID OrderNum OrderOwner OrderDate OrderNum ProdID Qty
: ------- -------- --------
: 主鍵 |____________________________________| 主鍵
: 相關連
這裏補充一下: 如果TABLE B是訂單明細的話, 那麼必須
OrderNum(訂單編號),ProdID(產品id),Idx(訂單明細項次)
三者同時呈列才能夠用來識別一筆訂單明細, 這才能夠拿來當做訂單明細的主鍵.
你在文中在TABLE B的OrderNum標示為主鍵是錯誤的. 它是'外鍵', 用來與訂單
的主鍵OrderNum連結.
: 面試的主管說我寫錯了,主鍵不該只有一個
: 請問這題如何寫才正確,謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.84.3
※ 編輯: bobju 來自: 211.74.84.3 (02/25 00:16)