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

通訊錄程序分組功能資料庫設計:兩表關聯

     編輯:程式設計疑難解答

需求

用戶可自由增刪分組,一個聯繫人可屬於多個分組。

表結構

-- 聯繫人表
CREATE TABLE contacts (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(64) NOT NULL,
    gender CHAR(1),
    phone_office VARCHAR(32),
    phone_mobile VARCHAR(32),
    phone_home VARCHAR(32),
    company VARCHAR(128),
    title VARCHAR(64),
    -- 其他字段
    sort_order INT DEFAULT 0
);

-- 分組表
CREATE TABLE groups (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(64) NOT NULL,
    remark VARCHAR(255),
    sort_order INT DEFAULT 0
);

-- 中間表:聯繫人-分組多對多
CREATE TABLE contact_groups (
    contact_id INT NOT NULL,
    group_id INT NOT NULL,
    PRIMARY KEY (contact_id, group_id),
    FOREIGN KEY (contact_id) REFERENCES contacts(id) ON DELETE CASCADE,
    FOREIGN KEY (group_id) REFERENCES groups(id) ON DELETE CASCADE
);

查詢示例

  • 某分組所有聯繫人:`SELECT c.* FROM contacts c JOIN contact_groups cg ON c.id=cg.contact_id WHERE cg.group_id=?`
  • 某聯繫人所有分組:`SELECT g.* FROM groups g JOIN contact_groups cg ON g.id=cg.group_id WHERE cg.contact_id=?`

技術選型

單機/U盤運行建議 **SQLite** 或 **Access (MDB)**,零配置、文件級攜帶;C# 配合 `System.Data.SQLite` 或 `OleDb` 操作。

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