摘要:確切地說(shuō),數(shù)據(jù)庫(kù)軟件應(yīng)稱為數(shù)據(jù)庫(kù)管理系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)英語(yǔ),是創(chuàng)建在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。關(guān)系鍵關(guān)系鍵是關(guān)系數(shù)據(jù)庫(kù)的重要組成部分。
數(shù)據(jù)庫(kù)基礎(chǔ)
共同編輯,修正錯(cuò)誤,這里點(diǎn)擊進(jìn)去
數(shù)據(jù)庫(kù)(Database,DB)是按照數(shù)據(jù)結(jié)構(gòu)來(lái)組織、存儲(chǔ)和管理數(shù)據(jù)的建立在計(jì)算機(jī)存儲(chǔ)設(shè)備上的倉(cāng)庫(kù)。
簡(jiǎn)單來(lái)說(shuō)是本身可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)進(jìn)行新增、截取、更新、刪除等操作。數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。數(shù)據(jù)庫(kù)有很多種類型,從最簡(jiǎn)單的存儲(chǔ)有各種數(shù)據(jù)的表格到能夠進(jìn)行海量數(shù)據(jù)存儲(chǔ)的大型數(shù)據(jù)庫(kù)系統(tǒng)都在各個(gè)方面得到了廣泛的應(yīng)用。
什么是數(shù)據(jù)庫(kù)人們通常用數(shù)據(jù)庫(kù)這個(gè)術(shù)語(yǔ)來(lái)代表他們使用的數(shù)據(jù)庫(kù)軟件。這是不正確的,它是引起混淆的根源。確切地說(shuō),數(shù)據(jù)庫(kù)軟件應(yīng)稱為DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))。數(shù)據(jù)庫(kù) 是通過(guò) DBMS 創(chuàng)建和操縱的容器。數(shù)據(jù)庫(kù)可以是保存在硬設(shè)備 上的文件,但也可以不是。在很大程度上說(shuō),數(shù)據(jù)庫(kù)究竟是 文件還是別的什么東西并不重要,因?yàn)槟悴⒉恢苯釉L問數(shù)據(jù) 庫(kù);你使用的是DBMS,它替你訪問數(shù)據(jù)庫(kù)。
數(shù)據(jù)庫(kù)指的是以一定方式儲(chǔ)存在一起、能為多個(gè)用戶共享、具有盡可能小的冗余度、與應(yīng)用程序彼此獨(dú)立的數(shù)據(jù)集合。簡(jiǎn)單來(lái)說(shuō)可視為電子化的文件柜——存儲(chǔ)電子文件的處所,用戶可以對(duì)文件中的數(shù)據(jù)運(yùn)行新增、截取、更新、刪除等操作。
數(shù)據(jù)庫(kù)分類數(shù)據(jù)庫(kù)的可多了去了,在維基百科上面有下面這些數(shù)據(jù)庫(kù),并粗略的分了個(gè)類別。一看這里面的學(xué)問大了去了,還是先搬一些代表性的吧,長(zhǎng)長(zhǎng)見識(shí),要深入了解各種概念推薦看《數(shù)據(jù)庫(kù)系統(tǒng)概論》。
關(guān)系數(shù)據(jù)庫(kù)(英語(yǔ):Relational database),是創(chuàng)建在關(guān)系模型基礎(chǔ)上的數(shù)據(jù)庫(kù),借助于集合代數(shù)等數(shù)學(xué)概念和方法來(lái)處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)。現(xiàn)實(shí)世界中的各種實(shí)體以及實(shí)體之間的各種聯(lián)系均用關(guān)系模型來(lái)表示。關(guān)系模型是由埃德加·科德于1970年首先提出的,并配合“科德十二定律”?,F(xiàn)如今雖然對(duì)此模型有一些批評(píng)意見,但它還是數(shù)據(jù)存儲(chǔ)的傳統(tǒng)標(biāo)準(zhǔn)。標(biāo)準(zhǔn)數(shù)據(jù)查詢語(yǔ)言SQL就是一種基于關(guān)系數(shù)據(jù)庫(kù)的語(yǔ)言,這種語(yǔ)言執(zhí)行對(duì)關(guān)系數(shù)據(jù)庫(kù)中數(shù)據(jù)的檢索和操作。
MySQL
MariaDB(MySQL的代替品,英文維基百科從MySQL轉(zhuǎn)向MariaDB)
Percona Server(MySQL的代替品)
PostgreSQL
Microsoft Access
Google Fusion Tables
SQL Server
FileMaker
Oracle
Sybase
dBASE
Clipper
FoxPro
幾乎所有的數(shù)據(jù)庫(kù)管理系統(tǒng)都配備了一個(gè)開放式數(shù)據(jù)庫(kù)連接(ODBC)驅(qū)動(dòng)程序,令各個(gè)數(shù)據(jù)庫(kù)之間得以互相集成。
非關(guān)系型數(shù)據(jù)庫(kù)(NoSQL)NoSQL一詞最早出現(xiàn)于1998年,是Carlo Strozzi開發(fā)的一個(gè)輕量、開源、不提供SQL功能的關(guān)系數(shù)據(jù)庫(kù)。當(dāng)代典型的關(guān)系數(shù)據(jù)庫(kù)在一些數(shù)據(jù)敏感的應(yīng)用中表現(xiàn)了糟糕的性能,例如為巨量文檔創(chuàng)建索引、高流量網(wǎng)站的網(wǎng)頁(yè)服務(wù),以及發(fā)送流式媒體。關(guān)系型數(shù)據(jù)庫(kù)的典型實(shí)現(xiàn)主要被調(diào)整用于執(zhí)行規(guī)模小而讀寫頻繁,或者大批量極少寫訪問的事務(wù)。
Key/value最終一致性存儲(chǔ)Apache Cassandra(為Facebook所使用):高度可擴(kuò)展
Dynamo
Hibari
Project Voldemort
Riak
Key/value硬盤存儲(chǔ)LevelDB(Google)
BigTable
MemcacheDB
Tokyo Cabinet
Tuple space
TreapDB
Key/value RAM存儲(chǔ)Oracle Coherence
memcached
Citrusleaf database
Velocity
Redis
Tuple space
Key/value基于Paxos算法的存儲(chǔ)Keyspace
數(shù)據(jù)庫(kù)模型數(shù)據(jù)庫(kù)模型描述了在數(shù)據(jù)庫(kù)中結(jié)構(gòu)化和操縱數(shù)據(jù)的方法,模型的結(jié)構(gòu)部分規(guī)定了數(shù)據(jù)如何被描述(例如樹、表等)。數(shù)據(jù)庫(kù)模型的分類如下:
對(duì)象模型
層次模型(輕量級(jí)數(shù)據(jù)訪問協(xié)議)
網(wǎng)狀模型(大型數(shù)據(jù)儲(chǔ)存)
關(guān)系模型
面向?qū)ο竽P?/p>
半結(jié)構(gòu)化模型
平面模型(表格模型,一般在形式上是一個(gè)二維數(shù)組。如表格模型數(shù)據(jù)Excel)
架構(gòu)數(shù)據(jù)庫(kù)的架構(gòu)可以大致區(qū)分為三個(gè)概括層次:內(nèi)層、概念層和外層。
內(nèi)層:最接近實(shí)際存儲(chǔ)體,亦即有關(guān)數(shù)據(jù)的實(shí)際存儲(chǔ)方式。
外層:最接近用戶,即有關(guān)個(gè)別用戶觀看數(shù)據(jù)的方式。
概念層:介于兩者之間的間接層。
數(shù)據(jù)庫(kù)索引數(shù)據(jù)索引的觀念由來(lái)已久,像是一本書前面幾頁(yè)都有目錄,目錄也算是索引的一種,只是它的分類較廣,例如車牌、身份證字號(hào)、條碼等,都是一個(gè)索引的號(hào)碼,當(dāng)我們看到號(hào)碼時(shí),可以從號(hào)碼中看出其中的端倪,若是要找的人、車或物品,也只要提供相關(guān)的號(hào)碼,即可迅速查到正確的人事物。
數(shù)據(jù)庫(kù)操作:事物事務(wù)(transaction)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做,要么全不做,是一個(gè)不可分區(qū)的工作單位。
數(shù)據(jù)表關(guān)系數(shù)據(jù)庫(kù)沒有數(shù)據(jù)表,關(guān)鍵字、主鍵、索引等也就無(wú)從談起,數(shù)據(jù)表是關(guān)系數(shù)據(jù)庫(kù)中一個(gè)非常重要的對(duì)象,是其它對(duì)象的基礎(chǔ),也是一系列二維數(shù)組的集合,用來(lái)存儲(chǔ)、操作數(shù)據(jù)的邏輯結(jié)構(gòu)。根據(jù)信息的分類情況。一個(gè)數(shù)據(jù)庫(kù)中可能包含若干個(gè)數(shù)據(jù)表,每張表是由行和列組成,記錄一條數(shù)據(jù)數(shù)據(jù)表就增加一行,每一列是由字段名和字段數(shù)據(jù)集合組成,列被稱之為字段,每一列還有自己的多個(gè)屬性,例如是否允許為空、默認(rèn)值、長(zhǎng)度、類型、存儲(chǔ)編碼、注釋等
數(shù)據(jù)類型
在定義數(shù)據(jù)字段的類型對(duì)你的數(shù)據(jù)庫(kù)的優(yōu)化非常重要,數(shù)據(jù)類型決定了數(shù)據(jù)在計(jì)算機(jī)中的存儲(chǔ)格式,代表不同的信息類型,大致可以分為:數(shù)值、日期/時(shí)間和字符串(字符)類型,字符串類型又包括二進(jìn)制類型。
上圖中每一列就是一個(gè)字段,每個(gè)字段都有自己的類型,例如name列為字符串類型,level 列為數(shù)字類型。
關(guān)系鍵關(guān)系鍵是關(guān)系數(shù)據(jù)庫(kù)的重要組成部分。關(guān)系鍵是一個(gè)表中的一個(gè)或幾個(gè)屬性,用來(lái)標(biāo)識(shí)該表的每一行或與另一個(gè)表產(chǎn)生聯(lián)系。一列(或一組列),其值能夠唯一區(qū)分表中每個(gè)行。
主鍵主鍵(primary key或unique key),又稱主碼,數(shù)據(jù)庫(kù)表中對(duì)儲(chǔ)存數(shù)據(jù)對(duì)象予以唯一和完整標(biāo)識(shí)的數(shù)據(jù)列或?qū)傩缘慕M合。一個(gè)數(shù)據(jù)列只能有一個(gè)主鍵,且主鍵的取值不能缺失,即不能為空值(Null)。
表中的任何列都可以作為主鍵,只要它滿足以下條件:
任意兩行都不具有相同的主鍵值;
每個(gè)行都必須具有一個(gè)主鍵值(主鍵列不允許NULL值)。
除MySQL強(qiáng)制實(shí)施的規(guī)則外,應(yīng)該堅(jiān)持的 幾個(gè)普遍認(rèn)可的最好習(xí)慣為:
不更新主鍵列中的值;
不重用主鍵列的值;
不在主鍵列中使用可能會(huì)更改的值。(例如,如果使用一個(gè)名字作為主鍵以標(biāo)識(shí)某個(gè)供應(yīng)商,當(dāng)該供應(yīng)商合并和更改其 名字時(shí),必須更改這個(gè)主鍵。)
超鍵超鍵(superkey),有的文獻(xiàn)稱“超碼”,是在數(shù)據(jù)庫(kù)關(guān)系模式設(shè)計(jì)中能夠唯一標(biāo)示多元組(即“行”)的屬性集。包含所有屬性的集叫做明顯(平凡)超鍵。
候選鍵在關(guān)系模型中,候選鍵或候選碼(candidate key)是某個(gè)關(guān)系變量的一組屬性所組成的集合,它需要同時(shí)滿足下列兩個(gè)條件:
這個(gè)屬性集合始終能夠確保在關(guān)系中能唯一標(biāo)識(shí)元組
在這個(gè)屬性集合中找不出真子集能夠滿足條件
滿足第一個(gè)條件的屬性集合稱為超鍵,因此我們也可以把候選鍵定義為“最小超鍵”,也就是不含有多余屬性的超鍵。
候選鍵的重要性是它們能夠在關(guān)系中唯一標(biāo)識(shí)出不同的元組,因此超鍵也是在設(shè)計(jì)數(shù)據(jù)庫(kù)模式時(shí)需要指定的最重要的約束之一。由于在關(guān)系模型中,每個(gè)關(guān)系都是一個(gè)集合(沒有重復(fù)的元素),所以每個(gè)關(guān)系都至少有一個(gè)候選鍵(因?yàn)樗袑傩越M合必然是個(gè)超鍵)。但是在某些關(guān)系型數(shù)據(jù)庫(kù)中表也能代表多重集,所以在每個(gè)關(guān)系中都顯式地定義至少一個(gè)候選鍵是一條很重要的設(shè)計(jì)原則。數(shù)據(jù)庫(kù)管理系統(tǒng)通常都需要將每個(gè)關(guān)系中的某個(gè)候選鍵定義為主鍵,亦即這個(gè)候選鍵是區(qū)分不同元組時(shí)首選的識(shí)別方式,例如外鍵通常就是引用主鍵而非其他候選鍵。
外鍵外鍵(foreign key,臺(tái)灣譯作外來(lái)鍵),又稱外部鍵。其實(shí)在關(guān)系數(shù)據(jù)庫(kù)中,每個(gè)數(shù)據(jù)表都是由關(guān)系來(lái)連系彼此的關(guān)系,父數(shù)據(jù)表(Parent Entity)的主鍵(primary key)會(huì)放在另一個(gè)數(shù)據(jù)表,當(dāng)做屬性以創(chuàng)建彼此的關(guān)系,而這個(gè)屬性就是外鍵。
比如,學(xué)生跟老師之間是教學(xué)的關(guān)系,學(xué)生數(shù)據(jù)表會(huì)有個(gè)屬性叫指導(dǎo)老師(FK),而這個(gè)值就是對(duì)應(yīng)到老師數(shù)據(jù)表的老師代號(hào)(PK),學(xué)生的指導(dǎo)老師就是外鍵。
代理鍵在關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)中,代理鍵是在當(dāng)數(shù)據(jù)表中的候選鍵都不適合當(dāng)主鍵時(shí),例如數(shù)據(jù)太長(zhǎng),或是意義層面太多,就會(huì)請(qǐng)一個(gè)無(wú)意義的但唯一的字段來(lái)代為作主鍵。
代理鍵是:
Surrogate (1) – Hall, Owlett and Codd (1976)
一個(gè)代理鍵值確定了外部世界的一個(gè)實(shí)體。代理鍵值是數(shù)據(jù)庫(kù)生成的,從來(lái)不顯示給用戶或應(yīng)用程序看。
Surrogate (2) – Wieringa and De Jonge (1991)
一個(gè)代理鍵值確定了數(shù)據(jù)庫(kù)中的一個(gè)對(duì)象。代理鍵值是數(shù)據(jù)庫(kù)生成的,用戶或應(yīng)用程序看不到它。
在實(shí)踐中,代理鍵值通常是個(gè)自動(dòng)遞增的數(shù)字。在Sybase或SQL Server,用identity column標(biāo)識(shí)代理鍵,PostgreSQL里用serial,Oracle里用SEQUENCE,在MySQL里用一個(gè)標(biāo)記有AUTO_INCREMENT的字段。
自然鍵自然鍵與代理鍵相反,它是在自然生活中唯一確定一個(gè)事物的標(biāo)識(shí)。身份證號(hào)就是一個(gè)自然鍵,用于確定一個(gè)人。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/17544.html
摘要:數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)入門教程系列工具掘金工具共同編輯,修正錯(cuò)誤,這里點(diǎn)擊進(jìn)去在這里持續(xù)更新由于軟件是基于模式的數(shù)據(jù)庫(kù)管理系統(tǒng)一個(gè)客戶機(jī)服務(wù)器,因此在日常各種工作中,可以通過(guò)各種客戶端軟件來(lái)與數(shù)據(jù)庫(kù)管理系統(tǒng)關(guān)聯(lián)。 MySQL入門教程系列-1.5 如何學(xué)習(xí)MySQL - 掘金 在這里持續(xù)更新 MySQL入門教程系列-1.5 如何學(xué)習(xí)MySQL 如何學(xué)習(xí) MySQL 這是一個(gè)偽命題,每個(gè)人都有適合自...
閱讀 1440·2021-11-17 09:33
閱讀 3029·2021-10-13 09:39
閱讀 2707·2021-10-09 10:01
閱讀 2453·2021-09-29 09:35
閱讀 3902·2021-09-26 10:01
閱讀 3523·2019-08-26 18:37
閱讀 3154·2019-08-26 13:46
閱讀 1917·2019-08-26 13:39