一.常見的關(guān)系型數(shù)據(jù)庫和非關(guān)系型都有哪些崭别?
1.關(guān)系型數(shù)據(jù)庫:
關(guān)系模型就是指二維表格模型拇涤,因而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系組成的一個數(shù)據(jù)組織铃剔。
常見的有:Oracle费变、DB2粥帚、PostgreSQL灰蛙、Microsoft SQL Server祟剔、Microsoft Access、MySQL摩梧、浪潮K-DB
2.非關(guān)系型數(shù)據(jù)庫:
常見的有:NoSql物延、Cloudant、MongoDB仅父、redis叛薯、HBase
NoSQL(Not only SQL)浑吟,泛指非關(guān)系型的數(shù)據(jù)庫。隨著互聯(lián)網(wǎng)
web2.0 網(wǎng)站的興起耗溜,傳統(tǒng)的關(guān)系數(shù)據(jù)庫在應(yīng)付 web2.0 網(wǎng)站组力,特別是超
大規(guī)模和高并發(fā)的 SNS 類型的 web2.0 純動態(tài)網(wǎng)站已經(jīng)顯得力不從心,暴露了很多難以克服的問題抖拴,而非關(guān)系型的數(shù)據(jù)庫則由于其本身的特點得到了非常迅速的發(fā)展燎字。NoSQL 數(shù)據(jù)庫的產(chǎn)生就是為了解決大規(guī)模數(shù)據(jù)集合多重數(shù)據(jù)種類帶來的挑戰(zhàn),尤其是大數(shù)據(jù)應(yīng)用難題阿宅。菲關(guān)系型數(shù)據(jù)庫可以為大數(shù)據(jù)建立快速候衍、可擴(kuò)展的存儲庫。
兩種數(shù)據(jù)庫之間的區(qū)別:對于關(guān)系型數(shù)據(jù)庫
關(guān)系型數(shù)據(jù)庫的特性
1洒放、關(guān)系型數(shù)據(jù)庫蛉鹿,是指采用了關(guān)系模型來組織數(shù)據(jù)的數(shù)據(jù)庫;
2往湿、關(guān)系型數(shù)據(jù)庫的最大特點就是事務(wù)的一致性妖异;
3、簡單來說煌茴,關(guān)系模型指的就是二維表格模型随闺,而一個關(guān)系型數(shù)據(jù)庫就是由二維表及其之間的聯(lián)系所組成的一個數(shù)據(jù)組織。
關(guān)系型數(shù)據(jù)庫的優(yōu)點
1蔓腐、容易理解:二維表結(jié)構(gòu)是非常貼近邏輯世界一個概念矩乐,關(guān)系模型相對網(wǎng)狀、層次等其他模型來說更容易理解回论;
2散罕、使用方便:通用的SQL語言使得操作關(guān)系型數(shù)據(jù)庫非常方便;
3傀蓉、易于維護(hù):豐富的完整性(實體完整性欧漱、參照完整性和用戶定義的完整性)大大減低了數(shù)據(jù)冗余和數(shù)據(jù)不一致的概率;
4葬燎、支持SQL误甚,可用于復(fù)雜的查詢。
關(guān)系型數(shù)據(jù)庫的缺點
1谱净、為了維護(hù)一致性所付出的巨大代價就是其讀寫性能比較差窑邦;
2、固定的表結(jié)構(gòu)壕探;
3冈钦、高并發(fā)讀寫需求;
4李请、海量數(shù)據(jù)的高效率讀寫瞧筛;
對于非關(guān)系型數(shù)據(jù)庫
非關(guān)系型數(shù)據(jù)庫的特性
1厉熟、使用鍵值對存儲數(shù)據(jù);
2较幌、分布式揍瑟;
3、一般不支持ACID特性乍炉;
4月培、非關(guān)系型數(shù)據(jù)庫嚴(yán)格上不是一種數(shù)據(jù)庫,應(yīng)該是一種數(shù)據(jù)結(jié)構(gòu)化存儲方法的集合恩急。
非關(guān)系型數(shù)據(jù)庫的優(yōu)點
1、無需經(jīng)過sql層的解析纪蜒,讀寫性能很高衷恭;
2、基于鍵值對纯续,數(shù)據(jù)沒有耦合性随珠,容易擴(kuò)展;
3猬错、存儲數(shù)據(jù)的格式:nosql的存儲格式是key,value形式窗看、文檔形式、圖片形式等等倦炒,文檔形式显沈、圖片形式等等,而關(guān)系型數(shù)據(jù)庫則只支持基礎(chǔ)類型逢唤。
非關(guān)系型數(shù)據(jù)庫的缺點
1拉讯、不提供sql支持,學(xué)習(xí)和使用成本較高鳖藕;
2魔慷、無事務(wù)處理,附加功能bi和報表等支持也不好著恩;
二.Mysql常用的三種數(shù)據(jù)庫引擎比較
三.簡述數(shù)據(jù)庫的三大范式
第一范式(1NF):原子性 字段不可再分,否則就不是關(guān)系數(shù)據(jù)庫;
第二范式(2NF):唯一性 一個表只說明一個事物;
第三范式(3NF):每列都與主鍵有直接關(guān)系院尔,不存在傳遞依賴;
PS:第二范式要遵循第一范式,第三范式要遵循第二范式喉誊。
簡單來說:
1NF:列表字段不可分;
2NF:有主鍵且非主鍵依賴主鍵邀摆;
3NF:非主鍵字段不能相互依賴;
不符合第一范式的例子(關(guān)系數(shù)據(jù)庫中create不出這樣的表):
表:姓名,性別裹驰,電話
問題:若某個人有兩個電話隧熙,家庭電話和手機(jī),這樣則不符合第一范式幻林。
解決:把電話列分成兩個列即可贞盯。
不符合第二范式的例子:
表:學(xué)號, 姓名, 年齡, 課程名稱, 成績, 學(xué)分;
這個表明顯說明了兩個事務(wù):學(xué)生信息, 課程信息音念,不符合第二范式。
存在問題:數(shù)據(jù)冗余躏敢,每條記錄都含有相同信息闷愤。
解決:分成學(xué)生表和課程表分別存儲即可。
不符合第三范式的例子:
學(xué)號, 姓名, 年齡, 所在學(xué)院, 學(xué)院聯(lián)系電話件余,關(guān)鍵字為單一關(guān)鍵字"學(xué)號";
存在依賴傳遞: (學(xué)號) → (所在學(xué)院) → (學(xué)院地點, 學(xué)院電話)
存在問題:
數(shù)據(jù)冗余:有重復(fù)值讥脐;
解決:分成學(xué)生表,學(xué)院表即可啼器。