最近無聊想一些無聊的事情
最近做 db 主表刪除,在想一些關聯表是不是也要跟著刪除
雖然可以用INNER(or LEFT) JOIN
容錯
但我還想知道一般正常開發者會不會做delete
(我之前公司好像沒有這樣習慣)
不過,假如要刪除會選哪一種刪除方法
目前知道用
- DB 設定 table 結構刪除
- DB 設定 trigger
- 程式手動設定刪除
不知這幾種會用哪一種,所以網路上找到一些答案整理
外來鍵
有看到幾篇,說外來鍵很吃 DB 效能
正常可以用程式邏輯去解決掉
不過當然設定外來鍵可以減少資料不正確問題
目前看到有報表程式會用到外來鍵
問題引入
以前的意識裡都是需要建立外鍵,外鍵能起到約束作用,能保證數據的完整性和一直性,比如如果沒有外鍵約束,你自己程序控制又不到位把基本信息都刪除了,詳情卻存在,人的基本信息不存在了,工資信息裡卻存在這個人,想要找這個人究竟是誰都找不到。
今天看到原來的外鍵都被去掉了,問了下組長,結果回答就兩個字「效率」,雖然感覺很詫異,但是畢竟人家比我有經驗並沒有去爭論,下面將站在兩個對立面去贊成和反對建立外鍵。
作者:qq_23473123
来源:CSDN
原文:https://blog.csdn.net/qq_23473123/article/details/79273066
版权声明:本文为博主原创文章,转载请附上博文链接!
今天看到這篇,果然過來人經驗還是要聽的
之前我前公司我在開發 table
設定多個主鍵我是依照需求開的(我前公司沒有用 id 當主鍵)
我有一個前輩跟我講這樣設計不會很好
程式會缺乏彈性,以後需求變動不是很好改
通常可以用程式邏輯去做判斷
相關外來鍵設定
1 | [ON DELETE {CASCADE | SET NULL | NO ACTION | RESTRICT}] |
- MySQL 建立 Foreign Key ( InnoDB ) 時要注意的一件事 @ Amin’s Note :: 痞客邦 ::
- [第二十四個夏天後: [MySQL] 使用 FOREIGN KEY 筆記 @ MySQL 5.6](http://blog.changyy.org/2015/01/mysql-foreign-key-mysql-5
簡單小記,使用外來鍵
主表和關聯表,從關聯表設定外來鍵,這樣主表要先建立對應 id
關聯表才能新增資料
反之
主表要先刪除關聯表資料,主表才能做刪除
動作(PS: 這些動作都是看你設定什麼)
不過,我覺得還是要看情況,以許是很死的東西(ex:報表、會計)
可以用 table,這樣能更確定資料的安全
但大部分系統可能不用加入外來鍵
主表刪除,關聯表是否會刪除
這個問題網路上找不到人討論這個問題
我之前是沒有刪除,但最近想到這個問題
仔細想想舊資料殘留在上面好像浪費空間
又沒有意義,假如沒有特需用途還是手動刪除吧
結論還是無聊想一些無聊的事情手動刪除吧!!