一个表中可以有多个列,一个列中的数据有可能会重复.如学生信息表中,若有两个学生重名,那么姓名列的数据将会出现重复现象。那么在为学生统计分数的时候,如何才能更加精确的找到一个学生呢?这就需要为学生信息表设置一个主键。
主键是不允许有重复数据的列,能够唯一地确认记录,与该记录的其他字段有没有重复无关。如学生信息表,即使重名的学生姓名、性别、年龄等信息都相同,只要不是一个人,就可以为他们定义不同的主键来确定不同学生。
主键是表的标识列,在MySQL中支持主键组的使用,即使多个字段作为一个主键来使用。这一组字段中的每个字段,作为主键的构成缺一不可。对主键的操作即对这组字段的操作。
关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途,1、唯一地标识一行记录。2、作为一个可以被外键引用的有效对象。
基于以上两个用途,在设计物理层面的主键时需要遵循以下原则:
1、MySQL主键通常是单列的,以便提高连接和筛选操作的效率。但是MySQL支持复合主键的使用。
2、主键通常不需要更换,能够唯一地标识一行数据。
3、MySQL主键通常是对用户没有意义的。
4、MySQL主键最好不要包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
5、MySQL主键通常由计算机自动生成,如对主键添加自增约束。