⑴ 数据库表中的主键有什么作用
数据库主键
主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。由于 PRIMARY KEY 约束确保唯一数据,所以经常用来定义标识列。
作用:
1)保证实体的完整性;
2)加快数据库的操作速度
3) 在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改与删除。
主键的无意义性
在开发过程中,读者可能会看到将一些表使用有意义的字段表示主键,例如“用户登录信息表”将“登录名”(英文名)作为主键,“订单表”中将“订单编号”作为主键,如此设计主键一般都是没什么问题,因为将这些主键基本不具有“意义更改”的可能性。但是,也有一些例外的情况,例如“订单表”需要支持需求“订单可以作废,并重新生成订单,而且订单号要保持原订单号一致”,那将“订单编号”作为主键就满足不了要求了。因此读者在使用具有实际意义的字段作为主键时,需要考虑是否存在这种可能性。
主键的选择
①编号作主键
此方法就是采用实际业务中的唯一字段的“编号”作为主键设计,这在小型的项目中是推荐这样做的,因为这可以使项目比较简单化,但在使用中却可能带来一些麻烦,比如要进行“编号修改”时,可能要涉及到很多相关联的其他表,就像黎叔说的“后果很严重”;还有就是上面提到的“业务要求允许编号重复时”,我们再那么先知,都无法知道业务将会修改成什么?
②自动编号主键
这种方法也是很多朋友在使用的,就是新建一个ID字段,自动增长,非常方便也满足主键的原则,优点是:数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利;数字型的,占用空间小,易排序,在程序中传递也方便;如果通过非系统增加记录(比如手动录入,或是用其他工具直接在表里插入新记录,或老系统数据导入)时,非常方便,不用担心主键重复问题。
缺点:其实缺点也就是来自其优点,就是因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其他系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的);如果其他系统主键不是数字型那就麻烦更大了,会导致修改主键数据类型了,这也会导致其他相关表的修改,后果同样很严重;就算其他系统也是数字型的,在导入时,为了区分新老数据,可能想在老数据主键前统一加一个“o”(old)来表示这是老数据,那么自动增长的数字型又面临一个挑战。
⑵ 数据库题目:为什么要设置主键不设置会有什么后果
主键用于表示数据(记录)的唯一性, 不设置主键会导致数据表中可能存在完全相同的数据, 因此在对数据进行操作时, 数据库无法区分这些相同的数据, 因而会产生不想要的操作结果
另外, 主键还有助于提高数据的检索速度
⑶ 数据库中设置主键是为了什么,用通俗易懂的语言解释
为了保证实体的完整性,
主键
必须不空不重,比如学生信息表,
学号
是主键,那么就要求每个学生必须有学号,并且所有学生的学号不得重复.
⑷ 数据库中为何要设置主键呢有什么作用
主键:
概念
主关键字(主键,primary
key)是被挑选出来,作表的行的惟一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。
主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。
作用
1)保证实体的完整性;
2)加快数据库的操作速度
3)
在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4)
ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
特点
1)
一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。在ACCESS中,虽然主键不是必需的,但最好为每个表都设置一个主键。
2)主键的值不可重复,也不可为空(NULL)。
⑸ 我想知道数据库中设置主键的作用
1、保证每个实体的完整性;
2、加快数据库的操作速度,更好地给用户带来体验;
3、在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
4、DBMS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
当创建或更改表时可通过定义 PRIMARY KEY 约束来创建主键。一个表只能有一个 PRIMARY KEY 约束,而且 PRIMARY KEY 约束中的列不能接受空值。
(5)数据库连接为什么要使用主键扩展阅读:
主键的使用规则介绍:
1、任意两行都不具有相同的主键值;
2、每行都必须具有一个主键值(主键列不允许NULL值);
3、可以使用多个列作为主键,但是所有列值得组合必须是唯一的(但单个列的值可以不唯一);
4、不更新主键列中的值;
5、不重用主键列的值;
6、不在主键列中使用可能会更改的值(例如,供应商的名字,如果供应商更改了名字,你就得改这个主键)。
⑹ 数据库中建“索引”和“主键”有什么作用
主键的作用是防止数据重复,是一种约束;索引的目的是加快检索速度,只有恰当的建立索引,系统才能快速运行
⑺ 数据库主键具体指哪项,有什么作用
主键:
关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途:
1.
惟一地标识一行。
2.
作为一个可以被外键有效引用的对象。
基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:
1.
主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
2.
主键应该是单列的,以便提高连接和筛选操作的效率。
注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。
3.
永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。
4.
主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
5.
主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
外键是数据库一级的一个完整性约束,就是数据库基础理论书中所说的“参照完整性”的数据库实现方式。
外键属性当然是可以去掉的,如果你不想再用这种约束,对编程当然不会有什么影响,但相应的录入数据的时候就不对录入的数据进行“参照完整性”检查了。
例如有两个表
A(a,b)
:a为主键,b为外键(来自于B.b)
B(b,c,d)
:b为主键
如果我把字段b的外键属性去掉,对编程没什么影响。
如上面,A中的b要么为空,要么是在B的b中存在的值,有外键的时候,数据库会自动帮你检查A的b是否在B的b中存在。
⑻ 数据库中 建立表时为什么要设置主键
主键的值用于惟一地标识表中的某一条记录,一个表只有一个主键。主键可以由一个字段,也可以由多个字段组成。
主键上会自动创建索引
⑼ 数据库:什么是主键设置主键的意义是什么
主键就是数据表中某一行数据中的某一字段的唯一值,假设做个客户信息提交数据库,那个电话就是个唯一值,设电话那个字段为主键的话,就不会有客户用同样的手机号码提交进来,且重复提交的用户会有错误提示,提示不可重复提交。