從物件導向設計的角度來看,應該取消掉外來鍵約束,因為資料庫的作業就是高效的訪問資料。而不是表達業務邏輯關係。
建立外來鍵的好處:
1、由於資料庫保證資料完整性,比程式保證完整性更可靠,多應用時,由程式來保證資料完整性變得困難
2、外來鍵約束使得資料庫的er圖可讀性變強,有助於業務邏輯設計
不建立外來鍵的好處:
1、可以用觸發器或應用程式保證資料的完整性
2、開發變得簡單,維護資料時不用考慮外來鍵約束
3、效能高,大資料量插入操作時不用考慮維護外來鍵
總結:不建立外來鍵約束,關係由程式控制。另外還需要刪除現有的外來鍵關係
我自己覺得完整性和一致性肯定是需要保證的,不然會出問題,也會影響效率,需要看你專案又多大。
小型專案就使用資料庫本身的,效率追求不高,也沒必要花時間自己建立約束,時間代價比較大。
較大型專案可能資料約束本身效率不夠好,滿足不了大專案對效率的要求,又有人力物力去支援建立自己的高效約束。
還有較大專案初期,想早點上線,效率要求沒有那麼大,沒時間去建立高效率約束,那麼就用資料庫本身的約束,專案初期要求穩定一些比較好。
posted @
2018-09-06 23:11
韋邦槓 閱讀(
...)
編輯收藏
資料庫設計時是否要加入外來鍵
最近做專案的時候在討論表與表之間的關係是否需要建立外來鍵約束,建立外來鍵的好處 1 由資料庫保證資料完整性,比程式保證完整性更可靠,多應用時 如有應用a,b,c他們之間的實體存在關聯關係 由程式來保證資料完整性變得困難 2 外來鍵約束使得資料庫的er圖可讀性變強,有助於業務邏輯設計 不建立外來鍵的好...
php驗證是否建立資料庫,否,則自動建立
預設建立的資料庫為test,資料表為admin,管理員只需要修改db pwd 即本地的伺服器密碼 即可,使用者密碼採用md5加密 define db host,localhost define db user,root define db pwd,yuyouwen define db name,te...
關於ORACLE建立資料庫索引
由於公司電子商務 平台版本老化,且使用oracle資料庫,前期dba在設計資料庫建表結構時候存在一定的問題,對索引的使用不夠重視,大致資料的查詢比較慢 當然也有一些由於使用hibernate中不夠重視 color red oracle採用自下而上的順序解 析where子句,根據這個原理,表之間的連線...