以前的意識裡都是需要建立外來鍵,外來鍵能起到約束作用,能保證資料的完整性和一直性,比如如果沒有外來鍵約束,你自己程式控制又不到位把基本資訊都刪除了,詳情卻存在,人的基本資訊不存在了,工資資訊裡卻存在這個人,想要找這個人究竟是誰都找不到。
今天看到原來的外來鍵都被去掉了,問了下組長,結果回答就兩個字「效率」,雖然感覺很詫異,但是畢竟人家比我有經驗並沒有去爭論,下面將站在兩個對立面去贊成和反對建立外來鍵。
注意這裡說的建與不建不是說不要外來鍵,盡可能把表弄成一張表,而是說人為控制還是資料庫使用本身外來鍵約束。
利用資料庫保證資料庫完整性和一致性;自己用程式控制怕有疏忽,外來鍵多起來麻煩;同乙個資料庫可能給不同應用用,但是開發資料庫的人並不是開發應用的人,開發應用的人對資料庫不夠了解,就算開發資料庫的人去開發應用時間長也會忘記;
導資料入庫要有先後順序,而且也會檢查外來鍵是否存在,十分消耗時間;刪除資料也是;還有就是可能資料建立的約束可能效率不夠高,想自己建立高效的約束。
我自己覺得完整性和一致性肯定是需要保證的,不然會出問題,也會影響效率,需要看你專案又多大。
小型專案就使用資料庫本身的,效率追求不高,也沒必要花時間自己建立約束,時間代價比較大。
較大型專案可能資料約束本身效率不夠好,滿足不了大專案對效率的要求,又有人力物力去支援建立自己的高效約束。
還有較大專案初期,想早點上線,效率要求沒有那麼大,沒時間去建立高效率約束,那麼就用資料庫本身的約束,專案初期要求穩定一些比較好。
資料庫該不該用外來鍵
外來鍵這個東西讓多少程式設計師又愛又恨,雖然高效的保證了資料庫的完整性,一度讓我們覺得有了它,維護資料庫是多麼幸福的一件事情,我們不需要寫那麼多繁瑣的 來保證資料的完整性。可是隨著我們的系統逐漸龐大,我們又發現它給我們帶來了不少麻煩,複雜度 效能都受到了影響,於是我們就產生了到底該不該用外來鍵的疑問...
外來鍵該不該有索引
參考 在資料庫中,索引的使用非常重要,恰當的使用索引可以提高資料庫訪問的效率,但是索引的不當使用則會影響效能並占用不必要的儲存空間。在oracle資料庫中,是否應該對外鍵使用索引呢?這可能是很多人都有的疑問,答案是肯定的,即在一般情況下應該對外鍵使用索引。不過在弄清這個問題之前首先要明確乙個概念,就...
資料庫外來鍵的使用
在知乎上看到了一位圈友分享的關於外來鍵使用的一些分析 外來鍵是否採用看業務應用場景,以及開發成本的,大致列下什麼時候適合,什麼時候不適合使用 1.網際網路行業應用不推薦使用外來鍵 使用者量大,併發度高,為此資料庫伺服器很容易成為效能瓶頸,尤其受io能力限制,且不能輕易地水平擴充套件 若是把資料一致性...