diff --git "a/18 \345\276\220\346\260\270\346\267\263/20230609\344\275\234\344\270\232.md" "b/18 \345\276\220\346\260\270\346\267\263/20230609\344\275\234\344\270\232.md" new file mode 100644 index 0000000000000000000000000000000000000000..0b74defff18963ddc1a4013c9565b25a87fe8f38 --- /dev/null +++ "b/18 \345\276\220\346\260\270\346\267\263/20230609\344\275\234\344\270\232.md" @@ -0,0 +1,94 @@ + + +```sql +CREATE DATABASE school CHARSET utf8; +use school; +-- 院系表 + CREATE TABLE faculty( + d_id INT PRIMARY KEY, + d_name VARCHAR(255) + ); + INSERT INTO faculty VALUES + (1,'软件工程学院'); + -- 专业表 + CREATE TABLE specialty( + S_id int PRIMARY KEY, + S_name VARCHAR(255), + d_id int, + FOREIGN KEY (d_id) REFERENCES faculty(d_id) + ); + INSERT INTO specialty VALUES + (1,'软件技术',1); + -- 班级表 + CREATE TABLE class( + C_id INT PRIMARY KEY, + C_name VARCHAR(20), + grade VARCHAR(5), + s_id INT, + FOREIGN KEY (s_id) REFERENCES specialty(s_id) + ); + INSERT INTO class VALUES + (1,'软件技术1班','22级',1), + (2,'软件技术2班','22级',1), + (3,'软件技术7班','22级',1), + (4,'软件技术9班','22级',1); + -- 课程 + CREATE TABLE course( + couseId int PRIMARY key, + courseName varchar(10), + c_id int, + r_id int, + foreign key (c_id) references class(C_id), + foreign key (r_id) references classroom(r_id) + ); + insert into course VALUES + (1,'Java',1,1), + (2,'MySQL',2,2); + -- 教室 + create table classroom( + r_id int PRIMARY KEY, + r_name varchar(10) + ); + insert into classroom values + (1,'实训一'), + (2,'实训二'); + -- 课程表 + create table `select` ( + selectId int primary key, + couseId int, + time varchar(20), + t_id int, + r_id int, + foreign key (couseId) references course(couseId), + foreign key (t_id) references teacher(t_id), + foreign key (r_id) references classroom(r_id) + ); + insert into `select` values + (1,1,'周一8:00-11:40',2,1), + (2,2,'周一14:00-17:40',1,2); + -- 教师 + create table teacher( + t_id int primary key, + t_name varchar(10), + couseId int, + foreign key (couseId) references course(couseId) + ); + insert into teacher values + (1,'丘丘',1), + (2,'黑马pink',2); + -- 学生 +CREATE TABLE student ( + stu_name VARCHAR(25), + stu_id INT PRIMARY KEY, + C_id INT, + select_id INT, + foreign key (C_id) references class(C_id), + FOREIGN KEY (select_id) REFERENCES `select`(selectId) + ); + INSERT INTO student VALUES + ('一',17,1,1), + ('二',52,2,2), + ('三',49,3,1), + ('四',22,4,1); +``` + diff --git "a/18 \345\276\220\346\260\270\346\267\263/20230609\347\254\224\350\256\260.md" "b/18 \345\276\220\346\260\270\346\267\263/20230609\347\254\224\350\256\260.md" new file mode 100644 index 0000000000000000000000000000000000000000..64c995ad17daacc06a9d5adb336888a71e0a7a32 --- /dev/null +++ "b/18 \345\276\220\346\260\270\346\267\263/20230609\347\254\224\350\256\260.md" @@ -0,0 +1,28 @@ +数据库的三种关系: + +一对一:例一个人只有一个身份证 + +一对多:例一个班级有多个学生,而学生只有一个班级 + +多对多:一个课程可以被多个学生选修,多个学生也可以选修一个课程 + +一对一的实例 + +在数据库建表的时候,可以将 + +人数据库的主键放在身份证里,虽然身份证表的主键也可以放进人表里,不过你不能进入警察局把信息改了吧 + +![20200226200140908.png (632×132)](https://img-blog.csdnimg.cn/20200226200140908.png) + +一对多的实例 + +班级是1端,而学生是n端,利用面向对象的原理,1是父亲,n是儿子,所以儿子拥有父亲的所有属性,也就是n端里面应该放进1端的主键,也就是学生表应该放进班级的主键 + +![img](https://img-blog.csdnimg.cn/20200226200200688.png) + +多对多的实例 + +对于多对多关系,需要转换成1对多关系,那么就需要一张中间表来转换,这张中间表里面需要存放学生表里面的主键和课程表里面的主键,此时学生与中间表示1对多关系,课程与中间表是1对多关系,学生与课程是多对多关系 + +![image-20230907000501486](C:\Users\86173\AppData\Roaming\Typora\typora-user-images\image-20230907000501486.png) +