iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 11
1
自我挑戰組

SQL Server 資料庫程式設計/管理/經驗筆記系列 第 11

問與答:開發階段(甚至是上線後)不應在資料表中建立關聯

論點

影響開發進度

開發階段若資料表有建立關聯
在整理資料表內容的時候會因為關聯而綁手綁腳
拖慢開發速度

影響資料處理

為何要建立關聯
這樣子進行資料匯入的時候會有問題
為何要多做這種事情來限制自己的行為

首先要回到原點
為何資料表與資料表之間要有關聯
關聯可以保持資料的完整性
讓資料表不會出現沒有意義的資料內容(髒資料)
朝向最佳化的資料庫設計邁進

通常在開發階段不建立關聯
上線後基本上都不會補上去
到時資料產生異常時就會耗費更多的成本進行整理

資料表間有設定關聯
能讓接手或是日後再訓練開發人員時
更快了解資料表間的相依關係

不過實務上
小心設定外來鍵參考為 ON DELETE CASCADE
當相依性關係龐大時
若不小心將主要資料刪除時
其他相依的資料列就會自動刪除

沒有關聯的資料表示可以被 TRUNCATE
然而 TRUNCATEDELETE 一個重要的差異
TRUNCATE 是不會進事件紀錄
故無法使用事件紀錄來還原到最近的時間點
當然這個指令可透過權限設定等方式進行限制
有設定關聯的資料表變相可避免無心或惡意情況下對資料表執行 TRUNCATE 指令


上一篇
問與答:資料表流水識別碼不應使用自動產生
下一篇
問與答:使用 StoredProc 有資訊安全疑慮
系列文
SQL Server 資料庫程式設計/管理/經驗筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
PPTaiwan
iT邦好手 1 級 ‧ 2019-09-27 12:05:15

讓資料表不會出現沒有意義的資料內容(髒資料)

為何會有髒資料?? 為何會有機會給髒資料的機會寫入到資料庫??

我要留言

立即登入留言