資料庫正規化一問 - 高考
By Agnes
at 2014-06-26T22:15
at 2014-06-26T22:15
Table of Contents
好久沒上來了... 試試手。
首先條件可以看見,母資料集合屬性全部大概是
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為外鍵
: : 打完收工
--
首先條件可以看見,母資料集合屬性全部大概是
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為外鍵
: : 打完收工
--
Tags:
高考
All Comments
By Michael
at 2014-06-29T04:08
at 2014-06-29T04:08
By Michael
at 2014-07-01T13:42
at 2014-07-01T13:42
By Yuri
at 2014-07-04T20:50
at 2014-07-04T20:50
Related Posts
媽媽說全職考生一年考上很正常
By Candice
at 2014-06-26T21:08
at 2014-06-26T21:08
媽媽說全職考生一年考上很正常
By Iris
at 2014-06-26T19:47
at 2014-06-26T19:47
請問圖行法筆記
By Annie
at 2014-06-25T15:46
at 2014-06-25T15:46
99年高考工數的問題
By Eden
at 2014-06-25T14:31
at 2014-06-25T14:31
99年高考會計-資本化利息
By Necoo
at 2014-06-25T14:13
at 2014-06-25T14:13