㈠ 如何設置資料庫中的外鍵
外鍵的設計初衷是為了在資料庫端保證對邏輯上相關聯的表數據在操作上的一致性與完整性。
優點:
精簡關聯數據,減少數據冗餘
避免後期對大量冗餘處理的額外運維操作。
降低應用代碼復雜性,減少了額外的異常處理
相關數據管理全由資料庫端處理。
增加文檔的可讀性
特別是在表設計開始,繪制 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版本的