當前位置:首頁 » 操作系統 » 資料庫主鍵和外鍵

資料庫主鍵和外鍵

發布時間: 2022-03-31 00:20:00

資料庫中 主鍵與外鍵的區別

主鍵:
[編輯本段]概念
主關鍵字(主鍵,primary
key)是被挑選出來,作表的行的惟一標識的候選關鍵字。一個表只有一個主關鍵字。主關鍵字又可以稱為主鍵。
主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵。
[編輯本段]作用
:1)保證實體的完整性;
2)加快資料庫的操作速度
3)
在表中添加新記錄時,ACCESS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復。
4)
ACCESS自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的記錄。
[編輯本段]特點
1)
一個表中只能有一個主鍵。如果在其他欄位上建立主鍵,則原來的主鍵就會取消。在ACCESS中,雖然主鍵不是必需的,但最好為每個表都設置一個主鍵。
2)主鍵的值不可重復,也不可為空(NULL)。
外鍵:
如果公共關鍵字在一個關系中是主關鍵字,那麼這個公共關鍵字被稱為另一個關系的外鍵。由此可見,外鍵表示了兩個關系之間的聯系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字。
以上是摘抄的,簡單來說,主鍵就是一個關系中作為標識用的,而外鍵是其他關系中的屬性,使用外鍵可避免冗餘。

⑵ 資料庫表中的主鍵和外鍵

主外鍵的存在是依託兩個實體之間的關系而存在的;
比如班級與學生的關系:
一個班級可以有多個學生,並且一個學生只能屬於一個班級,這就是一對多的關系;
那麼設計資料庫的時候就應該在學生表內存放班級的ID作為外鍵,為什麼不在班級表內放學生呢?
因為,你想一想班級表內如果放學生那麼記錄可能就是這樣:
1班ID 1班 xx同學id
1班ID 1班 xx同學id
..
這是不允許的,班級表內班級為主鍵,是唯一的不允許相同記錄的;
下面簡單給你講下大概建成的表結構
--建班級表
create table class(
classid int primary key,--定義班級ID為主鍵
classname varchar(15)
)
--建學生表
create table students(
studentid int primary key,--定義學生ID為主鍵
classid int ,--外鍵值,跟班級表classid 屬性類型相同
stuname varchar(20),--學生姓名
---定義外鍵
foreign key(classid) references class(classid) --本表classid是基於class表classid的外鍵
)
---------
如上定義了主外鍵後,兩個表間的關系就是一對多的關系了,並且學生表內的classid必須依託班級表的classid存在,也就是說外鍵必須要主鍵存在的時候才能創建,例如:
--在班級表為空的情況往學生表插入一條記錄是不允許的:
insert into students(studentid,classid,stuname)values(1,1,'小明')
系統會拋出異常提示主鍵表班級表內班級ID不存在這樣是不允許插入的;
必須要先往班級表內插入一條記錄:
insert into class(classid,classname)values(1,'一班')
後才能執行插入前面一條往學生表插入信息的語句..

--------------可了解一些了?真累啊.

⑶ 資料庫的主鍵和外鍵有什麼區別

主鍵:
概念
主關鍵字(主鍵,primary key)是被挑選出來,作表的行的惟一標識的候選關鍵字。一個表只有一個主關鍵字。主關鍵字又可以稱為主鍵。 主鍵可以由一個欄位,也可以由多個欄位組成,分別成為單欄位主鍵或多欄位主鍵。
作用
1)保證實體的完整性;
2)加快資料庫的操作速度
3) 在表中添加新記錄時,ACCESS會自動檢查新記錄的主鍵值,不允許該值與其他記錄的主鍵值重復。
4) ACCESS自動按主鍵值的順序顯示表中的記錄。如果沒有定義主鍵,則按輸入記錄的順序顯示表中的記錄。
特點
1) 一個表中只能有一個主鍵。如果在其他欄位上建立主鍵,則原來的主鍵就會取消。在ACCESS中,雖然主鍵不是必需的,但最好為每個表都設置一個主鍵。
2)主鍵的值不可重復,也不可為空(NULL)。

外鍵:

如果公共關鍵字在一個關系中是主關鍵字,那麼這個公共關鍵字被稱為另一個關系的外鍵。由此可見,外鍵表示了兩個關系之間的聯系。以另一個關系的外鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外鍵又稱作外關鍵字。

以上是摘抄的,簡單來說,主鍵就是一個關系中作為標識用的,而外鍵是其他關系中的屬性,使用外鍵可避免冗餘。

⑷ 資料庫表中主鍵和外鍵的含義

主鍵(Primary
key):
也稱為主碼或主關鍵字,用於惟一地確定一個元組的屬性或屬性組(復合主碼)。每個關系都有一個並且只有一個主碼。
外鍵(Foreign
Key):也稱為外碼或外部關鍵字。如果一個屬性集不是所在關系的關鍵字,但是是其他關系的關鍵字,則該屬性集稱為外部關鍵字。在關系資料庫中可以通過外鍵使兩個關系關聯,這種聯系通常是一對多(1:n)的,其中主(父)關系(1方)稱為被參照關系,從(子)關系(n方)稱為參照關系。

sql的主鍵和外鍵怎麼設

一、主鍵是能確定一條記錄的唯一標識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復,所以,身份證號是主鍵。
外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,那他就可以是A表的外鍵。
主鍵和外鍵約束的方法:
create table Student --建表格式:create table 自定義的表名
( --欄位名一般為有一定意義的英文
StudentName nvarchar(15), -- 格式:欄位名類型()括弧裡面的是允許輸入的長度
StudentAge int, --int型的後面不需要接長度
StudentSex nvarchar(2) --最後一個欄位後面不要逗號
)
--在創建表時就可以對欄位加上約束:
create table Student
(
StudentNo int PRIMARY KEY IDENTITY(1,1), --加主鍵約束,還有標識列屬性(兩者構成實體完整性)
StudentName nvarchar(15) not null, --加非空約束,不加"not null" 默認為:可以為空
StudentSchool text(20) FOREIGN KEY REFERENCES SchoolTable(SchoolName), --加外鍵約束,格式:FOREIGN KEY REFERENCES 關聯的表名(欄位名)
StudentAge int DEFAULT ((0)), --加默認值約束
StudentSex nvarchar(2) CHECK(StudentSex=N'男' or StudentSex=N'女') --加檢查約束,格式:check (條件表達式)
)
--如果在表創建好了以後再加約束,則格式分別為:
-- 主鍵:
alter table 表名
add constraint PK_欄位名--"PK"為主鍵的縮寫,欄位名為要在其上創建主鍵的欄位名,'PK_欄位名'就為約束名
primary key (欄位名) --欄位名同
--唯一約束:
alter table 表名
add constraint UQ_欄位名
unique (欄位名
--外鍵約束:
alter table 表名
add constraint FK_欄位名--"FK"為外鍵的縮寫
foreign key (欄位名) references 關聯的表名(關聯的欄位名) --注意'關聯的表名'和'關聯的欄位名'
alter table 表A add constraint FK_B foreign key (ticket_no) references 表B(ticket_no)
alter table 表A add constraint FK_C foreign key (person_no) references 表C(person_no)
alter table 成績表 add constraint FK_StudentNo foreign key (StudentNo) references Student(StudentNo)
ON UPDATE CASCADE ON DELETE CASCADE
級聯更新,級聯刪除,這樣在刪除主表Student時,成績表中該學生的所有成績都會刪除。
--檢查約束:
alter table 表名
add constraint CK_欄位名
check (條件表達式) --條件表達式中的條件用關系運算符連接
--默認值約束:
alter table 表名
add constraint DF_欄位名
default '默認值' for 欄位名--其中的'默認值'為你想要默認的值,注意'for'
--刪除創建的約束:
alter table 表名
drop constraint 約束名--約束名為你前面創建的如:PK_欄位這樣的約束名
--注意:如果約束是在創建表的時候創建的,則不能用命令刪除
--只能在'企業管理器'裡面刪除
-- 獲取SqlServer中表結構
SELECT syscolumns.name,systypes.name,syscolumns.isnullable,
syscolumns.length
FROM syscolumns,systypes
WHERE syscolumns.xusertype = systypes.xusertype
AND syscolumns.id = OBJECT_ID('Student')
-- 單獨查詢表遞增欄位
SELECT [name] FROM syscolumns WHERE
id = OBJECT_ID(N'Student') AND COLUMNPROPERTY(id,name,'IsIdentity')=1
-- 獲取表主外鍵約束
EXEC sp_helpconstraint 'StuResults'
-- 查詢表主鍵外鍵信息
SELECT sysobjects.id objectId,OBJECT_NAME(sysobjects.parent_obj) tableName,
sysobjects.name constraintName, sysobjects.xtype AS constraintType,
syscolumns.name AS columnName
FROM sysobjects INNER JOIN sysconstraints
ON sysobjects.xtype in('C', 'F', 'PK', 'UQ', 'D')
AND sysobjects.id = sysconstraints.constid
LEFT OUTER JOIN syscolumns ON sysconstraints.id = syscolumns.id
WHERE OBJECT_NAME(sysobjects.parent_obj)='StuResults'

⑹ 資料庫的主鍵和外鍵是什麼

主鍵是唯一標識整行記錄, 即值不可重復,而且可以設置自增值,不可為空,外鍵實際是另一個表的主鍵,用來關聯查詢的。

⑺ 資料庫主鍵和外鍵怎麼寫

舉例:設置主鍵
create table 學生表
(學號, char(12) primary key not null,
姓名, char(8) not null,
班級編號, char(10) foreign key references 班級表(班級編號)
)
第一列學號設為主鍵,第三列班級編號為外鍵,參考班級表中的班級編號列。

⑻ 資料庫中主鍵和外鍵是幹嘛用的

為了保證兩個表某些數據的一致性。作為外鍵,它裡面的數據必須是在主建中所存在的。舉個例子:
有兩個關系:
student(s#,sname,d#),即學生這個關系有三個屬性:學號,姓名,所在系別
dep(d#,dname),即院系有兩個屬性:系號、系名

則s#、d#是主鍵,也是各自所在關系的唯一候選鍵,d#是student的外鍵。

⑼ 資料庫的主鍵和外鍵

(1)誠如你所說,自增ID做一般做主鍵,但一般不作為唯一標示的依據,可以加一列比如員工編碼(添加數據的時候要確保唯一)作為判斷是否為統一員工的依據,至於數據重復,要在添加數據的時候做好嚴重,如果已經存在相同的編碼,則不能再次插入,確保數據的唯一性
(2)其實跟第一個問題是一回事,添加一個欄位用戶編碼就解決問題了,至於delphi有哪個控制項可以實現這個功能這個問題,這根控制項沒有關系,只要在資料庫設置ID自動增長就可以了, 管理員在界面上添加信息時候,用戶編碼可以根據一定的規則確保唯一,可以有客戶輸入,也可以有程序自動生成,但必須驗證其唯一性。你說的部門ID的問題看看dephi中有沒有類似於下拉框的空間,我也好久沒用不記得了,如果有的話直接使用就可以了,

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:520
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:867
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91