㈠ 如何设置数据库中的外键
外键的设计初衷是为了在数据库端保证对逻辑上相关联的表数据在操作上的一致性与完整性。
优点:
精简关联数据,减少数据冗余
避免后期对大量冗余处理的额外运维操作。
降低应用代码复杂性,减少了额外的异常处理
相关数据管理全由数据库端处理。
增加文档的可读性
特别是在表设计开始,绘制 ER 图的时候,逻辑简单明了,可读性非常强。
缺点:
性能压力
外键一般会存在级联功能,级联更新,级联删除等等。在海量数据场景,造成很大的性能压力。比如插入一条新记录,如果插入记录的表有 10 个外键,那势必要对关联的 10 张表逐一检查插入的记录是否合理,延误了正常插入的记录时间。并且父表的更新会连带子表加上相关的锁。
其他功能的灵活性不佳
比如,表结构的更新等。
㈡ 数据库中怎么设置"组合主码外码
数据库中怎么设置"组合主码外码
主码 我们在建立数据库的时候,需要为每张表指定一个主码,主码也叫主键。
所谓主码就是在实体集中区分不同实体的候选码。
一个实体集中只能有一个主码,但可以有多个候选码。
外码,如果一个关系中的一个属性是另外一个关系中的主码则这个属性为外码。
㈢ 数据库表关系主外键设置
S的主键设为:学号
C的主键设为:课程号
SC的主键设为:学号、课程号
设置“学号”外键,S为主表,SC为从表;
设置“课程号”外键,C为主表,SC为从表;
㈣ SQL语言创建表时候怎么定义主码和外码
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),ForeignKey(CID名));
(4)数据库如何设置外码关系名扩展阅读:
主码不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。实际上,因为主码除了唯一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主码需要更新,则说明主码应对用户无意义的原则被违反了。
主码应当由计算机自动生成。如果由人来对主码的创建进行干预,就会使它带有除了唯一标识一行以外的意义。一旦越过这个界限,就可能产生人为修改主码的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。
㈤ 用SQL SERVER 如何在建好表后添加外码SQL语句怎么写呀
1、打开SQL,选择“WINDOWS身份验证”,点击连接。在左边的框条中找到“数据库“,右击选择”新建数据库“,建立名为”test“的数据库,其他默认。可以在数据库下找到新建的test。
㈥ 关于数据库外码设置问题
修改一下
把
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>createtableBuilding
2>(BudNointcheck(BudNo>=1andBudNo<=30),
3>BudUnitintcheck(BudUnit>=1andBudUnit<=5),
4>RoomNoint,
5>Dnochar(20),
6>RoomAreafloatnotnull,
7>RoomTypechar(20),
8>BudUnitCostfloatnotnull,
9>BudAllCostfloatnotnull,
10>PayDatedate,
11>StructurePicturechar(5),
12>ExpectStructurePicturechar(5),
13>Stateschar(10),
14>primarykey(BudNo,BudUnit,RoomNo),
15>--foreignkey(Dno)REFERENCESDeveloper(Dno),
16>)
17>go
1>createtableContracts
2>(
3>Cnochar(20)primarykey,
4>BudNointcheck(BudNo>=1andBudNo<=30),
5>BudUnitintcheck(BudUnit>=1andBudUnit<=5),
6>RoomNoint,
7>ConNochar(20),
8>Snochar(20),
9>EveryMonthMoneyfloat,
10>CountMonthint,
11>Cdeadlinedate,
12>DownGoldfloat,
13>Interestsfloat,
14>CRchar(20),
15>foreignkey(BudNo,BudUnit,RoomNo)REFERENCESBuilding(BudNo,BudUnit,Roo
mNo)
16>--foreignkey(ConNo)REFERENCESConsumer(ConNo),
17>--foreignkey(Sno)REFERENCESStaff(Sno),
18>)
19>go
1>
㈦ sql,如何用sql语句对一个已经编辑好的表在设置主码和外码
sql中的主码和外码,属于索引,SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQLServer系统的性能,加快数据的查询速度与减少系统的响应时间
创建索引的语法:
CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_name
ON{table_name|view_name}[WITH[index_property[,....n]]
说明:
UNIQUE:建立唯一索引。
CLUSTERED:建立聚集索引。
NONCLUSTERED:建立非聚集索引。
Index_property:索引属性。
UNIQUE索引既可以采用聚集索引结构,也可以采用非聚集索引的结构,如果不指明采用的索引结构,则SQLServer系统默认为采用非聚集索引结构。
删除索引语法:
DROPINDEXtable_name.index_name[,table_name.index_name]
说明:table_name:索引所在的表名称。
index_name:要删除的索引名称。
修改索引的语法:
ALTER INDEX命令在其用来做什么方面多少有些欺骗性。截止到现在,ALTER命令总是与修改对象的定义有关。例如ALTER表以添加或禁用约束和列。ALTER INDEX是不同的-该命令与维护有关,而与结构完全不相干。如果需修改索引的组成,那么只能DROP然后CREATE索引,或者用DROP_EXISTING=ON选项CREATE并使用索引。
ALTER INDEX {<name of index> | ALL}
ON<table or view name>
{ REBUILD
[[ WITH (
[PAD_INDEX = {ON | OFF}]
| [[,] FILLFACTOR = <fillfactor>
| [[,] SORT_IN_TEMPDB = { ON | OFF }]
| [[,] IGNORE_DUP_KEY = { ON | OFF }]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
| [[,] ONLINE = { ON| OFF }]
| [[,] ALLOW_ROW_LOCKS = { ON | OFF }]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF }]
| [[,] MAXDOP = <max degree of parallelism>
)]
|[ PARTITION = <partition number>
[ WITH (< partition rebuild index option>
[,...N])]]]
| DISABLE
| REORGANIZE
[ PARTITION = <partition number> ]
[ WITH (LOB_COMPACTION = { ON | OFF })]
| SET ([ ALLOW_ROW_LOCKS = { ON | OFF} ]
| [[,] ALLOW_PAGE_LOCKS = { ON | OFF } ]
| [[,] IGNORE_DUP_KEY = { ON | OFF } ]
| [[,] STATISTICS_NORECOMPUTE = { ON | OFF }]
)
}[;]
㈧ 怎么设置sae上的mysql数据库的外码
SAE的数据库不能用于外部连接,你要内部连接就得用全局常量
数据库名的常量是 SAE_MYSQL_DB
你装应用以及代码连接数据库时都得用SAE_MYSQL_DB作为数据库名,服务器环境会根据你的账号解析为你实际的数据库名app_swzlzx
㈨ 用SQL SERVER 如何在建好表后添加外码SQL语句怎么写呀
--修改主键
ALTER
TABLE
tablename
--修改表
ADD
CONSTRAINT
tb_PRIMARY
PRIMARY
KEY
CLUSTERED
(列名)
/*将你要设置为主键约束的列*/
--修改约束ALTER
TABLE
销售表
--修改表
ADD
CONSTRAINT
ck_sl
--创建检查约束
CHECK
(数量
>=
1
and
数量
<=
10000)
--添加约束条件
--修改外键alter
table
表名
add
constraint
外键名称
foreign
key
(字段)
references
关系表名
(关系表内字段)
㈩ 数据库操作问题!急救!如何设置外码SC表中的Sno列和Cno列为外码,详细如下
空白处右键,选择 关联 ,弹出再点击 “...”,再在弹窗中设置主外键关系。
主键在左表,外键是友表。也就是你说的 码。
。。。教学还是用的sql05版本的