在項目開發中,進行數據庫表結構設計時,會根據業務需求及業務模塊之間的關系,分析并設計表結構,各個表之間的結構基本上分為三種:一對多,多對多,一對一。
一對多
例如,一個學校可以有多個學生,而一個學生對應一個學校
實現:在多的一方建立外鍵,指向一的一方的主鍵。
多對多
例如,一個學生可以選修多門課程,一門課程也可以有多名學生。
實現:建立第三張中間表,中間表至少包含兩個外鍵,分別關聯兩邊的主鍵。
示例:新創建一張course表,使其與之前的user表連接,這中間需要用一張中間表進行連接。
CREATE table course(id int auto_increment primary key comment '主鍵id',course_name varchar(10) comment '課程名稱' )comment '課程表'; insert into course value (null,'java'),(null,'vue'),(null,'MySQL');
create table student_course(id int auto_increment comment '主鍵' primary key ,studentid int not null comment '學生id',courseid int not null comment '課程id',constraint fk_courseid foreign key (courseid) references course(id),constraint fk_studentid foreign key (studentid) references user(id)--添加外鍵 )comment '學生中間表';
?此時已經成功連接上兩張表,在DataGrip里可以更直觀的看到這些表的聯系。
右擊中間表點擊Diagrams,選擇Show Diagram
?
一對一
例如學生與學生信息的關系。
關系:一對一的關系,多用于單表拆分,將一張表的基礎字段放在一張表中,其他詳情字段放在另一張表中,以提升操作效率。
實現:在任意一方加入外鍵,關聯另外一方的主鍵,并且設置外鍵為唯一(UNIQUE)的。