MySQL8 0多表設計

2021-10-17 20:27:30 字數 1934 閱讀 5221

-- 多表設計

/*什麼時候用到多表?

1.儲存不同的資訊時 2.為減少資料冗餘

多表設計中表與表如何關聯?

資料庫設計正規化:

第一正規化:列的原子性(不可再分)

第二正規化:要有主鍵,其他欄位都依賴於主鍵

第三正規化:要消除傳遞依賴,方便理解,可以看做是「消除冗餘」

學生資訊表:學號,姓名,性別,生日,手機號,年級id,註冊時間

年級表:年級id,年級名稱

老師資訊表:工號,姓名,性別,年級id

課程資訊表:課程號,課程名

弱關係:表與表關聯時沒有任何約束

強關係:表與表之間存在約束關係

表與表之間的關聯關係

一對一:乙個人對應一張身份證

一對多:乙個年級有多個學生

多對一:多個學生對應乙個年級

多對多:乙個學生可以選修多門課程,乙個課程可以被多個同學選修

*/

建立資料庫

create database if not exists school_db charset utf8
分別建立年級表,學生表,課程表和選課表。並為他們新增約束和對應外來鍵。

-- 年級表(主表)

create table t_grade (id int primary key auto_increment,name varchar(15))

-- 學生表(年級號為學生表的外來鍵)

create table t_student

(num int primary key auto_increment,name varchar(15)not null,

*** char(1),birthday date,phone char(11),grade_id int, reg_time datetime)

-- 修改表,新增年級外來鍵約束。 外來鍵與另乙個表的主鍵對應 。

alter table t_student add constraint grade_fk foreign key (grade_id) references t_grade(id)

-- 課程表

create table t_course(cnum int primary key auto_increment,cname varchar(15))

-- 選課表

create table t_sc(num int ,cnum int,

constraint student_fk foreign key(num)references t_student(num),

constraint course_fk foreign key (cnum) references t_course(cnum))

為各表新增資料如下圖:

年級表:

學生表:

課程表:

選課表:

樹形目錄結構:

外碼約束圖:

mysql8 0提示命令 MySQL8 0操作命令

mysql8.0版本和mysql5.0的加密規則不一樣,而現在的很多任務具等都是不支援的,我們這裡使用的是將mysql使用者登入的加密規則修改為mysql native password的方法來進行解決的。修改加密規則alter user root localhost identified by p...

mysql8 0修改登入

在mysql8.0當中的密碼認證外掛程式以經由mysql native password改為caching sha2 password 修改密碼的方式也發生了改變,控制台修改密碼方法如下 use mysql alter user root localhost identified by 新密碼 修改...

mysql8 0使用者操作

命令 create user username host identified by password 說明 username 你將建立的使用者名稱 host 指定該使用者在哪個主機上可以登陸,如果是本地使用者可用localhost,如果想讓該使用者可以從任意遠端主機登陸,可以使用萬用字元 pass...