Re: [問題] 資料庫正規化一問

看板Examination作者 (開弓)時間10年前 (2014/06/26 22:16), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串4/4 (看更多)
好久沒上來了... 試試手。 首先條件可以看見,母資料集合屬性全部大概是 c s j d p q v 然後c可以決定 s j d p q v 在不考慮其他狀況下,選c當此關聯主鍵沒什麼問題。 然後看到條件說 {J,P}-->C 所以 根據遞移性 jp -> c s j d p q v 成立 這時候 jp 可以為候選鍵 然後看一下另外一個條件 {S,D}-->P 根據遞移性 j s p ->c 也成立 於是 jsp->c s j d p q v 成立 於是jsp 也可以是候選鍵 快速找的時候用沒有被決定又決定別人這種方式不錯,很快 不過立論基礎薄弱,所以我都只用來驗證一下而已 你起碼要告訴別人為什麼這樣推(攤手 所以根據這種狀況 原表相依不滿足3NF 因為jp 決定c,c則可以決定其他所有屬性... 這裡已經有遞移了 所以這樣看起來,原候選鍵值應該有三組 c jp jsd 雖然說... 上面好像所有的回文... well, 都沒有把c列進去 但c的確是。別望了主鍵也是從候選鍵裡面選出來的。 所以是我的話,答案大概就是 候選鍵為c, jp, jsd 且主鍵值為c,因為其為單一欄位而非多欄位鍵值組合 然後拆的話... 基本上就拆成關聯一 s d p 一組,主鍵值sd 關聯二 j p c 一組 p 參考關聯一的p 並且成為關聯二的部份鍵 關聯二主鍵當然就用 j p 然後關聯三 就用 c q v 主鍵是c 參考自關聯二的c 這樣拆完應該也滿足BCNF了 一般來說,如果本來就不滿足3NF,我就不會去考慮BCNF 然後可以的話,除非題目有要求不然我也盡量不會去拆BCNF 因為當你去拆BCNF的時候 必然的會有些相依關係從此消失 然後沒有辦法回到lossless join狀態,所以能避免... 還是避免吧(攤手 然後... 寫程式算數學是一回事 資料庫設計是另外一回事 關聯式資料庫的基本概念你大概忽略了 一個好的關聯式資料庫,應該要以關聯主鍵與外鍵的方法讓資料保持最大的一致性 以及最小的重複性 如果拆成jpc 跟csdqv兩個表,看起來似乎沒錯 但實際上,原本sd跟p是有關連性的 你這樣一拆關聯性就消失了 哪天你要新增一個p,結果與之相關的sd 忘記新增,出現錯誤 哪天你要刪除一組sd結果少刪掉與之相關的p... (攤手 記得,沒必要的狀況下,讓相依關係消失是絕對禁止的= = 實務上也是,寧可讓相依關係多一點,反而還可以加快資料庫運作速度 但缺乏某個相依關係,到時候問題會很大。 以上。 ※ 引述《fcouple (人生啊…)》之銘言: : 有幾點在下異議,在此請上榜10次的哥或考友們共同討論。 : 較優候選鍵找法一般都是:「沒有被人決定,且又可決定別人」。 : 但題目中: : R(C,S,J,D,P,Q,V) : C-->{S,J,D,P,Q,V} : {J,P}-->C : {S,D}-->P : 很不幸沒有這種候選鍵。所以在下不懂上榜10次的哥 : 一、{J,P}, {S,D.J} 這二組候選鍵是怎麼決定的? : 二、一定要拆成3個表嗎?可不可以更少些?(照10次哥的候選鍵是要3個沒錯, : 但我想用最少的表,滿足 BCNF) : 這二點是在下疑問的地方。 : 在下就題目給的 : C-->{S,J,D,P,Q,V} : {J,P}-->C : {S,D}-->P : 三條決定因素當候選鍵,其中 : C-->{S,J,D,P,Q,V} : {S,D}-->P : 這二條因為會拆超過 2 個以上的表,不考慮,故選 {J,P}-->C : 如此一來 : R1(J, P, C) ............ J,P 為 R1 的 PK, C 為 R2 的 FK : R2(C, S, D, Q, V) ...... C 為 R2 的 PK 並參考至 R1.C : (注意,R2中 {S,D}--> P 功能相依因 P 拆走而消失,故 R2 中的 {S,D} 沒有功能) : 二個表,且滿足 BCNF : 至於為何要最少表? 在下的理由是: : 一、如同考數學一樣,方程式能化簡而沒化簡,雖事實上相等沒錯,但給改考卷的人 : 有理由扣分,最少表,同理。 : 二、實際上在開發系統、寫程式時,最少表又滿足正規化,是一般考量。 : (用「一般」這保留字眼是,事實上也有特殊狀況,要看系統需求而定,但一般 : 確實是這樣沒錯) :  先謝謝指教的人,祝大家高考都上榜! : : 讓我這個上榜10次的哥來教教你 : : 此題候選鍵為{J,P},{S,D.J} : : C決定的屬性都是從{J,P}延伸出去的 : : 因此Q,V遞移相依於主鍵{J,P}透過C : : 因此不為3NF為2NF : : BCNF後 : : R1{S,D,P} {S,D}為主鍵 : : R2{C,Q,V} C為主鍵 : : R3{S,D,J,C} {S,D,J}為主鍵,{S,D}為外鍵,C為外鍵 : : or : : R3{J,P,C} {J,P}為主鍵,C為外鍵 : : 打完收工 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.111.51.2 ※ 文章網址: http://www.ptt.cc/bbs/Examination/M.1403792165.A.A62.html

06/27 14:33, , 1F
好文~ 給推 XD
06/27 14:33, 1F

10/28 20:25, , 2F
謝謝您,講的很詳細,幫十次哥回答得點。
10/28 20:25, 2F

01/24 13:35, , 3F
最近再解這題,發現自己也是少算一個,非常感謝
01/24 13:35, 3F
文章代碼(AID): #1Jh2ibfY (Examination)
文章代碼(AID): #1Jh2ibfY (Examination)