MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】
- MySQL 文檔-黑馬程序員(騰訊微云):https://share.weiyun.com/RaCdIwas
- 1-MySQL基礎(chǔ).pdf、2-MySQL約束與設(shè)計.pdf、3-MySQL多表查詢與事務(wù)的操作.pdf
MySQL學(xué)習(xí)筆記03【數(shù)據(jù)庫表的CRUD操作、數(shù)據(jù)庫表中記錄的基本操作、客戶端圖形化界面工具SQLyog】【day01】
MySQL學(xué)習(xí)筆記04【數(shù)據(jù)庫的查詢操作、表的約束】【day01、day02】
MySQL學(xué)習(xí)筆記05【多表操作、三大范式、數(shù)據(jù)庫的備份和還原】【day02】
MySQL學(xué)習(xí)筆記06【多表查詢、子查詢、多表查詢練習(xí)】【day03】
MySQL學(xué)習(xí)筆記07【事務(wù)、用戶管理和權(quán)限管理】【day03】
目錄
09 多表操作
多表關(guān)系介紹
多表關(guān)系_一對多關(guān)系實現(xiàn)
多表關(guān)系_多對多關(guān)系實現(xiàn)
多表關(guān)系_一對一關(guān)系實現(xiàn)
多表關(guān)系_案例
10 三大范式
范式概述
三大范式詳解
11 數(shù)據(jù)庫的備份和還原
命令行
圖形化工具
09 多表操作
多表關(guān)系介紹
數(shù)據(jù)庫的設(shè)計——1. 多表之間的關(guān)系
1. 分類:
? ? 1. 一對一(了解):
? ? ? ? * 如:人和身份證
? ? ? ? * 分析:一個人只有一個身份證,一個身份證只能對應(yīng)一個人。
? ? 2. 一對多(多對一):
? ? ? ? * 如:部門和員工
? ? ? ? * 分析:一個部門有多個員工,一個員工只能對應(yīng)一個部門。
? ? 3. 多對多:
? ? ? ? * 如:學(xué)生和課程
? ? ? ? * 分析:一個學(xué)生可以選擇很多門課程,一個課程也可以被很多學(xué)生選擇。
多表關(guān)系_一對多關(guān)系實現(xiàn)
數(shù)據(jù)庫的設(shè)計——1. 多表之間的關(guān)系
1. 分類:
? ? 1. 一對一(了解):
? ? ? ? * 如:人和身份證
? ? ? ? * 分析:一個人只有一個身份證,一個身份證只能對應(yīng)一個人。
? ? 2. 一對多(多對一):
? ? ? ? * 如:部門和員工
? ? ? ? * 分析:一個部門有多個員工,一個員工只能對應(yīng)一個部門。
? ? 3. 多對多:
? ? ? ? * 如:學(xué)生和課程
? ? ? ? * 分析:一個學(xué)生可以選擇很多門課程,一個課程也可以被很多學(xué)生選擇。
? ? 2. 實現(xiàn)關(guān)系:
? ? ? ? 1. 一對多(多對一):
? ? ? ? ? ? * 如:部門和員工
?? ??? ??? ?* 實現(xiàn)方式:在多的一方建立外鍵,指向一的一方的主鍵。
多表關(guān)系_多對多關(guān)系實現(xiàn)
? ? 2. 實現(xiàn)關(guān)系:
? ? ? ? 1. 一對多(多對一):
? ? ? ? ? ? * 如:部門和員工
?? ??? ??? ?* 實現(xiàn)方式:在多的一方建立外鍵,指向一的一方的主鍵。
?? ??? ?2. 多對多:
?? ??? ??? ?* 如:學(xué)生和課程
?? ??? ??? ?* 實現(xiàn)方式:多對多關(guān)系實現(xiàn)需要借助第三張中間表。中間表至少包含兩個字段,這兩個字段作為第三張表的外鍵,分別指向兩張表的主鍵。
?? ??? ?3. 一對一(了解):
?? ??? ??? ?* 如:人和身份證
?? ??? ??? ?* 實現(xiàn)方式:一對一關(guān)系實現(xiàn),可以在任意一方添加唯一外鍵指向另一方的主鍵。
多表關(guān)系_一對一關(guān)系實現(xiàn)
? ? 2. 實現(xiàn)關(guān)系:
? ? ? ? 1. 一對多(多對一):
? ? ? ? ? ? * 如:部門和員工
?? ??? ??? ?* 實現(xiàn)方式:在多的一方建立外鍵,指向一的一方的主鍵。
?? ??? ?2. 多對多:
?? ??? ??? ?* 如:學(xué)生和課程
?? ??? ??? ?* 實現(xiàn)方式:多對多關(guān)系實現(xiàn)需要借助第三張中間表。中間表至少包含兩個字段,這兩個字段作為第三張表的外鍵,分別指向兩張表的主鍵。
?? ??? ?3. 一對一(了解):
?? ??? ??? ?* 如:人和身份證
?? ??? ??? ?* 實現(xiàn)方式:一對一關(guān)系實現(xiàn),可以在任意一方添加唯一外鍵指向另一方的主鍵。
多表關(guān)系_案例
-- 創(chuàng)建旅游線路分類表 tab_category -- cid 旅游線路分類主鍵,自動增長 -- cname 旅游線路分類名稱非空,唯一,字符串 100 CREATE TABLE tab_category (cid INT PRIMARY KEY AUTO_INCREMENT,cname VARCHAR (100) NOT NULL UNIQUE ) ;-- 創(chuàng)建旅游線路表 tab_route /* rid 旅游線路主鍵,自動增長 rname 旅游線路名稱非空,唯一,字符串 100 price 價格 rdate 上架時間,日期類型 cid 外鍵,所屬分類 */ CREATE TABLE tab_route (rid INT PRIMARY KEY AUTO_INCREMENT,rname VARCHAR (100) NOT NULL UNIQUE,price DOUBLE,rdate DATE,cid INT,FOREIGN KEY (cid) REFERENCES tab_category (cid) ) ;/*創(chuàng)建用戶表 tab_user uid 用戶主鍵,自增長 username 用戶名長度 100,唯一,非空 password 密碼長度 30,非空 name 真實姓名長度 100 birthday 生日 sex 性別,定長字符串 1 telephone 手機(jī)號,字符串 11 email 郵箱,字符串長度 100 */ CREATE TABLE tab_user (uid INT PRIMARY KEY AUTO_INCREMENT,username VARCHAR (100) UNIQUE NOT NULL,PASSWORD VARCHAR (30) NOT NULL,NAME VARCHAR (100),birthday DATE,sex CHAR(1) DEFAULT '男',telephone VARCHAR (11),email VARCHAR (100) ) ;/* 創(chuàng)建收藏表 tab_favorite rid 旅游線路 id,外鍵 date 收藏時間 uid 用戶 id,外鍵 rid 和 uid 不能重復(fù),設(shè)置復(fù)合主鍵,同一個用戶不能收藏同一個線路兩次 */ CREATE TABLE tab_favorite (rid INT, -- 線路idDATE DATETIME,uid INT,-- 用戶id-- 創(chuàng)建復(fù)合主鍵PRIMARY KEY (rid, uid),-- 聯(lián)合主鍵FOREIGN KEY (rid) REFERENCES tab_route (rid),FOREIGN KEY (uid) REFERENCES tab_user (uid) ) ;10 三大范式
范式概述
2. 數(shù)據(jù)庫設(shè)計的范式
? ? * 概念:設(shè)計數(shù)據(jù)庫時,需要遵循的一些規(guī)范。要遵循后邊的范式要求,必須先遵循前邊的所有范式要求。
? ? ? ? 設(shè)計關(guān)系數(shù)據(jù)庫時,遵從不同的規(guī)范要求,設(shè)計出合理的關(guān)系型數(shù)據(jù)庫,這些不同的規(guī)范要求被稱為不同的范式,各種范式呈遞次規(guī)范,越高的范式數(shù)據(jù)庫冗余越小。
? ? ? ? 目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱完美范式)。
? ? * 分類:
? ? ? ? 1. 第一范式(1NF):每一列都是不可分割的原子數(shù)據(jù)項。
? ? ? ? 2. 第二范式(2NF):在1NF的基礎(chǔ)上,非碼屬性必須完全依賴于碼(在1NF基礎(chǔ)上消除非主屬性對主碼的部分函數(shù)依賴)。
? ? ? ? 3. 第三范式(3NF):在2NF基礎(chǔ)上,任何非主屬性不依賴于其它非主屬性(在2NF基礎(chǔ)上消除傳遞依賴)。
三大范式詳解
2. 數(shù)據(jù)庫設(shè)計的范式
? ? * 概念:設(shè)計數(shù)據(jù)庫時,需要遵循的一些規(guī)范。要遵循后邊的范式要求,必須先遵循前邊的所有范式要求。
? ? ? ? 設(shè)計關(guān)系數(shù)據(jù)庫時,遵從不同的規(guī)范要求,設(shè)計出合理的關(guān)系型數(shù)據(jù)庫,這些不同的規(guī)范要求被稱為不同的范式,各種范式呈遞次規(guī)范,越高的范式數(shù)據(jù)庫冗余越小。
? ? ? ? 目前關(guān)系數(shù)據(jù)庫有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱完美范式)。
? ? * 分類:
? ? ? ? 1. 第一范式(1NF):每一列都是不可分割的原子數(shù)據(jù)項。
? ? ? ? 2. 第二范式(2NF):在1NF的基礎(chǔ)上,非碼屬性必須完全依賴于碼(在1NF基礎(chǔ)上消除非主屬性對主碼的部分函數(shù)依賴)。
? ? ? ? ? ? * 幾個概念:
?? ??? ??? ??? ?1. 函數(shù)依賴:A-->B,如果通過A屬性(屬性組)的值,可以確定唯一B屬性的值,則稱B依賴于A。
?? ??? ??? ??? ??? ?例如:學(xué)號-->姓名。 ?(學(xué)號,課程名稱) --> 分?jǐn)?shù)
?? ??? ??? ??? ?2. 完全函數(shù)依賴:A-->B, 如果A是一個屬性組,則B屬性值的確定需要依賴于A屬性組中所有的屬性值。
?? ??? ??? ??? ??? ?例如:(學(xué)號,課程名稱) --> 分?jǐn)?shù)
?? ??? ??? ??? ?3. 部分函數(shù)依賴:A-->B, 如果A是一個屬性組,則B屬性值的確定只需要依賴于A屬性組中某一些值即可。
?? ??? ??? ??? ??? ?例如:(學(xué)號,課程名稱) --> 姓名
?? ??? ??? ??? ?4. 傳遞函數(shù)依賴:A-->B, B-->C。如果通過A屬性(屬性組)的值,可以確定唯一B屬性的值,在通過B屬性(屬性組)的值可以確定唯一C屬性的值,則稱C傳遞函數(shù)依賴于A。
?? ??? ??? ??? ??? ?例如:學(xué)號-->系名,系名-->系主任
?? ??? ??? ??? ?5. 碼:如果在一張表中,一個屬性或?qū)傩越M,被其他所有屬性所完全依賴,則稱這個屬性(屬性組)為該表的碼。
?? ??? ??? ??? ??? ?例如:該表中碼為:(學(xué)號,課程名稱)
?? ??? ??? ??? ??? ?* 主屬性:碼屬性組中的所有屬性
?? ??? ??? ??? ??? ?* 非主屬性:除過碼屬性組的屬性
? ? ? ? 3. 第三范式(3NF):在2NF基礎(chǔ)上,任何非主屬性不依賴于其它非主屬性(在2NF基礎(chǔ)上消除傳遞依賴)。
??
11 數(shù)據(jù)庫的備份和還原
1. 命令行:
?? ?* 語法:
?? ??? ?* 備份:mysqldump -u用戶名 -p密碼 數(shù)據(jù)庫名稱 > 保存的路徑
?? ??? ?* 還原:
?? ??? ??? ?1. 登錄數(shù)據(jù)庫
?? ??? ??? ?2. 創(chuàng)建數(shù)據(jù)庫
?? ??? ??? ?3. 使用數(shù)據(jù)庫
?? ??? ??? ?4. 執(zhí)行文件。source 文件路徑
2. 圖形化工具
命令行
??
??
圖形化工具
??
????
總結(jié)
以上是生活随笔為你收集整理的MySQL学习笔记05【多表操作、三大范式、数据库的备份和还原】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL学习笔记04【数据库的查询操作
- 下一篇: MySQL学习笔记06【多表查询、子查询