讀 - 非正規化的資料庫規劃感想




http://ithelp.ithome.com.tw/articles/10122017

1. 考慮系統用的編號:
因為系統用的編號與人用的編號是不同的, 常見的身分證字號雖然常被當 PK , 但畢竟是人設定的, "凡原則必有例外", 所以會有重複號, 無身分證號(外籍人士)等情況, 所以有些關連用的 PK , 應該考慮另編系統用的編號.
>哇,沒想過耶

2. 考慮系統人員與使用者可以異動的欄位:
大概可以分成三種人用的(依需求可以再分)
a. 一定要系統人員設定, 屬於程式相關參數的.
b. 屬於管理人員可以異動, 但需要一定討論過的, 例如: 電話可以分不同類別, 或人的職業/學歷等.
c. 操作人員可以修改的項目.
為什麼會這樣區隔, 是因為覺得這樣的分類, 往往跟 Index 的建立有關連, 之後的速度也有差別.
>?疑?有什麼差別呢?index建法不是一樣嗎

3. 善用反正規化:
這應該很多資料都有提過, 透過程式先把一些資料, 另外存到某個欄位, 下次只要查詢該欄位, 就不用再查原始資料, 可以提高速度.
>這個會導致資料不一致.但有時侯客戶就是想要不一致啦

4. 使用節點而不用分層:
e.g.
              上層
1地球    
2台灣       1
3.台北市   2
4.大安區   3

請先評估
雖然台北縣改制為新北市, 商業邏輯上, 台北縣和新北市是不同的, 如果將台北縣改為新北市, 就是失去了"台北縣"這資訊, 因此, 應該要用一隻程式來自動產生新的地址紀錄, 在我的設計裡, 地址等通訊資料是有時效的.

5. 把一些同性質的東西擠在一起.
>看嘸

6. 用同一張表打包起來:
>看嘸    

留言

熱門文章