关联关系:一对多(多对一)、一对一、多对多

/*
	一对多(多对一)
	外键可以为NULL,可以重复,不能引用不存在的外键
*/
CREATE TABLE dept(
	deptNo INT PRIMARY KEY AUTO_INCREMENT,
	dName VARCHAR(50)
)
CREATE TABLE emp(
	empNo INT PRIMARY KEY AUTO_INCREMENT,
	eName VARCHAR(50),
	deptNo INT,
	CONSTRAINT fk_emp_dept FOREIGN KEY(deptNo) REFERENCES dept(deptNo)
)

/*
	一对一:从表的主键即为外键
	wid:非空、唯一、引用hid
*/
CREATE TABLE hasband(
	hId INT PRIMARY KEY AUTO_INCREMENT,
	hName VARCHAR(20)
)
CREATE TABLE wife(
	wId INT PRIMARY KEY AUTO_INCREMENT,
	wName VARCHAR(20),
	CONSTRAINT fk_wife_hasband FOREIGN KEY(wId) REFERENCES hasband(hId)
)

/*
	多对多:关系由中间表维护,两主表无关系
*/
CREATE TABLE student(
	sId INT PRIMARY KEY AUTO_INCREMENT,
	sName VARCHAR(50)
)
CREATE TABLE teacher(
	tId INT PRIMARY KEY AUTO_INCREMENT,
	tName VARCHAR(50)
)
CREATE TABLE stu_tea(
	sId INT,
	tId INT,
	CONSTRAINT fk_student FOREIGN KEY(sId) REFERENCES student(sId),
	CONSTRAINT fk_teacher FOREIGN KEY(tId) REFERENCES teacher(tId)
)

猜你喜欢

转载自blog.csdn.net/csdn296/article/details/89331832
今日推荐