
修改一下
把
foreign key (BudNo) REFERENCES Building(BudNo),
foreign key (BudUnit) REFERENCES Building(BudUnit),
foreign key (RoomNo) REFERENCES Building(RoomNo),
修改为
foreign key (BudNo, BudUnit, RoomNo) REFERENCES Building(BudNo, BudUnit, RoomNo)
SQL 2008 Express 下测试通过。
1> create table Building2> (BudNo int check (BudNo>=1 and BudNo<=30),
3> BudUnit int check (BudUnit>=1 and BudUnit <=5),
4> RoomNo int,
5> Dno char(20),
6> RoomArea float not null,
7> RoomType char(20),
8> BudUnitCost float not null,
9> BudAllCost float not null,
10> PayDate date,
11> StructurePicture char(5),
12> ExpectStructurePicture char(5),
13> States char(10),
14> primary key(BudNo, BudUnit, RoomNo),
15> -- foreign key(Dno) REFERENCES Developer(Dno),
16> )
17> go
1> create table Contracts
2> (
3> Cno char(20) primary key,
4> BudNo int check (BudNo>=1 and BudNo<=30),
5> BudUnit int check (BudUnit>=1 and BudUnit <=5),
6> RoomNo int,
7> ConNo char(20),
8> Sno char(20),
9> EveryMonthMoney float,
10> CountMonth int,
11> Cdeadline date,
12> DownGold float,
13> Interests float,
14> CR char(20),
15> foreign key (BudNo, BudUnit, RoomNo) REFERENCES Building(BudNo, BudUnit, Roo
mNo)
16> -- foreign key (ConNo ) REFERENCES Consumer(ConNo),
17> -- foreign key (Sno ) REFERENCES Staff(Sno),
18> )
19> go
1>
因为患者编号是唯一的,患者姓名不是唯一的
外键其实就是表的主键,主键必须是唯一的
如果对于数据库而言,用C也是可以的,只不过相对来说A更合适
希望我的回答能帮助到你
1关系数据库应用数学方法来处理数据库。关系数据库系统是支持关系模型的数据库系统。关系模型中,实体以及实体间的联系都用关系来表示。在一个给定的应用领域中,所有实体以及实体之间联系的关系的集合构成一个关系数据库。关系数据库的型称为关系数据库模式,包括:若干域的定义;在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某时刻对应的关系的集合,通常就称为关系数据库。 2形式化定义:1域:域是一组具有相同数据类型的值的集合。2:笛卡尔积:域上的一种集合运算。可表示为一个二维表。3:关系:D1D2…Dn的子集叫做在域D1,D2,…Dn上的关系,表示为R(D1,D2,…,Dn) 这里R表示关系的名字,n是关系的目或度(属性,表中的列)。关系中的每个元素是关系中的元组(表中的行),通常用t表示。n=1时,为单元关系(或一元关系),n=2时,为二元关系。关系是笛卡尔积的有限子集,也是一个二维表。 若关系中的某一属性组的值能唯一标示一个元组,则称该属性组为候选码。有多个候选码时,选定一个为主码(主键)。 3设F是基本关系R的一个或一组属性,但不是关系R的码。Ks是基本关系的S主码,如果F与Ks相对应,则称F是R的外码(外键)。参照完整性:现实世界中实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述,这样就自然存在着关系与关系间的引用,一个参照完整性将两个表中相应的元组联系起来。参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应,则对于R中每个元组在F上的值必须为:或者为空(F中每个属性均为空),或者等于S中某个元组的主码值。 其实这个概念很模糊,其实说简单点,比如在学生选课关系中,学号是学生表主键,课号是课程表主键,学号和课号联合做选课表的主键,这都是实体完整性约束。 而选课表中,单独一个学号是外键、参照学生表学号,单独一个课号是外键,参照课程表课号,这都是参照完整性约束,比如课号的值只有1,但是你在选课表里取课号为1以外的值,就会出错,违反了参照完整性。
数据库中怎么设置"组合主码外码
主码 我们在建立数据库的时候,需要为每张表指定一个主码,主码也叫主键。
所谓主码就是在实体集中区分不同实体的候选码。
一个实体集中只能有一个主码,但可以有多个候选码。
外码,如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。
1、候选码:若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。
2、主码:主码指主关键字。主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。在两个表的关系中,主关键字用来在一个表中引用来自于另一个表中的特定记录。主关键字是一种唯一关键字,表定义的一部分。一个表的主键可以由多个关键字共同组成,并且主关键字的列不能包含空值。主关键字是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
3、全码:All-key关系模型的所有属性组组成该 关系模式的 候选码,称为全码。即所有属性当作一个码。若关系中只有一个候选码,且这个候选码中包含全部属性,则该候选码为全码
4、外码:外码是相对于内码而言的辞汇。在计算机科学及相关领域中,外码指的是“外在的‘经过学习之后,可直接了解的编码形式(例如:文字或语音符号)’”。
中文输入法对汉字的编码即属外码。常见的中文外码有仓颉码、行列码、大易码、呒虾米码、注音码、拼音码。
5、内码:内码是指计算机汉字系统中使用的二进制字符编码,是沟通输入、输出与系统平台之间的交换码,通过内码可以达到通用和高效率传输文本的目的。如ASCII
扩展资料:
主码的作用
1、保证实体的完整性;
2、加快数据库的 *** 作速度;
3、在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
4、ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。
参考资料来源:百度百科-候选码
参考资料来源:百度百科-全码
参考资料来源:百度百科-主码
参考资料来源:百度百科-外码
参考资料来源:百度百科-内码
主码是从候选码中挑出来的一个作为主码,主码和外部码提供了一种表示不同关系之间相互关联的手段。
数据库中码又称数据库主码,是数据库中唯一能标识一个记录值的内部记录标志符。
若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的真子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。
关系模式R中属性或属性组X并非R的候选码,但X是另一个关系模式的候选码,且X与R的主码对应,则称X是R的外部码,也称外码。
扩展资料:
在两个表的关系中,主码用来在一个表中引用来自于另一个表中的特定记录。主码表定义的一部分。一个表的主键可以由多个主码共同组成,并且主码的列不能包含空值。主码是可选的,并且可在 CREATE TABLE 或 ALTER TABLE 语句中定义。
一个表中只能有一个主键。如果在其他字段上建立主键,则原来的主键就会取消。主键的值不可重复,也不可为空(NULL)。
数据库中的外码约束指用于在两个表之间建立关系,需要指定引用主表的哪一列。对于存在外码约束的表,如果进行删除非空的外码,可能会出现错误。如果在外码约束的列中输入非 NULL 值,则此值必须在被引用的列中存在,否则将返回违反外码约束的错误信息。
扩展资料:
外码约束仅能引用位于同一服务器上的同一数据库中的表。数据库间的引用完整性必须通过触发器实现。一个表最多可包含 253 个外码约束。对于临时表不强制 外码约束。
有外码约束可以引用同一表中的其它列(自引用)。列级外码约束的 REFERENCES 子句仅能列出一个引用列,且该列必须与定义约束的列具有相同的数据类型。
表级外码约束的 REFERENCES 子句中引用列的数目必须与约束列列表中的列数相同。每个引用列的数据类型也必须与列表中相应列的数据类型相同。
以上就是关于关于数据库外码设置问题全部的内容,包括:关于数据库外码设置问题、数据库外码问题、数据库 1、简述你所知道的关系数据库。 2、关系的形式话定义。 3、简述外码及参照完备性。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)