外码必须是另一个关系的主码吗

神界危机2023-04-25  71

外码必须是另一个关系的主码,  或者 有唯一约束的列。

否则创建将要失败!

-- 创建测试主表  无主键

CREATE TABLE test_main2 (

  id      INT   NOT  NULL,

  value   VARCHAR(10)

);

-- 创建测试子表 

CREATE TABLE test_sub2 (

  id      INT   NOT  NULL,

  main_id INT,

  value   VARCHAR(10),

  PRIMARY KEY(id)  

);

-- 插入测试主表数据

INSERT INTO test_main2(id, value) VALUES (1, 'ONE');

INSERT INTO test_main2(id, value) VALUES (2, 'TWO');

-- 插入测试子表数据

INSERT INTO test_sub2(id, main_id, value) VALUES (1, 1, 'ONEONE');

INSERT INTO test_sub2(id, main_id, value) VALUES (2, 2, 'TWOTWO');

SQL> ALTER TABLE test_sub2

  2     ADD CONSTRAINT main_id_cons2

  3     FOREIGN KEY (main_id)

  4     REFERENCES  test_main2(id);

   REFERENCES  test_main2(id)

                          

第 4 行出现错误:

ORA-02270: 此列列表的唯一或主键不匹配

默认情况下,无法创建外键

需要创建 unique 约束

SQL> ALTER TABLE test_main2

  2     ADD CONSTRAINTS t_unique_id2

  3         UNIQUE (id);

表已更改。

unique 约束创建完毕后,外键创建成功。

SQL> ALTER TABLE test_sub2

  2     ADD CONSTRAINT main_id_cons2

  3     FOREIGN KEY (main_id)

  4     REFERENCES  test_main2(id);

表已更改。

汉字输入码属于外码。不同的输入方法,形成了不同的汉字外码。常见的输入法有以下几类:

按汉字的排列顺序形成的编码(流水码):如区位码;

按汉字的读音形成的编码(音码):如全拼、简拼、双拼等;

按汉字的字形形成的编码(形码):如五笔字型、郑码等;

按汉字的音、形结合形成的编码(音形码):如自然码、智能ABC。

输入码在计算机中必须转换成机内码,才能进行存储和处理。

外码指的是“外在的‘经过学习之后,可直接了解的编码形式(例如:文字或语音符号)’”。

中文输入法对汉字的编码即属外码。常见的中文外码有仓颉码、行列码、大易码、呒虾米码、注音码、拼音码。

扩展资料:

仓颉输入法是一种常用的中文输入法,由有“中文电脑之父”美誉的朱邦复先生于1976年创制。初期只有繁体中文版本,原名“形意检字法”,用以解决电脑处理汉字的问题,包括汉字输入、字形输出、内码存储、汉字排序等。

朱邦复发明此输入法时正值他为三军大学发展中文通信系统之际,时任三军大学校长的蒋纬国为纪念上古时期仓颉造字之精神,乃于1978年将此输入法重新定名为“仓颉输入法”。

仓颉输入法适用于多种平台,主流的中文操作系统和大部分电子辞典均有内置。一些字典、辞典或在线中文字典亦采用仓颉编码作为检索工具。

SQL语言创建表时候用Primary Key(属性名)定义主码,用Foreign Key(属性名)定义外码。

主码是一种唯一关键字,表定义的一部分。一个表的主码可以由多个关键字共同组成,并且主码的列不能包含空值。主码是可选的,并且可在 CREATE TABLE语句中用Primary Key(属性名)定义。

将一个表的值放入第二个表来表示关联,所使用的值是第一个表的主键值(在必要时可包括复合主键值)。此时,第二个表中保存这些值的属性称为外键,用Foreign Key(属性名)定义。

如:

CREATE TABLE Customer

(SID integer,

CID integer,

Last_Name varchar(30),

First_Name varchar(30),

PRIMARY KEY (SID),Foreign Key(CID 名));

扩展资料:

主码不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。实际上,因为主码除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主码需要更新,则说明主码应对用户无意义的原则被违反了。

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

1、内码:根据国标码的规定,每一个汉字都有了确定的二进制代码,但是这个代码在计算机内部处理时会与ASCII码发生冲突,为解决这个问题,把国标码的每一个字节的首位上加1。由于ASCII码只用7位,所以,这个首位上的“1”就可以作为识别汉字代码的标志,计算机在处理到首位是“1”的代码时把它理解为是汉字的信息,在处理到首位是“0”的代码时把它理解为是ASCII码。

2、外码:也叫输入码,是用来将汉字输入到计算机中的一组键盘符号。英文字母只有26个,可以把所有的字符都放到键盘上,而使用这种办法把所有的汉字都放到键盘上,是不可能的。所以汉字系统需要有自己的输入码体系,使汉字与键盘能建立对应关系。

3、交换码:计算机内部处理的信息,都是用二进制代码表示的,汉字也不例外。而二进制代码使用起来是不方便的,于是需要采用信息交换码。我国标准总局1981年制定了中华人民共和国国家标准GB2312--80《信息交换用汉字编码字符集--基本集》,即国标码。

4、ASCII是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。

1、ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。请注意,ASCII是American Standard Code for Information Interchange缩写,而不是ASC2,有很多人在这个地方产生误解。

2、在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)、以及0、1等数字还有一些常用的符号(例如、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混乱,那么大家就必须使用相同的编码规则,于是美国有关的标准化组织就出台了ASCII编码,统一规定了上述常用符号用哪些二进制数来表示。

主码和外码是用来实现参照完整性的,外码的数据项需参照主码的数据项来操作。具体实现是在创建数据库时为表间创立关系。如:

三个关系:

学生信息表(学号、姓名、性别、出生年月、籍贯、所属学院)

//学号

是主键(主码

课程表(课程号,课程名称,学分)

//课程号

是主键(主码

成绩表(学号,课程号,成绩)

//学号

是外码;课程号

是外码

“成绩表”(从表)的学号参照“学生信息表”(主表)的学号来录入。1、也就是主表里面没有的学号,从表里面不能有,外码参照主码录入;2、级联操作,即当删除、修改某个主表里面的学号时,从表里面的那个学号会相应的自动删除、修改。外码参照主码操作。

课程号的参照关系同理。

主码,候选码,外码的联系和区别如下:

1、若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。

2、若一个关系有多个候选码,其中任何一个都可以做主码,主码的诸属性就称为主属性。

3、一个表中如果有一个字段,存储另外一个表的主键,这个字段就是外键,又称外码。

码是数据系统中的基本概念。所谓码就是能唯一标识实体的属性,他是整个实体集的性质,而不是单个实体的性质。它包括超码,候选码,主码。如果K是一个超码,那么K的任意超集也是超码,也就是说如果K是超码,那么所有包含K的集合也是超码。所以候选码是最小超码,它们的任意真子集都不能成为超码。如果K是超码,那么所有包含K的集合都不能是候选码从多个候选码中任意选出一个做为主码,如果候选码只有一个,那么候选码就是主码。

一样。外码约束和外键约束是一样的,两者没什么区别。外码约束外键 (Foreign Key)约束:实施参照完整性约束。表中某列值只能引用其它表的主键列或唯一键列,参照完整性含义。外码约束或外键约束 foreign key指的是多表之间的,可以保护数据。

以上就是关于外码必须是另一个关系的主码吗全部的内容,包括:外码必须是另一个关系的主码吗、什么是外码求解答、什么是外码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

转载请注明原文地址:https://juke.outofmemory.cn/read/3670934.html

最新回复(0)