首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL 表中建立多個關聯同一張表的外鍵:用戶-好友關係建模範例

     編輯:程式設計綜合問答

場景

用戶表 user(id, ...),好友表 fans(id, user_id, fans_id),兩外鍵均指向 user.id。

正確建表語句

CREATE TABLE user (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50)
);

CREATE TABLE fans (
    id INT PRIMARY KEY AUTO_INCREMENT,
    user_id INT NOT NULL,
    fans_id INT NOT NULL,
    CONSTRAINT fk_fans_user FOREIGN KEY (user_id) REFERENCES user(id),
    CONSTRAINT fk_fans_fan  FOREIGN KEY (fans_id) REFERENCES user(id)
);

關鍵點

  • 約束名必須不同:fk_fans_user、fk_fans_fan,否則報錯 Error 1005: Can't create table (errno: 121)。
  • 被引用欄位需有索引:主鍵自動有索引,滿足條件。
  • ON DELETE/UPDATE 行為:建議顯式指定 ON DELETE CASCADE (刪除用戶級聯刪好友關係) 或 RESTRICT (預設,防止誤刪)。

查詢範例

-- 獲取用戶 100 的所有好友資訊
SELECT u.* FROM user u
JOIN fans f ON u.id = f.fans_id
WHERE f.user_id = 100;
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved