目录
补充:not null 与 default
not null:即规定该字段不为空,如果没有规定 not null,不赋值的话,该字段会默认为空;
default:不赋值的话,该字段有默认值,赋值的话,以赋值为准;
一. 表和约束
数据库是通过表来解决事物的存储问题的;
数据库是通过约束来解决事物取值的有效性和合法性的问题的;
建表的过程就是指定事物属性及其事物属性各种约束的过程;
二. 关系
定义:表和表之间的联系;
实现方式:通过设置不同形式的外键,来体现表的不同关系;
分类:一对一,一对多,多对多;我们常用的是后面两种关系
1. 一对一
假设存在表A,表B。即可以把表A的主键充当表B的外键,也可以把表B的主键充当表A的外键;
2. 一对多
在多的一方添加外键 ;
下面我们举例来演示:
在第三张图中,我们可以形象地看到,单独表的第一个字段来自A表的主键,第二个字段来自B表的主键,因此其数值必须存在于A,B表;
这两个字段又被整体看作单独表的主键,因此不可以重复,如下图所示;
3. 多对多
多对多必须通过单独的一张表来表示;
多对多的关系体现在我们需要创建第三个表,其包含两个表的主键和附加关系
我们不允许一个表里有两个主键,即主键只能存在一个,外键可以存在多个;
4. 查询表的关系:
我们创建了许多表,如何显而易见的知道他们的关系呢?
我们可以通过“数据库关系图”,右击“新建数据库关系图”,使用Shift连选,Ctril跳选,(像我就是选中第一个A,按住Shift,直接选最后一个uniquel就实现了全选),再点击“添加”即可。
如下图,我们可以看到有四个单表,一个一对一的表,一个多对一的表;
注意:外键不同于外键约束。外键指的是某个字段,外键约束指的是添加的某种限制;
由于U表的主键来自A,B表的主键,因此我们不可以直接删除A,B表的主键信息。如果我们想要删除A,B表的主键信息,可以先删去表之间的约束,否则不可以删除!
选中“杠杆”,右击“从数据库中删除关系”即可,当然我们也可以恢复关系;
恢复关系:右击U表,选择表和列规范,选择主外键即可,即将B表与U表连接起来;
三. 主外键总结
我们学习的知识很多,记是不可能记住的,我们只有将知识转化为自己的语言,用自己的话术表达,才可能转化为自己的知识!
主键:能够唯一区分事物的属性的一个字段或几个字段的组合;
主键通常是整数,不推荐使用字符串,因为查找会非常麻烦;
主键一般不允许被修改,除非本记录被删除;
主键的定义一般不使用业务主键,而使用代理主键,即无实际含义的字段;定义时不推荐直接定义为id,推荐“ 表名_id ”或者“ 表名id ”,
外键:来自一个表或者多个表的主键称之为外键;
外键也有可能来自本表的主键;