建立數(shù)據(jù)庫的六個(gè)步驟 mysql怎么設(shè)置外鍵?
mysql怎么設(shè)置外鍵?外鍵的設(shè)計(jì)初衷是為了在數(shù)據(jù)庫端保證對(duì)邏輯上相關(guān)聯(lián)的表數(shù)據(jù)在操作上的一致性與完整性。優(yōu)點(diǎn):精簡關(guān)聯(lián)數(shù)據(jù),減少數(shù)據(jù)冗余避免后期對(duì)大量冗余處理的額外運(yùn)維操作。降低應(yīng)用代碼復(fù)雜性,減少
mysql怎么設(shè)置外鍵?
外鍵的設(shè)計(jì)初衷是為了在數(shù)據(jù)庫端保證對(duì)邏輯上相關(guān)聯(lián)的表數(shù)據(jù)在操作上的一致性與完整性。
優(yōu)點(diǎn):
- 精簡關(guān)聯(lián)數(shù)據(jù),減少數(shù)據(jù)冗余避免后期對(duì)大量冗余處理的額外運(yùn)維操作。
- 降低應(yīng)用代碼復(fù)雜性,減少了額外的異常處理相關(guān)數(shù)據(jù)管理全由數(shù)據(jù)庫端處理。
- 增加文檔的可讀性特別是在表設(shè)計(jì)開始,繪制 ER 圖的時(shí)候,邏輯簡單明了,可讀性非常強(qiáng)。
- 缺點(diǎn):
- 性能壓力外鍵一般會(huì)存在級(jí)聯(lián)功能,級(jí)聯(lián)更新,級(jí)聯(lián)刪除等等。在海量數(shù)據(jù)場景,造成很大的性能壓力。比如插入一條新記錄,如果插入記錄的表有 10 個(gè)外鍵,那勢必要對(duì)關(guān)聯(lián)的 10 張表逐一檢查插入的記錄是否合理,延誤了正常插入的記錄時(shí)間。并且父表的更新會(huì)連帶子表加上相關(guān)的鎖。
- 其他功能的靈活性不佳比如,表結(jié)構(gòu)的更新等。
外鍵參照動(dòng)作列表:
- CASCADE:級(jí)聯(lián),子表跟隨父表更新外鍵值
- SET NULL:子表更隨主表更新外鍵值為 NULL
- RESTRICT/ NO ACTION:默認(rèn),限制父表改動(dòng)外鍵值
- SET DEFAULT:目前產(chǎn)生的效果和 RESTRICT 相同。
mysql怎么查看表是否設(shè)置了外鍵?
#查看數(shù)據(jù)庫所有表SELECT tba.TABLE_NAME FROM information_schema.TABLES tba WHERE tba.TABLE_SCHEMA= "你要查的數(shù)據(jù)庫名字"#查看某個(gè)庫中的一個(gè)表是哪些表的外鍵SELECT TABLE_NAME FROM KEY_COLUMN_USAGE WHERE CONSTRAINT_NAME="FK_PRODUCT_ID" AND REFERENCED_TABLE_NAME ="表的名字"AND REFERENCED_TABLE_SCHEMA="表的的數(shù)據(jù)名字"