資料庫 ER diagram轉relation問題 - 考試

Table of Contents

https://www.dropbox.com/s/juy2yszkfo34kr3/%E6%8E%83%E6%8F%8F0001.jpg

上面的連結是一張ER diagram

在SHIP_AT_PORT這個三元關係,怎麼轉都覺得怪怪的耶,

所以貼來版上,想跟大家討論看看這個要怎麼轉,

希望大家不吝指教,謝謝。

--

All Comments

Joe avatarJoe2013-07-02
ship&port主鍵放進去就好不是嗎?
Quanna avatarQuanna2013-07-05
基本上多對多關係你就要成立一個關聯表
Olive avatarOlive2013-07-09
我就知道你想問這個= = ...
post_visit是弱實體
Hedda avatarHedda2013-07-14
SHIT_AT_PORT一個表 內容是port&port的主鍵
然後其主鍵是port主鍵跟ship主鍵的結合體
Franklin avatarFranklin2013-07-14
該主鍵放到post_visit裡面當作限制
於是弱實體也完成
Callum avatarCallum2013-07-16
說得簡單一點就是{ship,port}→ship_at_port
Charlie avatarCharlie2013-07-16
ship_at_port→port_visit
關聯表之間的相依限制大概像這樣y
Mia avatarMia2013-07-19
然後post_visit... 一定是少了船或者港口都不行
Ophelia avatarOphelia2013-07-23
SHIT_AT_PORT一個表 內容是ship&port的主鍵 上面打錯
Jessica avatarJessica2013-07-28
順便說 一對多關係你用補習班教的方法去判斷很囧...
一艘船可以停在多個港口 一個港口可以停很多船
Erin avatarErin2013-08-01
很直覺... 所以用直覺就好... 唸起來順的時候多半對
別忘了資料庫往往都嘗試著表現真實世界的對應關係
Dinah avatarDinah2013-08-03
PORT本身也是弱實体這樣做還是錯的也要吧用來決定PORT的另
Suhail Hany avatarSuhail Hany2013-08-05
外兩個KEY也拉進來
Jacob avatarJacob2013-08-06
post的弱實體關係與船無關 與國家、湖海那兩個有關系
所以實際上拉去的鍵值應該是國家與湖海的主鍵
Thomas avatarThomas2013-08-07
但這樣他八成會亂掉XD
Callum avatarCallum2013-08-09
我英文一直打錯是怎樣= =
Olivia avatarOlivia2013-08-14
是的,缺了,答案是錯的
一般正常來說,資料結合是越簡單越好
Suhail Hany avatarSuhail Hany2013-08-15
假設ship_at_port不建立表格 那船隻停靠港口的資料
就會變得需要依靠port_visit來查詢
Dora avatarDora2013-08-16
答案應該是沒有錯的 你可以用兩個角度去看PORT_VISIT
Olivia avatarOlivia2013-08-19
當然你也可以這樣解決就是了...
Genevieve avatarGenevieve2013-08-20
一個是你說的 用三元關係 那麼轉出來就不是解答這樣
Rachel avatarRachel2013-08-22
只是這樣的結合會產生資料耦合過高問題XD
Genevieve avatarGenevieve2013-08-22
當然解答是用PORT_VISIT同時依附在SHIP跟PORT上面的角度去做
Jack avatarJack2013-08-26
如同ARCHERDEVIL大所說的為了簡單所以解答不是用三元關係去解
Quintina avatarQuintina2013-08-27
拍謝 以上是針對PORT_VISIT
SHIP後面要再加上StateCountryName, PName 當作FK是沒錯的!!
Hazel avatarHazel2013-08-29
這種狀況不排除有,但應該不多。
Hazel avatarHazel2013-08-30
基本上port-visit裡的屬性可以放到ship_at_port裡面
圖會這樣畫有兩個原因
第一,降低資料耦合 提高資料安全
Elma avatarElma2013-08-31
第二 可能船待在港口的時間只能確定開始 結束不確定
然後又不允許空值
Erin avatarErin2013-09-05
所以寫入的時候只好放到另外一個表裡面去維持完整性
當然這是腦補就是了
Oscar avatarOscar2013-09-08
至於怎麼判斷... 我是靠腦補...
或者是直接靠轉換規則...
絕大部分的書應該都有寫
George avatarGeorge2013-09-12
多對多關係要轉一個表出來 弱實體一定相依於主實體
然後加上一點想像力...
Bennie avatarBennie2013-09-16
我想只能從語意上去判斷 SHIP_AT_PORT應該同時依附SHIP跟PORT
Ina avatarIna2013-09-17
應該算合理 當然你這題可以用三元去解 解出來的主鍵也是一樣
Oscar avatarOscar2013-09-22
是說如果你不嫌麻煩 也可以用lossless join判斷
Emma avatarEmma2013-09-22
就跟M N方式剛好相反。1:N關係應該是(0,*):(1,1)
如果我沒記錯應該是這樣
Audriana avatarAudriana2013-09-25
提外問一下 原po解答的SHIP表當中是否要再多一個Pname外鍵呢
Ina avatarIna2013-09-28
否則是不是就少了 判斷某船的home port關聯了
Kyle avatarKyle2013-10-01
賓果
Annie avatarAnnie2013-10-04
再藉這題問一下大家 1對多轉關聯有一種作法是跟多對多一樣
Skylar DavisLinda avatarSkylar DavisLinda2013-10-06
就是直接把關係拉出來 成立一個關聯表 再放入1跟多方的主鍵
你們寫這類題目時會這樣作嗎
Blanche avatarBlanche2013-10-09
我個人感覺,應該沒有必要這樣做吧,在原本的表加外鍵
Lucy avatarLucy2013-10-10
跟多一個關聯表,感覺多一個表比較複雜
Harry avatarHarry2013-10-13
這樣資料結構耦合就變高了 join起來效率很差
Adele avatarAdele2013-10-15
最好是把1方的KEY加入多方為外KEY就好,這樣反而會浪費空