MySQL讀書筆記-1

MySQL核心技術與最佳實踐-孔祥盛

---------Capital 1---------

數據庫是存儲,管理數據的容器。
該容器包含諸多數據庫對象,例如:表,視圖,索引,函數,存儲過程,觸發器,事件等。

用戶如很能夠訪問到該容器中的數據庫對象呢?
-> 答:通過數據庫管理系統(DBMS= Databse Managementsystem),用戶可以實現對對象們的增刪改查。
DBMS通常會選擇某種“數學模型”來管理DB,常見的有:
層次模型,
網狀模型,
關系模型,
面向對象模型。
其中關系模型最受歡迎,對應的管理系統被稱為RDBMS=Ralational Databse Managementsystem.

°°關系數據庫管理系統/RDBMS

知名的有德國SAP的Sybase,美國甲骨文的Oracle,MySQL,還有被集成在用戶程序中的SQLite。

所謂“關系”,實質上是一張二維表(Table,也被稱為數據表,表)。一個DB常包含多個二維表。表中列(字段)都由一個列名進行標記;行即紀錄。乍一看和電子表格(如Excel)很想,但不同的是,DB Table的字段名不能重復,且每一列都必須制定某種數據類型。

°°SQL

SQL=Structured Query Language結構化查詢語言,是應用最廣的關系數據庫語言。

不同的管理系統會有基于SQL,但稍作修改,只能自己用的SQL擴展語句,為了方便區分,把標準的稱為“SQL語句”,擴展部分稱為“MySQL命令”或者“SQLite命令”。(拿SQLite來說,SQLite遵守ACID,實現了大多數SQL標準。它使用動態的、弱類型的SQL語法。)

對于上面問題的優化/解決方法:
遵守一定的SQL編碼規范,例如:
1. 命名規范:
使用用英文語義;
常用駝峰標記法(第一個單詞首字母小寫,其余單詞首字母大寫)或者下劃線分割法(所有字母小寫,間隔用表示)
避免在名字中出現關鍵字(table,database等)
2. 注釋:
MySQL單行注釋以#或者兩個短劃線加上一個空格(“
_ ”)開始;
多行注釋為/* ... */
3. 其他:
關鍵字不區分大小(database=DATABASE);
表名等變量區分大小

°°ER圖

ER=Entity-Relationship Diagram。
關系數據庫的設計從ER圖的設計開始。ER圖集可以表示現實世界中的事物,又可以表示事物之間的關系,它描述了軟件系統的數據存儲需求。其中E表示實體,R表示關系,ER圖由實體-屬性-關系3要素構成!
要素1: 實體/Entity:
用于表示現實世界具有相同屬性的事物的集合,而不是某一具體事物。如圖,用矩形表示,每個實體由唯一的實體名標識。
數據庫開發中,每個實體對應一個數據表/Table。
要素2: 屬性/Attribute:
用于表示實體的某種特征,也可以使用屬性表示實體之間關系的特征。如圖,屬性都寫在實體矩形的內部,每個屬性由唯一的屬性名標識。

實體/Entity與屬性

? 注意:ER圖中,屬性應該是一個不可再分的最小單元!如果屬性能夠再分,則(1)可以考慮分開成多個屬性,則(2)可以考慮將屬性“升級”為另一個實體。
例如:屬性“聯系方式”可分為電話,Email,QQ,則
(1)將“聯系方式”拆分為三個屬性“電話”,“Email”和“QQ”
(2)將“聯系方式”升級為實體,該實體有“電話”,“Email”和“QQ”三個屬性

要素3: 關系/Relationship:用于表示實體間存在的聯系。在ER圖中用一條線段表示。
? 注意:這種關系是雙向的。例如班級實體與學生實體之間的雙向關系中,(1)一個班級包含n個學生和(2)一個學生只能屬于一個班級,這兩個“單向”的關系組成了這條“雙向”的聯系。 -> 這點很重要,因為有時候從另一個方向紀錄關系會容易得多。
->->在ER圖中,實體間關系有這3個重要概念:基數,元,關聯 ->->
** 1)基數/Cardinality/Kardinalit?t:**
表示一個實體到另一個實體之間關聯的數目。是針對關系之間的某個方向提出的概念。可以是取值范圍/具體數值。
-> 當基數min=1時,表示強制關系/mandatory,對應于非空約束/Not Null Constraint
-> 當基數min=0時,表示可選關系/optional

基數(強制關系和可選關系) 注意:兩者表達方式不同!!

-> 從基數的角度,可以將關系分為一對一(1:1),一對多(1:m),多對多(n:m)

2)元/set-theoretic:
表示關系所關聯的實體個數,上面所提到的每個關系都是二元關系/Binary relation。有些實體可能存在一元關系/回歸關系,或者多元關系(例如三元關系/ternary relation)

3)關聯/association:
一元關系:例如人與人之間的“夫妻關系”。假設現在要加上“登記時間”這個屬性,就要用到關聯/association。如圖

關聯在一元關系中的應用

多元關系:直接貼圖如下


關聯在多元關系中的應用

ER圖 設計原則:一事一物
a)屬性應該存在且只屬于某一個地方
b)實體作為一個獨立的個體,不能存在于另一個實體中作為屬性出現
c)在一張ER圖中,一個實體最好只出現一次

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容