数据库一对多和多对多如何建表
时间: 2024-12-17 07:55:29 浏览: 11
数据库中的"一对一"、"一对多"和"多对多"关系是关系型数据库设计中的常见模式,用于描述实体之间的联系。
1. **一对一(One-to-One,1:1)**:当两个表中的每个记录只对应另一个表中的唯一记录时,就是一对一关系。建表时,可以在主表中添加一个外键引用从表的主键,反之亦然。例如,学生与身份证的关系:
```sql
CREATE TABLE 学生 (
id INT PRIMARY KEY,
身份证号 VARCHAR(10) NOT NULL,
FOREIGN KEY (身份证号) REFERENCES 身份证(id)
);
CREATE TABLE 身份证 (
id INT PRIMARY KEY,
学生ID INT,
FOREIGN KEY (学生ID) REFERENCES 学生(id)
);
```
2. **一对多(One-to-Many,1:N)**:一个表有一条记录对应另一表多条记录,通常通过一个主表添加一个外键关联到从表。例如,课程和学生的关系:
```sql
CREATE TABLE 课程 (
id INT PRIMARY KEY,
名称 VARCHAR(50),
-- 其他字段...
);
CREATE TABLE 学生选课 (
id INT AUTO_INCREMENT PRIMARY KEY,
学生ID INT,
课程ID INT,
FOREIGN KEY (学生ID) REFERENCES 学生(id),
FOREIGN KEY (课程ID) REFERENCES 课程(id)
);
```
3. **多对多(Many-to-Many,M:N)**:两个表都有多个记录相互关联,需要创建一个中间表来存储这种关系,中间表包含两个外键分别引用原表。比如,部门和员工:
```sql
CREATE TABLE 部门 (
id INT PRIMARY KEY,
名称 VARCHAR(50),
-- 其他字段...
);
CREATE TABLE 员工 (
id INT PRIMARY KEY,
姓名 VARCHAR(50),
-- 其他字段...
);
CREATE TABLE 部门员工 (
department_id INT,
employee_id INT,
PRIMARY KEY (department_id, employee_id),
FOREIGN KEY (department_id) REFERENCES 部门(id),
FOREIGN KEY (employee_id) REFERENCES 员工(id)
);
```
阅读全文