首頁>Club>
17
回覆列表
  • 1 # pietr49411

    1)主鍵是什麼,主鍵在資料表中是唯一的標示,主鍵在一個表中是不允許重複的;2)外來鍵是什麼,外來鍵是主鍵表的一個對應關係表的連線標示;在建立外來鍵前你要確定,外來鍵表是否已經建立;從你的sql語句中可以看出你的錯誤:不說你關聯表是不是存在;先看你主鍵建立:gid int not null primary key,你在這裡已經把gid這個屬性定義為主鍵了,在下面foreign key (gid) references goods (gid),gid欄位設定為外來鍵就明顯的有語法錯誤;

  • 2 # 愛可生雲資料庫

    外來鍵的設計初衷是為了在資料庫端保證對邏輯上相關聯的表資料在操作上的一致性與完整性。

    優點:

    精簡關聯資料,減少資料冗餘避免後期對大量冗餘處理的額外運維操作。降低應用程式碼複雜性,減少了額外的異常處理相關資料管理全由資料庫端處理。增加文件的可讀性特別是在表設計開始,繪製 ER 圖的時候,邏輯簡單明瞭,可讀性非常強。缺點:效能壓力外來鍵一般會存在級聯功能,級聯更新,級聯刪除等等。在海量資料場景,造成很大的效能壓力。比如插入一條新記錄,如果插入記錄的表有 10 個外來鍵,那勢必要對關聯的 10 張表逐一檢查插入的記錄是否合理,延誤了正常插入的記錄時間。並且父表的更新會連帶子表加上相關的鎖。其他功能的靈活性不佳比如,表結構的更新等。

    外來鍵參照動作列表:

    CASCADE:級聯,子表跟隨父表更新外來鍵值SET NULL:子表更隨主表更新外來鍵值為 NULLRESTRICT/ NO ACTION:預設,限制父表改動外來鍵值SET DEFAULT:目前產生的效果和 RESTRICT 相同。

  • 中秋節和大豐收的關聯?
  • 為什麼(innodb)水平分表/分割槽表可以提高查詢效能?