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

SQL 留言板系統主外鍵設計:留言表與分類表關聯實作

     編輯:程式設計綜合問答

資料表結構

CREATE TABLE gbook_class (
    id INT IDENTITY(1,1) PRIMARY KEY,
    classname NVARCHAR(50) NULL
);

CREATE TABLE gbook (
    id INT IDENTITY(1,1) PRIMARY KEY,
    title NVARCHAR(50),
    content NVARCHAR(MAX),
    classid INT NULL,
    userid INT NULL,
    -- 其他欄位略
    CONSTRAINT FK_gbook_class FOREIGN KEY (classid) REFERENCES gbook_class(id)
);

關聯邏輯說明

  • 一對多:一個分類可包含多則留言,一則留言屬於一個分類。
  • 外鍵欄位:在「多」的一方(gbook)建立 classid 參照「一」的一方(gbook_class)主鍵 id。
  • 級聯動作:建議 ON DELETE SET NULL(刪除分類時留言分類設為空)而非 CASCADE(避免誤刪留言)。

完整外鍵定義

ALTER TABLE gbook
ADD CONSTRAINT FK_gbook_class
FOREIGN KEY (classid) REFERENCES gbook_class(id)
ON DELETE SET NULL ON UPDATE CASCADE;

查詢範例:留言連分類名稱

SELECT g.title, g.content, c.classname
FROM gbook g
LEFT JOIN gbook_class c ON g.classid = c.id
ORDER BY g.id DESC;

擴展:用戶表關聯

同理建立 users 表,gbook.userid 加外鍵參照 users.id,實現留言作者資訊查詢。

總結

主外鍵設計核心:識別實體關係(一對多、多對多),在「多」的一方加入參照欄位並建立外鍵約束,配合適當的級聯規則確保資料完整性。

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