MySQL中的主表和從表是關(guān)系型數(shù)據(jù)庫(kù)概念中的重要組成部分。主表和從表可以根據(jù)它們?cè)陉P(guān)系模型中所處的位置進(jìn)行區(qū)分。通俗地說(shuō),主表通常是在一個(gè)關(guān)系模型中重要的表,而從表則與主表的關(guān)系更為弱化。
主表通常是一個(gè)數(shù)據(jù)模型中最常用的表,也是數(shù)據(jù)中的重要維度。主表可以認(rèn)為是容器,其中存儲(chǔ)了關(guān)鍵數(shù)據(jù)元素,如公司名稱、產(chǎn)品信息、客戶信息等。主表應(yīng)該包含盡可能多的業(yè)務(wù)數(shù)據(jù)元素,并且必須具備唯一標(biāo)識(shí)性質(zhì),以便通過(guò)主鍵標(biāo)識(shí)單個(gè)數(shù)據(jù)元素。
從表通常是與主表關(guān)聯(lián)的一個(gè)輔助表。從表可以被認(rèn)為是數(shù)據(jù)模型中的支持表,其中存儲(chǔ)了數(shù)據(jù)的附加信息。從表通常通過(guò)外鍵與主表進(jìn)行關(guān)聯(lián),外鍵是一個(gè)指向主表中唯一數(shù)據(jù)元素的引用,使得從表能夠訪問(wèn)主表中的數(shù)據(jù)。從表不應(yīng)該包含任何唯一標(biāo)識(shí)元素,因?yàn)閺谋淼臄?shù)據(jù)必須始終與主表中的數(shù)據(jù)元素相關(guān)聯(lián)。
CREATE TABLE Customers ( CustomerID int NOT NULL, FirstName varchar(255) NOT NULL, LastName varchar(255) NOT NULL, PRIMARY KEY (CustomerID) ); CREATE TABLE Orders ( OrderID int NOT NULL, CustomerID int NOT NULL, OrderDate date NOT NULL, PRIMARY KEY (OrderID), FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) );
在上面的示例中,我們創(chuàng)建了兩個(gè)表: Customers和Orders。Customers是主表,它包含客戶ID,名字和姓氏。Orders是從表,它包含訂單ID,客戶ID和訂單日期。從表Orders使用FOREIGN KEY與主表Customer進(jìn)行關(guān)聯(lián),通過(guò)引用主表中的客戶ID標(biāo)識(shí)哪些客戶在哪些訂單中出現(xiàn)。