python數據庫-MySQL數據庫的介紹及安裝(47)

1、數據庫的介紹

  數據庫(Database)是存儲與管理數據的軟件系統,就像一個存入數據的物流倉庫。每一個數據庫都有一個或多個不一樣的API接口用於建立,訪問,管理,搜索和複製所保存的數據。咱們也能夠將數據存儲在文件中,可是在文件中讀寫數據速度相對較慢,因此咱們使用關係型數據庫管理系統(RDBMS)來存儲和管理的大數據量。mysql

2、常見數據庫技術品牌、服務與架構

  發展了這麼多年市場上出現了許多的數據庫系統,最強的我的認爲是Oracle,固然還有許多如:DB二、Microsoft SQL Server、MySQL、SyBase等,下圖列出常見數據庫技術品牌、服務與架構。sql

3、數據庫的分類

  數據庫一般分爲層次式數據庫、網絡式數據庫和關係式數據庫三種,而不一樣的數據庫是按不一樣的數據結構來聯繫和組織的。而在當今的互聯網中,最多見的數據庫模型主要是兩種,即關係型數據庫和非關係型數據庫。數據庫

  關係型數據庫表明:Oracle、MySql、SQL Server編程

  非關係型數據庫表明:Mongodb、Redisubuntu

4、E-R模型

  • 當前物理的數據庫都是按照E-R模型進行設計的
  • E表示entry,實體
  • R表示relationship,關係
  • 一個實體轉換爲數據庫中的一個表
  • 關係描述兩個實體之間的對應規則,包括
    • 一對一
    • 一對多
    • 多對多
  • 關係轉換爲數據庫表中的一個列 *在關係型數據庫中一行就是一個對象

5、三大範式

一、 什麼是範式

  要設計規範化的數據庫,就要求咱們根據數據庫設計範式――也就是數據庫設計的規範原則來作。範式能夠指導咱們更好地設計數據庫的表結構,減小冗餘的數據,藉此能夠提升數據庫的存儲效率,數據完整性和可擴展性。windows

  設計關係數據庫時,聽從不一樣的規範要求,設計出合理的關係型數據庫,這些不一樣的規範要求被稱爲不一樣的範式,各類範式呈遞次規範,越高的範式數據庫冗餘越小。目前關係數據庫有六種範式:第一範式(1NF)、第二範式(2NF)、第三範式(3NF)、巴德斯科範式(BCNF)、第四範式(4NF)和第五範式(5NF,又稱完美範式)。知足最低要求的範式是第一範式(1NF)。在第一範式的基礎上進一步知足更多規範要求的稱爲第二範式(2NF),其他範式以次類推。通常說來,數據庫只需知足第三範式(3NF)就好了。數組

二、三大範式

第一範式(1NF)

  所謂第一範式(1NF)是指在關係模型中,對列添加的一個規範要求,全部的列都應該是原子性的,即數據庫表的每一列都是不可分割的原子數據項,而不能是集合,數組,記錄等非原子數據項。即實體中的某個屬性有多個值時,必須拆分爲不一樣的屬性。在符合第一範式(1NF)表中的每一個域值只能是實體的一個屬性或一個屬性的一部分。簡而言之,第一範式就是無重複的域。網絡

  例如:表1-1中,其中」工程地址」列還能夠細分爲省份,城市等。在國外,更多的程序把」姓名」列也分紅2列,即」姓」和「名」。數據結構

雖然第一範式要求各列要保存原子性,不能再分,可是這種要求和咱們的需求是相關聯的,如上表中咱們對」工程地址」沒有省份,城市這樣方面的查詢和應用需求,則不需拆分,」姓名」列也是一樣如此。架構

表1-1   原始表

工程號

工程名稱

工程地址

員工編號

員工名稱

薪資待遇

職務

P001

港珠澳大橋

廣東珠海

E0001

Jack

6000/月

工人

P001

港珠澳大橋

廣東珠海

E0002

Join

7800/月

工人

P001

港珠澳大橋

廣東珠海

E0003

Apple

8000/月

高級技工

P002

南海航天

海南三亞

E0001

Jack

5000/月

工人

第二範式(2NF)

  在1NF的基礎上,非Key屬性必須徹底依賴於主鍵。第二範式(2NF)是在第一範式(1NF)的基礎上創建起來的,即知足第二範式(2NF)必須先知足第一範式(1NF)。第二範式(2NF)要求數據庫表中的每一個實例或記錄必須能夠被惟一地區分。選取一個能區分每一個實體的屬性或屬性組,做爲實體的惟一標識。

  第二範式(2NF)要求實體的屬性徹底依賴於主關鍵字。所謂徹底依賴是指不能存在僅依賴主關鍵字一部分的屬性,若是存在,那麼這個屬性和主關鍵字的這一部分應該分離出來造成一個新的實體,新實體與原實體之間是一對多的關係。爲實現區分一般須要爲表加上一個列,以存儲各個實例的惟一標識。簡而言之,第二範式就是在第一範式的基礎上屬性徹底依賴於主鍵。

  例如:表1-1中,一個表描述了工程信息,員工信息等。這樣就形成了大量數據的重複。按照第二範式,咱們能夠將表1-1拆分紅表1-2和表1-3:

表1-2   工程信息表

工程編號

工程名稱

工程地址

P001

港珠澳大橋

廣東珠海

P002

南海航天

海南三亞

 

表1-3   員工信息表

員工編號

員工姓名

職務

薪資水平

E0001

Jack

工人

3000/月

E0002

Join

工人

3000/月

E0003

Apple

高級技工

6000/月

這樣,表1-1就變成了兩張表,每一個表只描述一件事,清晰明瞭。

第三範式(3NF)

  第三範式是在第二範式基礎上,更進一層,第三範式的目標就是確保表中各列與主鍵列直接相關,而不是間接相關。即各列與主鍵列都是一種直接依賴關係,則知足第三範式。  

  第三範式要求各列與主鍵列直接相關,咱們能夠這樣理解,假設張三是李四的兵,王五則是張三的兵,這時王五是否是李四的兵呢?從這個關係中咱們能夠看出,王五也是李四的兵,由於王五依賴於張三,而張三是李四的兵,因此王五也是。這中間就存在一種間接依賴的關係而非咱們第三範式中強調的直接依賴。

  如今咱們來看看在第二範式的講解中,咱們將表1-1拆分紅了兩張表。這兩個表是否符合第三範式呢。在員工信息表中包含:」員工編號」、」員工名稱」、」職務」、」薪資水平」,而咱們知道,薪資水平是有職務決定,這裏」薪資水平」經過」職務」與員工相關,則不符合第三範式。咱們須要將員工信息表進一步拆分,以下:

員工信息表:員工編號,員工名稱,職務

職務表:職務編號,職務名稱,薪資水平

如今咱們已經瞭解了數據庫規範化設計的三大範式,下面咱們再來看看對錶1-1優化後的數據表:

員工信息表(Employee)

員工編號

員工姓名

職務編號

E0001

Jack

1

E0002

Join

1

E0003

Apple

2

工程信息表(ProjectInfo)

工程編號

工程名稱

工程地址

P001

港珠澳大橋

廣東珠海

P002

南海航天

海南三亞

職務表(Duty)

職務編號

職務名稱

工資待遇

1

工人

3000/月

2

高級技工

6000/月

 工程參與人員記錄表(Project_ Employee_info)

編號

工程編號

人員編號

1

P001

E0001

2

P001

E0002

3

P002

E0003

經過對比咱們發現,表多了,關係複雜了,查詢數據變的麻煩了,編程中的難度也提升了,可是各個表中內容更清晰了,重複的數據少了,更新和維護變的更容易了,哪麼如何平衡這種矛盾呢?

四、範式與效率

  在咱們設計數據庫時,設計人員、客戶、開發人員一般對數據庫的設計有必定的矛盾,客戶更喜歡方便,清晰的結果,開發人員也但願數據庫關係比較簡單,下降開發難度,而設計人員則須要應用三大範式對數據庫進行嚴格規範化,減小數據冗餘,提升數據庫可維護性和擴展性。由此能夠看出,爲了知足三大範式,咱們數據庫設計將會與客戶、開發人員產生分歧,因此在實際的數據庫設計中,咱們不能一味的追求規範化,既要考慮三大範式,減小數據冗餘和各類數據庫操做異常,又要充分考慮到數據庫的性能問題,容許適當的數據庫冗餘。

6、MySQL介紹

  MySQL所使用的 SQL 語言是用於訪問數據庫的最經常使用標準化語言。MySQL 軟件採用了雙受權政策,分爲社區版和商業版,因爲其體積小、速度快、整體擁有成本低,尤爲是開放源碼這一特色,通常中小型網站的開發都選擇 MySQL 做爲網站數據庫。

  MySQL官網:https://www.mysql.com/

  MySQL下載:https://www.mysql.com/downloads/

MySQL之前一直是開源免費的,被Oracle收購後有些變化:之前的版本都是免費的,社區版按GPL協議開源免費,商業版提供更加豐富的功能,但收費。

  社區版的下載地址:https://dev.mysql.com/downloads/ (免費)

  企業版的下載地址:https://www.mysql.com/downloads/(收費)

7、MySQL的卸載

  爲何還沒安裝就要先學習卸載呢?由於不少同窗的電腦可能之前裝過MySQL,在再次裝以前若是之前的沒有卸載或者卸載的不乾淨,都會影響MySQL的再次安裝,因此在安裝以前咱們先確保咱們電腦上沒有上次安裝的殘留。

一、mac系統下刪除

  經過命令行刪除

sudo rm /usr/local/mysql
sudo rm -rf /usr/local/mysql*
sudo rm -rf /Library/StartupItems/MySQLCOM
sudo rm -rf /Library/PreferencePanes/My*
rm -rf ~/Library/PreferencePanes/My*
sudo rm -rf /Library/Receipts/mysql*
sudo rm -rf /Library/Receipts/MySQL*
sudo rm -rf /var/db/receipts/com.mysql.*

二、ubuntu系統下刪除

sudo apt-get remove mysql-*
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

8、MySQL的安裝

一、mac 系統安裝

在安裝的時候會讓你填寫一個root用戶的密碼,用來作MySQL的登陸使用

安裝好了以後再你電腦的系統偏好設置面板中能找到MySQL 

點擊進入到MySQL面板 

安裝好了以後MySQL服務默認是開啓的,不用的時候經過stop能夠關閉,此時mac系統咱們的MySQL就安裝好了。

二、ubuntu下安裝MySQL

2.一、安裝

sudo apt-get install mysql-server mysql-client

2.二、啓動

service mysql start

2.三、中止

service mysql stop

2.四、重啓

service mysql restart

三、windows下就不帶着你們安裝了,我想你們都會

9、圖形工具(Navicat)連接數據庫

  若是一直使用命令行去操做數據庫,這樣對於數據的整理,表結構的觀察是很不方便,因此咱們在安裝好了MySQL服務以後,咱們都會使用圖形界面工具去編輯和處理數據庫,圖形界面工具備不少,這裏給你們介紹一個很好用的數據庫鏈接工具Navicat,這個工具正版是收費的,固然網上有不少破解版和破解攻略,我相信你們都會的。

  Navicat官網:https://www.navicat.com.cn/

  Navicat產品下載:https://www.navicat.com.cn/products

下載安裝好了以後,打開以下圖

咱們操做鏈接按鈕,鏈接到咱們要操做的數據庫

這個時候咱們建立一個表驗證一下咱們的連接是成功的,經過Navicat能夠操做數據庫,

使用終端登陸MySQL驗證 

OK、到此咱們鏈接成功,就能夠對數據庫進程曾刪改查等操做了,具體操做請看下一篇

相關文章
相關標籤/搜索