推荐答案
在SQL中,处理一对一、一对多和多对多的关系通常通过外键和中间表来实现。以下是每种关系的处理方式:
一对一关系
- 实现方式:在其中一个表中添加一个外键,指向另一个表的主键,并且该外键必须是唯一的。
- 示例:
// www.javascriptcn.com code example CREATE TABLE Person ( PersonID INT PRIMARY KEY, Name VARCHAR(100) ); CREATE TABLE Passport ( PassportID INT PRIMARY KEY, PersonID INT UNIQUE, PassportNumber VARCHAR(50), FOREIGN KEY (PersonID) REFERENCES Person(PersonID) );
一对多关系
- 实现方式:在“多”的一方表中添加一个外键,指向“一”的一方表的主键。
- 示例:
// www.javascriptcn.com code example CREATE TABLE Department ( DepartmentID INT PRIMARY KEY, DepartmentName VARCHAR(100) ); CREATE TABLE Employee ( EmployeeID INT PRIMARY KEY, EmployeeName VARCHAR(100), DepartmentID INT, FOREIGN KEY (DepartmentID) REFERENCES Department(DepartmentID) );
多对多关系
- 实现方式:通过创建一个中间表(也称为关联表或连接表)来实现,中间表包含两个外键,分别指向两个相关表的主键。
- 示例:
// www.javascriptcn.com code example CREATE TABLE Student ( StudentID INT PRIMARY KEY, StudentName VARCHAR(100) ); CREATE TABLE Course ( CourseID INT PRIMARY KEY, CourseName VARCHAR(100) ); CREATE TABLE StudentCourse ( StudentID INT, CourseID INT, PRIMARY KEY (StudentID, CourseID), FOREIGN KEY (StudentID) REFERENCES Student(StudentID), FOREIGN KEY (CourseID) REFERENCES Course(CourseID) );
本题详细解读
一对一关系
- 概念:一对一关系表示两个表中的记录一一对应。例如,一个人只能有一个护照,一个护照也只能属于一个人。
- 实现:在其中一个表中添加一个外键,并确保该外键是唯一的,以避免重复。
一对多关系
- 概念:一对多关系表示一个表中的记录可以对应另一个表中的多个记录。例如,一个部门可以有多个员工,但一个员工只能属于一个部门。
- 实现:在“多”的一方表中添加一个外键,指向“一”的一方表的主键。
多对多关系
- 概念:多对多关系表示两个表中的记录可以相互对应多个记录。例如,一个学生可以选修多门课程,一门课程也可以被多个学生选修。
- 实现:通过创建一个中间表,中间表包含两个外键,分别指向两个相关表的主键,并且这两个外键的组合作为中间表的主键,以确保唯一性。