MySQL是一種關系型數據庫管理系統,支持數據表之間的連接與關聯。數據之間的關系可以分為一對多和多對一兩種類型,這兩種關系之間的區別是什么呢?
在一對多關系中,一個主數據可以建立多個從屬數據。例如,一個公司可以有多個員工。每個員工都可以有一份工資單,而這些工資單就是屬于同一個公司。這時候就存在一個主數據(公司)與多個從屬數據(員工的工資單)之間的關系。在MySQL中,可以使用外鍵關聯這些從屬數據。例如,以下是一個建立一對多關系的SQL語句:
CREATE TABLE company ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE employee ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, salary DECIMAL(8, 2), company_id INT NOT NULL, FOREIGN KEY (company_id) REFERENCES company(id) );
在上面的例子中,employee表中的company_id列是一個外鍵,它指向了company表中的id列。這個外鍵就是一對多關系的關鍵點,它保證了每個員工的工資單都屬于同一個公司。
與一對多關系相反的是多對一關系。在多對一關系中,多個從屬數據可以建立與一個主數據的關系。例如,一個城市可以有多個居民,但每個居民只屬于一個城市。這時候就存在多個從屬數據(居民)與一個主數據(城市)之間的關系。在MySQL中,也可以使用外鍵關聯這些從屬數據。例如,以下是一個建立多對一關系的SQL語句:
CREATE TABLE city ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL ); CREATE TABLE resident ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL, city_id INT NOT NULL, FOREIGN KEY (city_id) REFERENCES city(id) );
在上面的例子中,resident表中的city_id列也是一個外鍵,它指向了city表中的id列。這個外鍵保證了每個居民都屬于一個城市。