簡書 賈小強
轉載請注明原創(chuàng)出處,謝謝!
關系型數(shù)據(jù)庫是由多張關系表組成的,表之間通過一對多關系不斷連接,數(shù)據(jù)庫可能由幾張甚至上百張的表連接而成,那么如何構建一個看似復雜的關系型數(shù)據(jù)庫呢?
我們知道通過SQL語句中的JOIN實際上可以將多張表連接成一張?zhí)摂M表,也就說可以將不同表的屬性連接到一起形成一個表頭,從這里個角度逆向思考,當我們發(fā)現(xiàn)一行由多個屬性組成的記錄時,也就說可以拆分成多張關系表
比如有一行記錄: field1,field2,field3,field4,field5,field6,然后可以按照2NF,3NF拆分進行垂直查分
- field1 2只依賴主鍵field1,那么分成一張表A
- field3 4只依賴主鍵field3,那么分成一張表B
- field5 6只依賴主鍵field5,那么分成一張表C
然后可以形成如下圖可能形式的連接情況

ER1.png
現(xiàn)在假設B表還可以繼續(xù)拆分成3張表,于是又可以形成如下形式的連接情況

ER2.png
推論:按照上面的方式可以將一行記錄逐步拆成任意復雜度的關系表
Happy learning !!