首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 主鍵與外鍵關系通俗實戰:論壇帖子/回帖模型演示

     編輯:MySQL 綜合教學

MySQL 主鍵與外鍵關系通俗實戰:論壇帖子/回帖模型演示

主鍵是表內記錄的唯一身份證,外鍵是跨表引用的橋梁。以論壇「主貼 thread / 回帖 reply」為例,通俗講解主外鍵關系,並用「大哥/小弟」完整演示建表、插入、約束報錯、級聯刪除全流程。

一、通俗類比

  • 主鍵:帖子 ID,訪問 thread.php?id=1 精準定位主貼。
  • 外鍵:回帖表 reply.thread_id 指向 thread.id。刪主貼時,若定義 ON DELETE CASCADE,MySQL 自動刪除所有回帖,無需應用雙重 DELETE。
  • 關系:子表外鍵指向父表主鍵,構成「一對多」引用鏈。

二、大哥/小弟完整演示

INSERT INTO dage(name) VALUES('銅鑼灣');
SELECT * FROM dage; -- id=1, 銅鑼灣

2. 插入小弟

DELETE FROM dage WHERE id=1;
-- ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails

4. 插入不存在大哥的小弟(報錯)

ALTER TABLE xiaodi DROP FOREIGN KEY xiaodi_ibfk_1;
ALTER TABLE xiaodi ADD FOREIGN KEY(dage_id) REFERENCES dage(id) ON DELETE CASCADE ON UPDATE CASCADE;
DELETE FROM dage WHERE id=1; -- Query OK, 1 row affected
SELECT * FROM dage;    -- Empty set
SELECT * FROM xiaodi;  -- Empty set

外鍵讓數據庫自動維護引用完整性,ON DELETE CASCADE 適合「強依賴」場景(如訂單/明細),ON DELETE RESTRICT 適合「弱依賴/需人工審核」場景。實戰中根據業務語義選擇。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved