數據庫學習篇二

安裝Mysql

考慮到對Mysql使用的普適性,因此關係型數據庫的學習主要是針對Mysql,因此:

在Windows或Mac上安裝MySQL,首先從MySQL官方網站下載最新的MySQL Community Server版本:
https://dev.mysql.com/downloads/mysql/
選擇對應的操作系統版本,下載安裝即可。在安裝過程中,MySQL會自動創建一個root用戶,並提示輸入root口令。

要在Linux上安裝MySQL,可以使用發行版的包管理器。例如,Debian和Ubuntu用戶可以簡單地通過命令apt-get install mysql-server安裝最新的MySQL版本。

運行Mysql

MySQL安裝後會自動在後臺運行。爲了驗證MySQL安裝是否正確,我們需要通過mysql這個命令行程序來連接MySQL服務器。
在命令提示符下輸入mysql -u root -p,然後輸入口令,如果一切正確,就會連接到MySQL服務器,同時提示符變爲mysql>。
輸入exit退出MySQL命令行。

關係模型的理解

關係數據庫是建立在關係模型上的,而關係模型本質上就是若干個存儲數據的二維表,可以把它們看作很多Excel表。
表的每一行稱爲記錄(Record),記錄是一個邏輯意義上的數據。表的每一列稱爲字段(Column),同一個表的每一行記錄都擁有相同的若干字段。

字段定義了數據類型(整型、浮點型、字符串、日期等),以及是否允許爲NULL。注意NULL表示字段數據不存在。一個整型字段如果爲NULL不表示它的值爲0,同樣的,一個字符串型字段爲NULL也不表示它的值爲空串’’。

一般來講,字段應該避免允許爲NULL。因爲可以簡化查詢條件,加快查詢速度,也利於應用程序讀取數據後無需判斷是否爲NULL。
和Excel表有所不同的是,關係數據庫的表和表之間需要建立“一對多”,“多對一”和“一對一”的關係,這樣才能夠按照應用程序的邏輯來組織和存儲數據。

主鍵的理解

在關係數據庫中,一張表中的每一行數據被稱爲一條記錄。一條記錄就是由多個字段組成的。例如,students表的兩行記錄:

id	class_id	name	gender	score
1	  1	      小明	     M	     90
2	  1	      小紅	     F	     95

每一條記錄都包含若干定義好的字段。而且同一個表的所有記錄都有相同的字段定義。

對於關係表,有個很重要的約束,就是任意兩條記錄不能重複。不能重複不是指兩條記錄不完全相同,而是指能夠通過某個字段唯一區分出不同的記錄,這個字段被稱爲主鍵

例如,假設我們把name字段作爲主鍵,那麼通過名字小明或小紅就能唯一確定一條記錄。但是,這麼設定,就沒法存儲同名的同學了,因爲插入相同主鍵的兩條記錄是不被允許的。

對主鍵的要求,最關鍵的一點是:記錄一旦插入到表中,主鍵最好不要再修改,因爲主鍵是用來唯一定位記錄的,修改了主鍵,會造成一系列的影響。

由於主鍵的作用十分重要,如何選取主鍵會對業務開發產生重要影響。如果我們以學生的身份證號作爲主鍵,似乎能唯一定位記錄。然而,身份證號也是一種業務場景,如果身份證號升位了,或者需要變更,作爲主鍵,不得不修改的時候,就會對業務產生嚴重影響。

所以,選取主鍵的一個基本原則是:不使用任何業務相關的字段作爲主鍵。

因此,身份證號、手機號、郵箱地址這些看上去可以唯一的字段,均不可用作主鍵。

作爲主鍵最好是完全業務無關的字段,我們一般把這個字段命名爲id。常見的可作爲id字段的類型有:
自增整數類型: 數據庫會在插入數據時自動爲每一條記錄分配一個自增整數,這樣我們就完全不用擔心主鍵重複,也不用自己預先生成主鍵;
全局唯一GUID類型: 使用一種全局唯一的字符串作爲主鍵,類似8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通過網卡MAC地址、時間戳和隨機數保證任意計算機在任意時間生成的字符串都是不同的,大部分編程語言都內置了GUID算法,可以自己預算出主鍵。

對於大部分應用來說,通常自增類型的主鍵就能滿足需求。我們在students表中定義的主鍵也是自增整數類型

這裏需要注意的是:
如果使用自增整數類型,那麼當一張表的記錄數超過2147483647(約21億)時,會達到上限而出錯。使用BIGINT自增類型則可以最多約922億億條記錄。

聯合主鍵的理解

關係數據庫實際上還允許通過多個字段唯一標識記錄,即兩個或更多的字段都設置爲主鍵,這種主鍵被稱爲聯合主鍵

對於聯合主鍵,允許一列有重複,只要不是所有主鍵列都重複即可:

id_num	id_type	other columns...
1	      A	       ...
2	      A	       ...
2	      B	       ...

如果我們把上述表的id_num和id_type這兩列作爲聯合主鍵,那麼上面的3條記錄都是允許的,因爲沒有兩列主鍵組合起來是相同的。
沒有必要的情況下,我們儘量不使用聯合主鍵,因爲它給關係錶帶來了複雜度的上升。

小結

主鍵是關係表中記錄的唯一標識。主鍵的選取非常重要:主鍵不要帶有業務含義,而應該使用BIGINT自增或者GUID類型。主鍵也不應該允許NULL。可以使用多個列作爲聯合主鍵,但聯合主鍵並不常用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章