赞
踩
项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:
一对多(One-to-Many):
表示一个表中的每一行记录都可以在另一个表中关联到多行。通俗来讲,就是一个实体(表)在另一个实体(表)中可以有多个关联实体(表)。
举个例子,一个学校有多个班级,而每个班级又有多个学生。这里的学校和班级构成了一对多的关系,即一个学校可以拥有多个班级,而每个班级又可以有多个学生。在数据库中,可以将学校、班级和学生分别建立成独立的表,并通过外键约束建立起关联。
实现:在多的一方建立外键,指向一的一方的主键。
CREATE TABLE school ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE class ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, school_id INT NOT NULL, FOREIGN KEY (school_id) REFERENCES school(id) ); CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, class_id INT NOT NULL, FOREIGN KEY (class_id) REFERENCES class(id) );
多对多(Many-to-Many):
表示一个表中的每一行记录都可以关联到另一个表中的多行,而另一个表中的每一行记录也可以关联到第一个表中的多行。通俗来讲,就是两个实体(表)之间存在多对多的关系,即两个实体互相关联。
举个例子,一个学生可以选修多门课程,而一门课程也可以被多个学生选修。这里的学生和课程构成了多对多的关系,即一个学生可以选修多门课程,一门课程也可以被多个学生选修。在数据库中,需要使用一个中间表来存储两个实体之间的关联关系。
CREATE TABLE student ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE course ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE student_course ( student_id INT NOT NULL, course_id INT NOT NULL, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES student(id), FOREIGN KEY (course_id) REFERENCES course(id) );student 表和 course 表之间建立了多对多的关系,即一个学生可以选修多门课程,一门课程也可以被多学生选修。通过创建一个名为 student_course 的中间表来存储学生和课程之间的关联关系。该表包含两个外键,分别引用了 student 表和 course 表,用于建立学生和课程之间的关联。
一对一(One-to-One):
表示一个表中的每一行仅能关联到另一个表中的一行记录,而另一个表中的每一行记录也只能关联到第一个表中的一行。通俗来讲,就是两个实体(表)之间存在一对一的关系,即两个实体相互关联且每个实体只跟另一个实体关联一次。
举个例子,一个人只有一个身份证号码,而一个身份证号码也只属于一个人。这里的人和身份证构成了一对一的关系,即一个人只有一个身份证号码,一个身份证号码也只属于一个人。在数据库中,可以使用外键来实现一对一关系。
CREATE TABLE person ( id INT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE id_card ( id INT PRIMARY KEY, number VARCHAR(20) UNIQUE NOT NULL, person_id INT UNI
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。