①部门表
一共有三个部门,每个部门有自己对应的id。
那如何将这两张表联系起来?
如果是在部门表加入成员表的id,那一行需要添加多个数据,显然不行。
②成员表
一共有七个成员。
如何将这两张表联系起来?
每个成员后面添加一个属性,也就是自己对应的部门id,这样就一目了然。
那么现在问题来了:
这只是在成员表中做了一个声明,实际上这两张表并没有关联起来。
具体什么意思呢?
简单的理解就是:假如将部门表中的某个部门是删除的,但是成员表中的数据还有这个部门。
想要解决这个问题,就要引用外键约束这个概念,将这两张表真真正正地关联起来。
如何添加外键约束?
①建表后添加外键约束
foreign key即为外键的意思。
references,参考的意思,这里可以理解成关联。
也就是说把成员表中的dept_id作为外键,同时与部门表中的id相关联。
这样的话,你想删除部门表中的某个部门,得保证成员表中没有该部门的成员。
②建表时添加外键约束
一般来说,会在建表的时候就添加外键,格式是一样的。
其中:
- 部门表(1对多中的1)也叫主表。
- 成员表(1对多中的多)也叫从表。
也就是说想要删除主表中的数据,必须保证从表中和其相关的数据不存在。
其中一对一表设计和一对多是很相似的,就是任意一张表将另外一张表的id作为外键就可以了。
操作起来很简单,并且一般应用以一对多和多对多为主,在此就不再赘述了。
四、多对多表设计
程序员表和项目表便是多对多的关系。
写sql语句创建表和添加数据,也算是对这几天学的知识点做一个复习。
①创建程序员表对表本身的操作,所以有table这个单词。
create table coder(表字段说明)。
其中里面表字段之间使用逗号隔开的,最后一个字段又没有逗号。
我用的分号然后一直报错,弄了半天才发现这个问题,感觉要被自己蠢疯了。②创建项目表
格式同上。
③给程序员表添加数据
insert into 表名 values (每列对应的值);
这是将列名省略了的写法,列名省略了之后再赋值时,每列都得赋值。
④给项目表添加数据
格式也同上。
那么在多对多的表中是怎么将两张表关联起来的?
创建一个中间表,将这两个表关联起来。
- 中间表表名一般会将这两个表名结合起来,见名知意。
- 中间表有两个外键。
- 外键分别对应两张表中的主键。
这样的话,这两张表也就被关联起来了。
最后
谢谢你的观看。
如果可以的话,麻烦帮忙点个赞,谢谢你。
,