Mysql
概述
NULL表示字段数据不存在
一个班级对应着多个学生,故班级表和学生表的关系就是“一对多”。
一个班级总是对应一个教师,班级表和教师表就是“一对一”关系。
主键
关系表,有个很重要的约束,就是任意两条记录不能重复。
能够通过某个字段唯一区分出不同的记录,这个字段被称为主键
。
记录一旦插入到表中,主键
最好不要再修改。
注:
选取主键的一个基本原则是:不使用任何业务相关的字段作为主键。
例:身份证号、手机号、邮箱地址这些看上去可以唯一的字段,均不可用作主键。
(因为:如果身份证号升位了,或者需要变更,作为主键,不得不修改的时候,就会对业务产生严重影响。)
常见的可作为id字段的类型有:
1.自增整数类型
2.全局唯一GUID类型
主键也不应该允许NULL。
可以使用多个列作为联合主键,但联合主键并不常用。
外键
把数据与另一张表关联起来,这种列称为外键。
外键既可以通过数据库来约束,为了速度快,也可以不设置约束,仅依靠应用程序的逻辑来保证。
这种情况下,class_id
仅仅是一个普通的列,只是它起到了外键的作用而已。
有时把一个大表拆成两个一对一的表,目的是把经常读取和不经常读取的字段分开,以获得更高的性能。
(例:把一个大的用户表分拆为用户基本信息表user_info和用户详细信息表user_profiles,大部分时候,只需要查询user_info表,并不需要查询user_profiles表,这样就提高了查询速度。)
索引
通过对数据库表创建索引,可以提高查询速度。
索引是关系数据库中对某一列或多个列的值进行预排序的数据结构。
通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录。
索引的效率取决于索引列的值是否散列,即该列的值如果越互不相同,那么索引效率越高。
关系数据库会自动对其创建主键索引。使用主键索引的效率是最高的,因为主键会保证绝对唯一。
通过创建唯一索引
,可以保证某一列的值具有唯一性。
数据库索引对于用户和应用程序来说都是透明的。