1. 資料庫中主鍵和外鍵是幹嘛用的
外鍵的設計初衷是為了在資料庫端保證對邏輯上相關聯的表數據在操作上的一版致性與完整性權。
優點:
精簡關聯數據,減少數據冗餘
避免後期對大量冗餘處理的額外運維操作。
降低應用代碼復雜性,減少了額外的異常處理
相關數據管理全由資料庫端處理。
增加文檔的可讀性
特別是在表設計開始,繪制 ER 圖的時候,邏輯簡單明了,可讀性非常強。
缺點:
性能壓力
外鍵一般會存在級聯功能,級聯更新,級聯刪除等等。在海量數據場景,造成很大的性能壓力。比如插入一條新記錄,如果插入記錄的表有 10 個外鍵,那勢必要對關聯的 10 張表逐一檢查插入的記錄是否合理,延誤了正常插入的記錄時間。並且父表的更新會連帶子表加上相關的鎖。
其他功能的靈活性不佳
比如,表結構的更新等。
2. 主鍵和外鍵的作用
主鍵和外鍵的作用:
1、主鍵保證的是數據的唯一性,是能夠唯一的標識一組數據的數據元素;比如說:學號,姓名,年齡,橡仿性別,課程號課程中學號是唯一的,所以可以設它為主鍵;
2、外鍵保證的是數據的完整性。外鍵:一組數據的主鍵是另一組數據的的元素;主鍵約束了外鍵所在表中不能存在主鍵類之外的值;外鍵用於與另一張表的關聯。是能確定另一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,就可以是A表的外鍵。
外鍵取值規則:空值或參照的主鍵值。
(1)插入非空值時,如果主鍵表中沒有這個值,則不能插入。
(2)更新時,不能改為主鍵表中沒有的值。
(3)刪除主鍵表記錄時,可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除。
(4)更新主鍵記錄時,同樣有級聯更新和拒絕執行的選擇。
SQL的主鍵和外鍵就是起約束作用。
(2)aspnet資料庫主外鍵有什麼用擴展閱讀:
建立主鍵應該遵循的原則
1、主鍵應當是對用戶沒有意義的。如果用戶看到了一個表示多對多關系的連接表中的數據,並抱怨它沒有什麼用處,那就證明它的主鍵設計地很好。
2、永遠也不要更新主鍵。實際上,因為主鍵除了唯一地標識一行之外,再沒有其他的用途了,所以也就沒有理由去對它更新。如果主鍵需要更新,則說明主鍵應對用戶無意義的原則被違反了。
註:這項原則對於那些經絕答常需要在數據轉換或多資料庫合並時進行數據整理的數據並不適用。
3、主鍵不應包含動態變化的數據,如時間戳、創建時間列、修改時間列等。
4、主鍵應當由計算機自動生成。如果由人來對主鍵的創建進行干預,就會使它帶有除了唯一標識一行以外的意義。一旦越過這個界限,就可能產生人為修改主鍵的動機,這樣,這種系統用來鏈接記錄行、管理記錄行的關鍵手段就會落入不了解資料庫設計的人的手中。
外鍵的使用原則
1、 為關聯欄位創建外並如慧鍵。
2、 所有的鍵都必須唯一。
3、避免使用復合鍵。
4、外鍵總是關聯唯一的鍵欄位。
3. 資料庫中主鍵和外鍵的作用
主鍵是對表的約束,保證數據的唯一性!
外鍵是建立表於表之間的聯系,方便程序的編寫!
主鍵和外鍵是把多個表組織為一個有效的關系資料庫的粘合劑。主鍵和外鍵的設計對物理資料庫的性能和可用性都有著決定性的影響。
必須將資料庫模式從理論上的邏輯設計轉換為實際的物理設計。而主鍵和外鍵的結構是這個設計過程的症結所配睜在。一旦將所設計的資料庫用於了生產禪賣含環境,就很難對這些鍵進行修改,所賀笑以在開發階段就設計好主鍵和外鍵就是非常必要和值得的。
希望能幫你 呵呵
4. 外鍵的作用是什麼
外鍵的作用:
保持數據一致性,完整性,主要目的是控制存儲在外鍵表中的數據。 使兩張表形成關聯,外鍵只能引用外表中的列的值或使用空值。
阻止執行:
1、從表插入新行,其外鍵值不是主表的主鍵值便阻止插入;
2、從表修改外鍵值,新值不是主表的主鍵值便阻止修改;
3、主表刪除行,其主鍵值在從表裡存在便阻止刪除(要想刪除,必須先刪除從表的相關行);
4、主表修改主鍵值,舊值在從表裡存在便阻止修改(要想修改,必須先刪除從表的相關行)。
級聯執行:
1、主表刪除行,連帶從表的相關行一起刪除;
2、主表修改主鍵值,連帶從表相關行的外鍵值一起修改。兩種方法提供給用戶選擇。無論選取哪種方法,從表裡都不會有多餘行。從另一個角度理解,用拒絕同一事物在從表中的標志與主表不一致來實現與主表中的標志一致。
(4)aspnet資料庫主外鍵有什麼用擴展閱讀:
外鍵使用原則:
1、 為關聯欄位創建外鍵。
2、 所有的鍵都必須唯一。
3、避免使用復合鍵。
4、外鍵總是關聯唯一的鍵欄位。
阻止執行和級聯執行的兩種實現方法,通過下面方式選擇:
1、界面:設級聯更新、級聯刪除兩個選擇方框,選取則級聯執行、不選取則阻止執行;
2、命令:設E)kSCM)E、RESTRICT兩個可選項,CASCADE為級聯執行、RESTRICT為阻止執行。
5. 主鍵和外鍵的作用
主鍵和外鍵的作用:
1、保證實體的完整性,加快資料庫操作速度,在表中添加記錄時,access會自動檢查新記錄主鍵值,不允許該值與主鍵值重復。access會自動按主鍵值排序好的顯示出來。如果沒有約束,則是按照用戶輸入信息的順序顯示閉嘩出來。主鍵不接受空值,約束確保唯一數據。
2、外鍵保證的是數據的完整性。外鍵:一組數據的主鍵是另一組數據的的元素;主鍵約束了外鍵所在表中不能存在主鍵類之外的值;外鍵用於與另一張表的關聯。是能確定另茄如一張表記錄的欄位,用於保持數據的一致性。比如,A表中的一個欄位,是B表的主鍵,就可以是A表的外鍵。
(5)aspnet資料庫主外鍵有什麼用擴展閱讀:
主鍵和外鍵的注意事項:
1、主鍵默認非空,默認唯一性約束,只有主鍵才能設置自動增長,自動增長一定是主鍵,主鍵不一定自動增長;
設置主鍵的方式:在定義列時設置:ID INT PRIMARY KEY;在列定義完之後設置:primary KEY(id)、
2、只有INNODB的資料庫引擎支持外鍵,修改my.ini文件設置default-storage-engine=INNODB 外鍵必須與參照列的數據類型必須相同(數值型要求長度和無符號都相同,字元串要求類型相同,長度可以不同)。
設置外鍵的語法:CONSTRAINT 外鍵名 FOREIGN KEY (外鍵欄位)REFERENCES 參照表 (參照欄位) ON DELETE SET NULL ON UPDATE CASCADE 設置參照完整性。
3、外鍵約束的參照操作:
RESTRICT拒絕參照表刪除或更新參照欄位;
RESTRICT和NO ACTION相同,但這個指令只在mysql生效;
CASCADE刪除或更新參照表的參照欄位時,外鍵表的記錄同步刪除更新;
SET NULL 刪除或更新參照表的參照欄位時,外鍵表的外鍵設顫態啟為NULL。
6. 資料庫中外鍵的概念及作用。
外鍵的設計初衷是為了在資料庫端保證對邏輯上相關聯的表數據在操作上版的一致性與完整性。
優點:權
精簡關聯數據,減少數據冗餘
避免後期對大量冗餘處理的額外運維操作。
降低應用代碼復雜性,減少了額外的異常處理
相關數據管理全由資料庫端處理。
增加文檔的可讀性
特別是在表設計開始,繪制 ER 圖的時候,邏輯簡單明了,可讀性非常強。
缺點:
性能壓力
外鍵一般會存在級聯功能,級聯更新,級聯刪除等等。在海量數據場景,造成很大的性能壓力。比如插入一條新記錄,如果插入記錄的表有 10 個外鍵,那勢必要對關聯的 10 張表逐一檢查插入的記錄是否合理,延誤了正常插入的記錄時間。並且父表的更新會連帶子表加上相關的鎖。
其他功能的靈活性不佳
比如,表結構的更新等。
7. 請問資料庫中的主鍵和外鍵是什麼意思
為了保證兩抄個表某些數襲據的一致性。
作為外鍵,它裡面的數據必須是在主建中所存在的。
舉個例子:
有兩個關系:
student(s#,sname,d#),即學生這個關系有三個屬性:學號,姓名,所在系別
dep(d#,dname),即院系有兩個屬性:系號、系名
則s#、d#是主鍵,也是各自所在關系的唯一候選鍵,d#是student的外鍵。
8. 主鍵和外鍵的作用
主鍵是定義一個表中起主要作用的數據項,這些數據項的數據在表中是唯一的,同時系統按主鍵為表建立索引。\x0d\x0a\x0d\x0a外鍵是定義一個表中的某數據項的數據,要參照另一個表的主鍵數據。既沒有在另一個表的主鍵數據中出現的數據,不允許在這個表的外鍵數據項中出現。\x0d\x0a\x0d\x0a主鍵:表中記錄的唯一標識\x0d\x0a\x0d\x0a外鍵:依賴於別的表的數據\x0d\x0a\x0d\x0a唯一鍵:在表中唯一\x0d\x0a\x0d\x0a鍵是一個或多個欄位的組合\x0d\x0a\x0d\x0a唯一鍵:可以確定一條記錄的欄位(或欄位組合),一張表可以有多個唯一鍵,正如可以識別你的身份的可以是身份證,學生證,軍人證\x0d\x0a\x0d\x0a主鍵:你把唯一鍵的一個選做主鍵,一張表只能有一個主鍵\x0d\x0a\x0d\x0a外鍵:所定義的外鍵是另一張表的主鍵,\x0d\x0a\x0d\x0a主鍵:表中記錄的唯一標識,外鍵:依賴於別的表的數據,唯一鍵:在表中唯一。\x0d\x0a\x0d\x0a主鍵和唯一鍵的一個區別:主鍵是不允許為NULL的,唯一鍵則可以,當然你可以加上NOT NULL來限制它\x0d\x0a\x0d\x0a主鍵:能夠唯一表示數據表中的每個記錄的欄位或者欄位的組合就稱為主鍵。一個主鍵是唯一識別一個表的每一行記錄,但這只是其作用的一療分,主鍵的主要作用是將記錄和存放在其他表中的數據進行關聯,在這一點上,主鍵是不同表中各記錄間的簡單指針,主鍵約整就是確定表中的每一條記錄,主鍵不能是空值,唯一約束是用於指定一個或多個列的組合值具有唯一性,以防止在列中輸入重復的值,所以,主鍵的值對用戶而言是沒有什麼意義,並且和它賦予的值也沒有什麼特別聯系。\x0d\x0a\x0d\x0a外鍵:\x0d\x0a\x0d\x0a若有兩個表A,B,C是A的主鍵,而B中也有C欄位,則C就是表B的外鍵,外鍵約束主要用來維護兩個表之間數據的一致性。\x0d\x0a\x0d\x0aA為基本表,B為信息表。\x0d\x0a\x0d\x0a在資料庫中,常常不只是一個表,這些表之間也不是相互獨立的,不同的表之間需要建立一種關系,才能將它們的數據相互溝通,而在這個溝通過程中,就需要表中有一個欄位作為標志,不同的記錄對應的欄位取值不能相同,也不能是空白的,通過這個欄位中不同的值可以區別各條記兄螞錄,就像我們區別不同的人,每個人都有名字,但它卻不能作為主鍵,因為人名很容易出現重復,而身份證號是每個人都不同的,所以可以根據它來區別不同的人,資料庫的表中作為主鍵的段段就要像人的身份證號一樣,必須是每個記錄的值都不同,這才能根據主鍵的值來確定不同的記錄。\x0d\x0a\x0d\x0a什麼是外鍵?\x0d\x0a\x0d\x0a說明你的表A中的某項a,是引用表B的某列b\x0d\x0a\x0d\x0a為什麼要使用外鍵?\x0d\x0aRDBMS的基本概念,可以維護資料庫的完整。\x0d\x0a\x0d\x0a如何來用,涉及到資料庫的定義。\x0d\x0a\x0d\x0a唯一約束和主鍵的區別是什麼?\x0d\x0a\x0d\x0a唯一性約束\x0d\x0a\x0d\x0a唯一性約束所在的列允許空值,但是主鍵約束的列不允空值。\x0d\x0a\x0d\x0a可以把唯一約束放在一個或者多個列上,但是,唯一性約束所在的列並不是表的主鍵列。\x0d\x0a\x0d\x0a唯一性約束強制在指定的列上創建一個唯一性索引,在默認情況下,創建唯一性的非聚簇索引,但是,也可以指定所創羨薯埋建的索引是聚簇索引。\x0d\手埋x0a\x0d\x0a主鍵:\x0d\x0a\x0d\x0a用於標識某行而且與之相關\x0d\x0a\x0d\x0a是不可能更新\x0d\x0a\x0d\x0a不應該允許空\x0d\x0a\x0d\x0a唯一域/欄位\x0d\x0a\x0d\x0a用於作為訪問某行的可選手段。\x0d\x0a\x0d\x0a只要唯一就可以更新\x0d\x0a\x0d\x0a可以為空\x0d\x0a\x0d\x0a注意唯一和主鍵的區別,它們都是創建一個唯一的索引,一個表格僅含有一個主鍵約束列,但是,它有可能在其他列中含有許多的唯一約束。