這是第三次ㄚ琪自我練習的結果,測試50題,答對42題得84分,錯8題扣8分,總計得分76分,比上次進步3分,我們的目標應該是80分以上,而且連續3次以上的模擬都能達70分,那麼MySQL的認證就可以取得了。
現在讓我們檢討錯的第一題吧。
這是MySQL 5實力養成暨評量裡的1-34『完成第一正規化的表格最重要的是能滿足哪項條件?』
答案:(A) 每個欄位只能含有一個值
正規化的問題還真是我們的罩門,感覺就是要背起來,不然很難有所準據。有關正規化的資訊已經分享過了,請參閱資料庫正規化,這裡不再贅述。
另外關於完全地功能性相依(Fully Functional Dependency)則是這一題搞不清楚的地方,由於在資料庫正規化的第二正規化提到『
它的規則是要求資料表裡的所有資料都要和該資料表的主鍵有完全相依關係;如果有哪些資料只和主鍵的一部份有關的話,就得把它們獨立出來變成另一個資料表。如果一個資料表的主鍵只有單一一個欄位的話,它就一定符合第二正規化。
一個資料表符合第二正規化若且唯若
- 它符合第一正規化
- 所有非主鍵的欄位都一定和主鍵有關』
我們一直沒提到完全地功能性相依這個名詞,雖然有點那個意會,可是對解題沒有幫助,所以引用高雄縣教育網路中心的資料於下:
第二正規化(Second Normal Form) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
條件 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
一個表格必須滿意第一正規化的條件,並且非主鍵的欄位都要對主鍵有「完全地功能性相依(Fully Functional Dependency)」關係,才能算是達到第二正規化。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
正規化 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
已合乎 1NF 的表格 A: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在正規化之後,我們將表格 A 一分為二,並分別命名為 B1 與 B2: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
結果探討 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在經過 2NF 之後,先前的「無法單獨新增一筆學生資料」與「無法單獨刪除一筆成績資料」的問題都解決了。我們再看看 B1 與 B2 各欄位和主鍵之間在功能上的相依關係(Functional Dependency): | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在一個表格中,如果某一欄位值可決定其他欄位值;而這些欄位中又存在某一欄位可以決定剩餘欄位的值,稱為「遞移相依性(Transitive Dependency)」。若有此一情況發生,在異動資料時,可能會造成其他資料不一致的現象。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在 B1 之中便有「遞移相依性」關係存在:B1.Stu_no -> B1.City 且 B1.City -> B1.ZIP 。 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
在這樣的架構下,將產生下列問題:
|