MySQL是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),其中最基礎(chǔ)的就是表的關(guān)系。
在MySQL中,表的關(guān)系大致可以分為三種:
1. 一對(duì)一關(guān)系(One-to-One)
一對(duì)一關(guān)系指的是兩個(gè)表之間的對(duì)應(yīng)關(guān)系是一對(duì)一的。舉例來說,如果我們有一個(gè)Person表,其中包含身份證號(hào)、姓名、地址等信息,有一個(gè)ID表,其中包含身份證號(hào)和對(duì)應(yīng)的照片,那么Person表和ID表之間的關(guān)系就是一對(duì)一關(guān)系。
CREATE TABLE `Person` ( `person_id` int NOT NULL AUTO_INCREMENT, `ID_card` varchar(18) NOT NULL, `name` varchar(50) NOT NULL, `address` varchar(200) NOT NULL, PRIMARY KEY (`person_id`) ); CREATE TABLE `ID` ( `ID_id` int NOT NULL AUTO_INCREMENT, `ID_card` varchar(18) NOT NULL, `photo_path` varchar(200) NOT NULL, PRIMARY KEY (`ID_id`) );
2. 一對(duì)多關(guān)系(One-to-Many)
一對(duì)多關(guān)系指的是一個(gè)表中的某條數(shù)據(jù)對(duì)應(yīng)著另一個(gè)表中的多條數(shù)據(jù)。比如說,我們有一個(gè)Department表,其中包含部門編號(hào)、部門名稱等信息,還有一個(gè)Employee表,其中包含員工姓名、所屬部門編號(hào)等信息,那么Department表和Employee表之間的關(guān)系就是一對(duì)多關(guān)系。
CREATE TABLE `Department` ( `dept_id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`dept_id`) ); CREATE TABLE `Employee` ( `emp_id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, `dept_id` int NOT NULL, PRIMARY KEY (`emp_id`), FOREIGN KEY (`dept_id`) REFERENCES `Department` (`dept_id`) );
3. 多對(duì)多關(guān)系(Many-to-Many)
多對(duì)多關(guān)系指的是兩個(gè)表之間的對(duì)應(yīng)關(guān)系是多對(duì)多的。比如說,我們有一個(gè)Student表,其中包含學(xué)生學(xué)號(hào)、姓名等信息,有一個(gè)Course表,其中包含課程編號(hào)、名稱等信息,還有一個(gè)Score表,其中包含學(xué)生學(xué)號(hào)、課程編號(hào)、分?jǐn)?shù)等信息,那么Student表和Course表之間的關(guān)系以及Student表和Score表之間的關(guān)系、Course表和Score表之間的關(guān)系都是多對(duì)多關(guān)系。
CREATE TABLE `Student` ( `stu_id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`stu_id`) ); CREATE TABLE `Course` ( `course_id` int NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`course_id`) ); CREATE TABLE `Score` ( `score_id` int NOT NULL AUTO_INCREMENT, `stu_id` int NOT NULL, `course_id` int NOT NULL, `score` int NOT NULL, PRIMARY KEY (`score_id`), FOREIGN KEY (`stu_id`) REFERENCES `Student` (`stu_id`), FOREIGN KEY (`course_id`) REFERENCES `Course` (`course_id`) );