数据库中的外码
1外码是另外⼀个表的主码;
2插⼊数据是必须先给所关联外码的那个表插⼊数据;
3报错的原因是插⼊的某个属性在所关联外码表中找不到。
外码的意义是:保证两个表之间的数据的⼀致性,例如:职⼯表中的部门号,必须在部门表中存在。create table 部门(
部门号 char(20) primary key not null,
名称 char(20) constraint UK_dName unique not null ,
经理名 char(20),
第 1 页
污水处理器设备找瑞谱斯环保
最近60分钟前有人拨打电话咨询问题
点击立即咨询,了解更多详情
咨询
贵州瑞谱斯环保科技 广告
地址 varchar(20),
电话号码 char(20)
)
drop table 部门
create table 职⼯(
职⼯号 char(20) primary key,
姓名 char(20) not null,
年龄 smallint check (年龄>=18 and 年龄<=60),
职务 char(20),
⼯资 int not null check(⼯资>=800),
部门号 char(20)
第 2 页
FOREIGN KEY (部门号) REFERENCES 部门(部门号)--直接建⽴外码
)
drop table 职⼯
--新增关系表属性
--新增表的外码
--⽅法⼆:
alter table 职⼯
add constraint S_worker
foreign key(部门号)
references 部门(部门号)
第 3 页
百度文库
搜索
数据库调动部门但有外码
展开全文
免费读数据库中的外码全文
APP
打印
导出为WORD
导出为PDF
发送至微信
APP打开
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
页数说明:当前展示页数为百度文库重新排版后结果,原始文档共1页
相关文档
数据库添加外码
免费获取全文
书目数据库中3种常用代码的取码方法
免费获取全文
区块链中数据库哈希码的延迟更新[发明专利]
免费获取全文
1数据库系统的外模式在SQL中称为
免费获取全文
实验一空间数据库的创建与数据导入
免费获取全文
国有企业风险框架和风控数据库指导手册模版
106人正在看
超详细的MySQL工作原理体系结构
53人正在看
TCGA数据分析系列:GEPIA2数据库
137人正在看
数据库实验报告(全)
56人正在看
查看更多
为您精选
数据库中的外码
会员文档328篇
人气好文
数据库添加外码
2717人阅读
书目数据库中3种常用代码的取码方法
1396人阅读
热门TOP
区块链中数据库哈希码的延迟更新[发明专利]
2323人阅读
1数据库系统的外模式在SQL中称为
1544人阅读
立即开通VIP
基于你的浏览为你整理资料合集
数据库调动部门但有外码
文件夹
数据库添加外码 - 百度文库
42分 3717阅读 值得一读
数据库设置外码实例 - 百度文库
40分 1487阅读 本周下载TOP
mysql创建表里主码和外码_SQL语言创建表时候怎么定义主码和外码
45分 2320阅读
剩余16篇精选文档
APP内一键获取全部合集
4901人已获取
工具
收藏
我们在建立数据库的时候,需要为每张表指定一个主码,主码也叫主键。
所谓主码就是在实体集中区分不同实体的候选码。
一个实体集中只能有一个主码,但可以有多个候选码。
必须注意两点:
1主码的选择必须慎重。
例如:人的姓名是不可以做主码的,因为可能有多个人重名,而身份z可以做主码。
2主码的选择应该是那些从不或极少变化的属性。
例如:一个人的地址就不应该作为主码的一部分,因为它很可能变化。
不必须,一般情况下都是不加外键的,外键靠应用中维护。举一个例子
教师表中有教师ID(主键)教师姓名
学生表有学生ID (主键) 学生姓名 教师ID
学生表中的教师ID应该是学生表的外键,不过正常情况不会设置成外键
因为
假如教师表中有一条记录 编号 1 ,教师姓名 ,李老师
学生表中也有一条记录 学生ID 1 ,学生姓名 小明 ,教师ID 1
当学生表存在这样的记录的时候,教师表中 编号1的李老师是无法被删除的,因为有其他的表再引用这个编号1的老师。这样修改测试很麻烦。
正确的做法,是不设成外键
当应用程序中需要添加一条学生记录的时候,老师这一项将不会要求用户自己填写,而是做成功能按钮,例如单选按钮,下拉列表框。保证往数据库中存储的却是是李老师就行,这就是一楼所说的外键靠应用中维护。
一楼正解
目标关系中没有已存在的主码值。
参照完整性规则:若属性或属性组F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值必须为:
(1)空值,F的每个属性值均为空值。
(2)S中某个元组中的主键值(主码值)。
即参照的关系中的属性值必须能够在被参照关系找到或者取空值,否则不符合数据库的语义。在实际 *** 作时如更新、删除、插入一个表中的数据,通过参照引用相互关联的另一个表中的数据,来检查对表的数据 *** 作是否正确,不正确则拒绝 *** 作。
扩展资料:
参照完整性则是相关联的两个表之间的约束,具体的说,就是从表中每条记录外键的值必须是主表中存在的,因此,如果在两个表之间建立了关联关系,则对一个关系进行的 *** 作要影响到另一个表中的记录。
如果实施了参照完整性,那么当主表中没有相关记录时,就不能将记录添加到相关表中。也不能在相关表中存在匹配的记录时删除主表中的记录,更不能在相关表中有相关记录时,更改主表中的主键值。
参考资料来源:百度百科-参照完整性
主码是从候选码中挑出来的一个作为主码,主码和外部码提供了一种表示不同关系之间相互关联的手段。
数据库中码又称数据库主码,是数据库中唯一能标识一个记录值的内部记录标志符。
若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。
关系模式R中属性或属性组X并非R的候选码,但X是另一个关系模式的候选码,且X与R的主码对应,则称X是R的外部码,也称外码。
扩展资料:
在两个表的关系中,主码用来在一个表中引用来自于另一个表中的特定记录。主码表定义的一部分。一个表的主键可以由多个主码共同组成,并且主码的列不能包含空值。主码是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。主键的值不可重复,也不可为空(NULL)。
外码必须是另一个关系的主码, 或者 有唯一约束的列。
否则创建将要失败!
-- 创建测试主表 无主键
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);
表已更改。
以上就是关于数据库调动部门但有外码全部的内容,包括:数据库调动部门但有外码、1.什么是主码什么是侯选码什么是外码、数据库设计的问题设计关系型数据库时给表加了主键是不是必须要有外键的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)