数据库表关系详解

 1、一对一

  A表中的一条数据最多只能和B表中的一条数据对应;B表中的一条数据也最多只能和A表中的一条数据相对应;

  例子就是:学生卡和学生信息表;

  数据库设计时有两种方式:一种是共享主键;另一种是加上唯一性外键;

    共享主键:两张表的主键一致

学生表student
id     name
1001    张三
1002    张四

学生卡表card
id      name
1001    card1
1002    card2

    唯一性外键:在一张表里加上外键,用这个外键关联到另一张表的主键,注意这个外键要有唯一性约束,不然就会变成一对多。

学生表student
id     name
1001    张三
1002    张四

学生卡表card
id      name	stuent_id(设计表时给该字段添加唯一性约束)
111    card1	 1001
222    card2	 1002

 

 

2、一对多

  A表中的一条数据可以对应到B表中的多条数据,但B表中的一条数据最多只能对应到A表中的一条数据。

  例子就是:学生信息表和班级表。

//学生表student
id     name   class_id(外键非空:班级id)
1001    张三      111
1002    张四      222
1003    王五      111
1004    赵六      111

//班级表class
id      name
111     class1
222     class2

  注意:其实这和一对一中的唯一外键差不多,只不过这个外键不需要加唯一约束;

      删除数据时,先删除子表再删除父表;添加数据时先添加父表再添加子表;

      实际设计表时,记住:一对多,两张表,多的表加外键。

 

3、多对多

  A表中的一条记录可以对应B表中的多条数据;B表中的一条记录也可以对应A表中的多条数据

  例子就是学生信息表和课程表;

// 学生信息表
id      name
1001    张三
1002    张四
1003    王五
1004    赵六


//课程表
id     name   
111    java   
222    mysql

  需要一个额外的中间表来实现这种多对多的关系;其实也可以看成两次一对多的关系。

  实际设计表时,记住口诀:多对多,三张表,关系表加外键。

 

 

参考链接:

https://blog.csdn.net/YXXXYX/article/details/123270424

posted @ 2023-03-06 15:53  先娶国王后取经  阅读(185)  评论(0编辑  收藏  举报