綠色做環(huán)保網(wǎng)站的好處外貿(mào)seo優(yōu)化
數(shù)據(jù)備份 & 范式 & ER模型
- 一、數(shù)據(jù)備份
- 1、如何進行數(shù)據(jù)備份
- (1)備份數(shù)據(jù)庫中的表
- (2)備份數(shù)據(jù)庫
- (3)備份整個數(shù)據(jù)庫服務(wù)器
- 2、如何進行數(shù)據(jù)恢復
- 3、如何導出和導入表里的數(shù)據(jù)
- (1)SELECT語句導出數(shù)據(jù)
- (2)使用LOAD DATA語句導入數(shù)據(jù)
- 二、范式
- 1、第一范式
- 2、第二范式
- 3、第三范式
- 4、業(yè)務(wù)優(yōu)先原則
- 三、ER模型
- 1、ER模型的要素
- 2、如何把ER模型轉(zhuǎn)換成數(shù)據(jù)表
一、數(shù)據(jù)備份
MySQL的數(shù)據(jù)備份有2種:
- 物理備份, 通過把數(shù)據(jù)文件復制出來,達到備份的目的,需要收費,用得比較少。
- 邏輯備份,通過把描述數(shù)據(jù)庫結(jié)構(gòu)和內(nèi)容的信息保存起來,達到備份的目的,免費的,廣泛得到使用,本文重點講解邏輯備份。
1、如何進行數(shù)據(jù)備份
用于數(shù)據(jù)備份的工具mysqldump總共有三種模式:
- 備份數(shù)據(jù)庫中的表;
- 備份整個數(shù)據(jù)庫;
- 備份整個數(shù)據(jù)庫服務(wù)器。
(1)備份數(shù)據(jù)庫中的表
-- mysqldump備份數(shù)據(jù)庫中的表的語法結(jié)構(gòu)是:
mysqldump -h 服務(wù)器-u 用戶-p 密碼 數(shù)據(jù)庫名稱[表名稱 …] > 備份文件名稱
舉例:
備份文件是以文本格式保存的,我們可以用記事本查看備份的內(nèi)容,它相當于一個SQL執(zhí)行腳本。
(2)備份數(shù)據(jù)庫
-- mysqldump備份數(shù)據(jù)庫的語法結(jié)構(gòu)是:
mysqldump -h 服務(wù)器 -u 用戶-p 密碼 --databases 數(shù)據(jù)庫名稱… > 備份文件名
舉例:
(3)備份整個數(shù)據(jù)庫服務(wù)器
-- 備份整個數(shù)據(jù)庫服務(wù)器的語法結(jié)構(gòu):
mysqldump -h 服務(wù)器 -u 用戶 -p 密碼 --all-databases > 備份文件名
2、如何進行數(shù)據(jù)恢復
mysqldump的備份文件包含了創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表,以及插入數(shù)據(jù)表里原有數(shù)據(jù)的SQL語句,我們可以直接運行這些SQL語句,來進行數(shù)據(jù)恢復。
數(shù)據(jù)恢復的方法主要有2種:
- 使用 “mysql” 命令行客戶端工具進行數(shù)據(jù)恢復;
- 使用 “SOURCE” 語句進行數(shù)據(jù)恢復。
-- 方法一
mysql -u root -p demo < test.sql
-- 方法二
SOURCE 備份文件名
-- 舉例:
USE demo
SOURCE H:\\test.sql
3、如何導出和導入表里的數(shù)據(jù)
首先將表的數(shù)據(jù)按照一定的格式,導出成一個文件。
(1)SELECT語句導出數(shù)據(jù)
使用 " SELECT … INTO OUTFILE " 語句導出數(shù)據(jù)表的語法結(jié)構(gòu):
-- 查詢的結(jié)果保存到 "文件名稱" 指定的文件中
SELECT 字段列表 INTO OUTFILE 文件名稱
-- 列之間的分隔符是 "字符"
FIELDS TERMINATED BY 字符
-- 行之間的分隔符是 "字符"
LINES TERMINATED BY 字符
FROM 表名;-- 舉例:
SELECT * INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/goodsmaster.txt'
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
FROM demo.goodsmaster;
注意:在上面這個例子中,如果文件名稱寫 " D:\goodsmaster.txt ",則系統(tǒng)會報 " --secure-file-priv " 錯誤。
解決方法就是:我們?nèi)?" C:\ProgramData\MySQL\MySQL Server 8.0\my.ini " 中查看 " --secure-file-priv " 的配置如下:
(2)使用LOAD DATA語句導入數(shù)據(jù)
使用 " LOAD DATA " 語句導入數(shù)據(jù)的語法結(jié)構(gòu):
LOAD DATA INFILE 文件名
INTO TABLE 表名
FIELDS TERMINATED BY 字符
LINES TERMINATED BY 字符;
二、范式
范式可以幫助我們設(shè)計出簡介高效的數(shù)據(jù)表,進而提高系統(tǒng)的效率。
1、第一范式
關(guān)系中的每個屬性都是不可再分的最小數(shù)據(jù)單元,即列不可再分。所有字段都是基本數(shù)據(jù)字段,不可進一步拆分。如 “ 10支/包 ” 就可以拆分成兩個字段存儲。
2、第二范式
第二范式要求,在滿足第一范式的基礎(chǔ)上,還要滿足數(shù)據(jù)表里的每一條數(shù)據(jù)記錄,都是可唯一標識的。而且所有字段,都必須完全依賴主鍵,不能只依賴主鍵的一部分。即關(guān)系必須滿足1NF,且非主屬性完全依賴于主鍵。
舉例:
假設(shè)我們有一個學生課程表:
在這個表中,主鍵是學生ID和課程ID的組合。課程名稱 這一列并不直接依賴于整個主鍵(學生ID和課程ID),而是只依賴于課程ID。這就不滿足2NF的情況,因為課程名稱應(yīng)該與學生ID是無關(guān)的。
為了滿足2NF,我們可以將表拆分為兩個表:一個是學生課程表,只記錄學生和課程的關(guān)聯(lián);另一個是課程表,記錄課程的基本信息。
學生課程表:
課程表:
3、第三范式
第三范式要求數(shù)據(jù)表在滿足第二范式的基礎(chǔ)上,不能包含那些可以由非主鍵字段派生出來的字段,或者說,不能存在依賴于非主鍵字段的字段。即關(guān)系必須滿足2NF,且非主屬性之間不存在傳遞依賴。
4、業(yè)務(wù)優(yōu)先原則
所謂的業(yè)務(wù)優(yōu)先原則,就是指一切以業(yè)務(wù)需求為主,技術(shù)服務(wù)于業(yè)務(wù)。完全按照理論的設(shè)計不一定就是最優(yōu),還要根據(jù)實際情況來決定。
三、ER模型
ER 模型也叫作實體關(guān)系模型,是用來描述現(xiàn)實生活中客觀存在的事物、事物的屬性,以及事物之間關(guān)系的一種數(shù)據(jù)模型。在開發(fā)基于數(shù)據(jù)庫的信
息系統(tǒng)的設(shè)計階段,通常使用ER模型來描述信息需求和信息特性,幫助我們理清業(yè)務(wù)邏輯,從而設(shè)計出優(yōu)秀的數(shù)據(jù)庫。
1、ER模型的要素
- 實體:可以看做是數(shù)據(jù)對象,往往對應(yīng)于現(xiàn)實生活中的真實存在的個體。
- 屬性:則是指實體的特性。
- 關(guān)系:則是指實體之間的聯(lián)系。關(guān)系又可以分為3種類型,分別是1對1、1對多和多對多。
2、如何把ER模型轉(zhuǎn)換成數(shù)據(jù)表
通過繪制ER模型,我們已經(jīng)理清了業(yè)務(wù)邏輯。那么如何把繪制好的ER模型,轉(zhuǎn)換成具體的數(shù)據(jù)表呢。
下面是一些轉(zhuǎn)換的原則:
- 一個實體通常轉(zhuǎn)換成一個數(shù)據(jù)表;
- 一個多對多的關(guān)系,通常也轉(zhuǎn)換成一個數(shù)據(jù)表;
- 一個1對1,或者1對多的關(guān)系,往往通過表的外鍵來表達;
- 屬性轉(zhuǎn)換成表的字段。