![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 風箏 ![]()
![]() |
係指無主鍵之資料表但在題目中卻又提到"其中勝隊,敗隊,比賽日期合起來為唯一" @@a 這下子我迷糊了 是我觀念有錯誤嗎還是是題目有問題 但求小舖前輩一解其惑 [ 題目 ] 請為職棒聯盟的戰績繪一ERD,請包含至少以下四種實體型態: 1. 球隊 2. 聯盟:可能有數個職棒聯盟 3. 球員 4. 球場 這四種實體型態有以下的性質: • 每個球隊有隊名,一個總教練和數個教練,球隊所屬的公司名稱。教練的ID,姓名和生日需記載。每個球隊必須隸屬於只有一聯盟。其中隊名為唯一。 '<<矛盾點>> • 球隊的輸贏記錄需記載,包括勝隊,敗隊,比賽日期,比數,和比賽球場。其中勝隊,敗隊,比賽日期合起來為唯一。假設沒有平手。 • 每一聯盟有名稱,成立日期。其中名稱為唯一。 • 每一球場有球場ID,名稱,地址。其中球場ID和名稱均為唯一。每一球隊有一主球場。 • 球員有ID,姓名,生日,打擊率,月薪。其中ID為唯一。每一球員必須隸屬於一球隊。 必要的話,可自行假設其他相關狀況,但必須寫清楚。 '<<重點>>> 此例中,輸贏記錄是一弱實體型態,且與球隊有兩個關係型態 (分別是贏和輸)。如果把此二關係型態拿掉,輸贏記錄變成是一般的實體型態,同時多了兩個屬性:贏隊名和輸隊名。請問,此時輸贏記錄的關鍵屬性為何?這樣的改變有何缺點?
== 簽名檔 ==
^_< |
別忘捐VP感謝幫助你的人 | 新手會員瞧一瞧 |
1樓
最有價值解答
神來之筆 ![]() ![]() |
呵呵,您的疑問,小弟也曾迷惑
,真是很討厭的資料庫聖經 ,以下的名稱都用資料庫的學名 在資料庫學理上的鍵值*(key), 跟我們一般說的主索引(Primary key), 有點不同, 鍵值(key)的選定,會限定在實體(Entity)所產生的屬性(attribute) 以您的例子"輸贏記錄", "其中勝隊,敗隊,比賽日期合起來為唯一" 但從在ERD上看, 是輸贏記錄藉一雙線邊的菱形的關係, 對應到球隊, 這關係透過"球隊"的"勝隊,敗隊"和自己的"比賽日期"來辨識,稱"識別關係"(Identifing relationship) ,概念上"勝隊"、"敗隊"屬性是借來的, 不算輸贏記錄本身所產生的屬性 ,只是在設計時,會把"勝隊,敗隊"拉進資料表, 會感覺是資料表的屬性, ,而這樣關係下"輸贏記錄"會完全相依於"球隊", 白話點就是要先有球隊才會有輸贏記錄 另外,組成唯一的第三個屬性"比賽日期", 真的是輸贏記錄的屬性 但它卻無法就拿來做唯一識別, 只能幫襯用, 學理上就給它一個名稱 , 稱為部分鍵(partial key), 呵呵, 又叫key, 卻不是真的key的全部 , 又容易被誤解為副key,唉~ ----------------------- >>此例中,輸贏記錄是一弱實體型態,且與球隊有兩個關係型態 (分別是贏和輸)。 如果把此二關係型態拿掉,輸贏記錄變成是一般的實體型態,同時多了兩個屬性:贏隊名和輸隊名。 請問,此時輸贏記錄的關鍵屬性為何?這樣的改變有何缺點? :應該是輸贏記錄多宣告一個自動編號的鍵值*(學理上), 而這是自己的屬性了, 因此成為一個強實體,贏隊名和輸隊名就變成外來鍵 缺點應該是可能產生沒有球隊的輸贏記錄, 但只要強制贏隊名和輸隊名有值, 並做好關聯
本篇文章回覆於2006-10-26 11:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
風箏 ![]() |
感謝前輩的解惑^^"
本篇文章回覆於2006-10-26 13:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |