1.數據庫系統
數據庫系統有數據庫、數據庫管理系統、應用系統和數據庫管理員組成。數據庫呢就是數據的集合,應用系統和管理員就不說了,數據庫管理系統即常說的DBMS,比如我們用的mysql,oracle,sql server等就是DBMS。
數據庫系統的結構分為外部結構和內部結構,外部結構有單用戶數據庫系統,即數據庫系統都安裝在一台計算機上,這雖已不再流行,但是也是個人開發的必由之路。除此之外還有主從式結構,分布式結構,客戶/服務器結構。
數據庫系統的內部系統采用三級模式和二級映像。
外模式又叫做子模式或者用戶模式;模式又稱邏輯模式;內模式也稱存儲模式或者物理模式;此為三級模式。
上圖中連接外模式和模式的映射1即為外模式-模式映像;連接模式和內模式的的映射2即為模式-內模式映像,這即為二級映像。
這一部分就是簡單了解數據庫系統的基本概念,來溫習一下這些名詞,找找感覺🤭
2.數據模型
關系模型是主流數據模型,關系模型的完整性約束包括實體完整性、參照完整性和用戶定義完整性。這里后面會詳細介紹。常用的模型還有層次數據模型和網狀數據模型,不過已經逐漸被淘汰了。
3.ER圖(重點)
ER圖全稱實體-聯系圖,是一種概念模型,該模型方便轉化為數據庫管理系統實際支持的數據模型(比如關系模型)。E-R圖最重要的三個部分分別是實體、屬性、聯系。
實體即為Entity,比如學生、教師、汽車等能夠相互區分的任何物體;屬性即為實體的特征,比如學號、工號、品牌等等;唯一可以確定實體集中的實體的屬性值稱為該實體集的超碼;例如對於部門來說,{部門號}、{部門名稱}和{部門號、部門名稱}都是超碼,如果一個K是超碼,那么K的任意超集肯定也是超碼,比如學生的{學號}是超碼,那么{學號,姓名}也是超碼,因為也能決定出唯一的一個學生;因此,真子集都不是超碼的極小超碼會更有意義,稱之為候選碼;所謂主碼(主鍵)即為人為選中的候選碼。
- 屬性也可以根據不同方面進行詳細分類,例如如果一個屬性不能划分為更小的部分,就稱其為簡單屬性,可以划分就稱為復合屬性;比如有學生一個屬性稱為個人信息,這個屬性仍可分為家庭住址、電話號碼等成分屬性,這樣的屬性即可稱為復合屬性;
- 如果一個屬性只能取一個值,那么稱為單值屬性,否則即為多值屬性;例如學生的電話號碼,可能學生有不止一個電話號碼,,那么這個屬性就稱為多值屬性;
- 如果一個屬性的值不能通過其他屬性的值推到出來,那么稱為基本屬性,否則稱為派生屬性;派生屬性可以通過其他相關屬性計算得到,因此也叫做計算屬性,因此派生屬性的值可以不進行存儲,例如學生的年齡可以通過出生日期屬性計算得到,那么年齡其實就是一個派生屬性。
聯系即Relationship,用於描述各實體之間的關系,兩個實體之間的聯系只有四種:一對一聯系,一對多聯系,多對一聯系,多對多聯系;這個應該很好理解,就不再贅述了。
ER圖的成分:橢圓表示屬性,多值屬性使用雙邊橢圓,派生屬性使用虛線橢圓,其他的屬性就使用單實邊橢圓;矩形框表示實體;菱形框表示聯系,若是一對一聯系,則在菱形框的兩側均標注1,若是一對多或者多對一的聯系,則在多的那一側標注n,一的那一側標注1;如果是多對多聯系,則分別標注m和n等符號,或者使用 * 來表示;(注意聯系有時也會有自己的屬性,直接與菱形框相連即可)
4.ER圖實例
某公司有若干個部門;每個部門有若干職工、項目和辦公室。每個職工都有工作經歷,記錄該職工做過的每項工作的起止年月和工資。每個辦公室有若干部電話。對於部門,需要記錄部門號(惟一)、部門名稱、預算費和部門領導的職工號。對於職工,除工作經歷外,還需要記錄職工號(惟一)、職工姓名、家庭住址、當前參加的項目、所在辦公室、電話等信息。對於項目,需要記錄項目號(惟一)、項目名稱和預算。對於辦公室,需要記錄辦公室名稱(惟一)、位置、電話。
隨手一畫,如果以后發現有不對的地方在來修改,更新。