候选码、主码和外码的区别是什么?

候选码、主码和外码的区别是什么?,第1张

候选码:若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。

主码:主码一般指主关键字。主关键字是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。

全码:All-key关系模型的所有属性组组成该关系模式的候选码,称为全码。即所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码。

外码:某个关系的主码相应的属性在另一关系中出现,此时该主码在就是另一关系的外码。

扩展资料:

主码作用:

1、保证实体的完整性;

2、加快数据库的 *** 作速度;

3、在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;

4、ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

参考资料:百度百科-候选码

               百度百科-主码

1、主码:保证实体的完整性;加快数据库的 *** 作速度;在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

2、外码:主码和外部码提供了一种表示不同关系之间相互关联的手段。如关系模式供应商和供应之间的关系就是通过供应商名称来体现的。

建立主码应该遵循的原则

1、主键应当是对用户没有意义的。如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2、永远也不要更新主键。实际上,因为主键除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

3、主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

4、主键应当由计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

以上内容参考:百度百科-主关键字、百度百科-外部码

1、创建主键测试表test_key_p,

create table test_key_p(id number, class_id number)

2、创建两一个主键测试表test_key_f,class_id字段作为test_key_p表的外键,

create table test_key_f(class_id number, class_name varchar2(20))

3、编写sql,添加主键、外键,

-- Create/Recreate primary, unique and foreign key constraints

alter table TEST_KEY_P add constraint p_key1 primary key (ID)

alter table TEST_KEY_P add constraint f_key2 foreign key (CLASS_ID) references test_key_f (CLASS_ID)

4、查看主键、外键信息,ID为primary即主码,CLASS_ID为foreign即外码,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9430326.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存