① 数据库中的键、主码、主键是什么意思
主键(Primarykey):也称为主码或主关键字,用于惟一地确定一个元组的属性或属性组(复合主码)。每个关系都有一个并且只有一个主码。
外键(ForeignKey):也称为外码或外部关键字。如果一个属性集不是所在关系的关键字,但是是其他关系的关键字,则该属性集称为外部关键字。
在关系数据库中可以通过外键使两个关系关联,这种联系通常是一对多(1:n)的,其中主(父)关系(1方)称为被参照关系,从(子)关系(n方)称为参照关系。
(1)数据库为什么要有主码扩展阅读:
数据库主键作用:
1、保证实体的完整性
2、加快数据库的操作速度
3、在表中添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复。
4、DBMS自动按主键值的顺序显肢则薯示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
在有些数据库中,虽然主键不是必需的,但最好为每个表都设置一个主键,不管是单主键还是复合主键。它存在代表着表结构的完整性历者,表的记录必须得有唯一区分的字段,主键主要是用于其他表的外键关联,以及本记录的修改盯备与删除。
② 主码和外码各有什么作用
1、主码:保证实体的完整性;加快数据库的操作速度;在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
2、外码:主码和外部码提供了一种表示不同关系之间相互关联的手段。如关系模式供应商和供应之间的关系就是通过供应商名称来体现的。
建立主码应该遵循的原则
1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。
2、永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。
注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。
3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。
4、主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
以上内容参考:网络-主关键字、网络-外部码
③ 什么是候选码、主码、全码、外码
候选码、主码、全码和外码都是关系数据库中重要的概念,用于描述数据表的属性和关系。
候选码是一个或多个属性的集合,可以用来唯一标识表中的每个元组(记录)。换句话说,候选码确保表中的每个记录都可以被唯一地区分。一个表可以有多个候选码。
主码是从候选码中选出的一个用于唯一标识表中每个元组的属性集合。因此,主码一定是候选码,但候选码不一定是主码。每个表只能有一个主码。
全码是指包含所有属性的候选码。换句话说,如果一个候选码包含表中的所有属性,那么它就是一个全码。
外码是一个表中的属性集合,它对应于另一个表的主码。外码用于表示表之间的关系。例如,在一个订单管理系统中,订单表可能包含一个客户ID的外码,该外码与客户表的主码关联,以表示每个订单与特定客户的关系。
以下是一个简单的例子来说明这些概念。考虑一个包含学生信息的学生表,其中的属性包括学号、姓名、性别和年龄。在这个表中,学号和姓名都可以作为候选码,因为它们都可以唯一标识每个学生。然而,我们只能选择一个作为主码,比如学号。如果我们将姓名作为主码,那么在输入学生的信息时,就必须确保每个学生的姓名都是唯一的,这在实际应用中可能是困难的。在这个例子中,没有全码,因为没有任何一个候选码包含表中的所有属性。另外,如果还有一个课程表,其中包含课程编号、课程名和授课老师等属性,那么我们可以在学生表中添加一个课程编号的外码,以表示每个学生所选的课程。
总之,候选码、主码、全码和外码是关系数据库中重要的概念,用于确保数据的唯一性和完整性,以及表示表之间的关系。