范式知識點

Mysql數據庫

?前關系數據庫有六種范式:
  第?范式(1NF)、第?范式(2NF)、第三范式(3NF)、巴斯-科德范式
BCNF)、第四范式(4NF)和第五范式(5NF,?稱完美范式)。滿?最低要求的范式是
第?范式(1NF)。在第?范式的基礎上進?步滿?更多規范要求的稱為第?范式
2NF),其余范式以次類推。?般說來,數據庫只需滿?第三范式(3NF)就?了。所以
這?就只記錄三范式相關的知識。

? 范式

1NF:字段不可分; 2NF:有主鍵,?主鍵字段依賴主鍵; 3NF:?主鍵字段不能相互依賴;
解釋: 1NF:原?性 字段不可再分,否則就不是關系數據庫; 2NF:唯?性 ?個表只說明?個事
; 3NF:每列都與主鍵有直接關系,不存在傳遞依賴;

第?范式(1NF

  即表的列的具有原?性,不可再分解,即列的信息,不能分解, 只要數據庫是關系型數
據庫(mysql/oracle/db2/informix/sysbase/sql server),就?動的滿?1NF。數據庫表的每?
列都是不可分割的原?數據項,?不能是集合,數組,記錄等?原?數據項。如果實體中
的某個屬性有多個值時,必須拆分為不同的屬性 。通俗理解即?個字段只存儲?項信息。
關系型數據庫: mysql/oracle/db2/informix/sysbase/sql server ?關系型數據庫: (特點:
?向對象或者集合) NoSql數據庫: MongoDB/redis(特點是?向?檔)

第?范式(2NF

  第?范式(2NF)是在第?范式(1NF)的基礎上建?起來的,即滿?第?范式
2NF)必須先滿?第?范式(1NF)。第?范式(2NF)要求數據庫表中的每個實例或?
必須可以被惟?地區分。為實現區分通常需要我們設計?個主鍵來實現(這?的主鍵不包含
業務邏輯)即滿?第?范式前提,當存在多個主鍵的時候,才會發?不符合第?范式的情況。?如有
兩個主鍵,不能存在這樣的屬性,它只依賴于其中?個主鍵,這就是不符合第?范式。通
俗理解是任意?個字段都只依賴表中的同?個字段。(涉及到表的拆分)

第三范式(3NF

  滿?第三范式(3NF)必須先滿?第?范式(2NF)。簡??之,第三范式(3NF)要
求?個數據庫表中不包含已在其它表中已包含的?主鍵字段。就是說,表的信息,如果能
夠被推導出來,就不應該單獨的設計?個字段來存放(能盡量外鍵join就?外鍵join)。很多
時候,我們為了滿?第三范式往往會把?張表分成多張表。
即滿?第?范式前提,如果某?屬性依賴于其他?主鍵屬性,?其他?主鍵屬性?依賴于
主鍵,那么這個屬性就是間接依賴于主鍵,這被稱作傳遞依賴于主屬性。 通俗解釋就是?
張表最多只存兩層同類型信息。
巴斯-科德范式(BCNF
Boyce-Codd Normal Form(巴斯-科德范式)
3NF基礎上,任何?主屬性不能對主鍵?集依賴(在3NF基礎上消除對主碼?集的依賴)
巴斯-科德范式(BCNF)是第三范式(3NF)的?個?集,即滿?巴斯-科德范式(BCNF
必須滿?第三范式(3NF)。通常情況下,巴斯-科德范式被認為沒有新的設計規范加?,
只是對第?范式與第三范式中設計規范要求更強,因?被認為是修正第三范式,也就是
說,它事實上是對第三范式的修正,使數據庫冗余度更?。這也是BCNF不被稱為第四范式
的原因。某些書上,根據范式要求的遞增性將其稱之為第四范式是不規范,也是更讓?不
容易理解的地?。?真正的第四范式,則是在設計規范中添加了對多值及依賴的要求

第四范式

對于第四范式,從理論層?來講是,關系模式R1NF,如果對于R對于R的每個?平凡多值依
XY(Y不屬于X),X都含有候選碼,則R4NF4NF就是限制關系模式的屬性之間不允許有
?平凡且?函數依賴的多值依賴。顯然?個關系模式是4NF,則必為BCNF
也就是說,當?個表中的?主屬性互相獨?時(3NF),這些?主屬性不應該有多
值。若有多值就違反了第四范式。
第五范式不得存在不遵循鍵約束的?平凡連接依賴。如果且只有?個表符合4NF,同時其中的每個
連接依賴被候選鍵所包含,此表才符合第五依賴。

? 反三范式

  沒有冗余的數據庫未必是最好的數據庫,有時為了提?運?效率,提?讀性能,就必
須降低范式標準,適當保留冗余數據。具體做法是: 在概念數據模型設計時遵守第三范
式,降低范式標準的?作放到物理數據模型設計時考慮。降低范式就是增加字段,減少了
查詢時的關聯,提?查詢效率,因為在數據庫的操作中查詢的?例要遠遠?于DML的?
例。但是反范式化?定要適度,并且在原本已滿?三范式的基礎上再做調整的

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450414.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450414.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Tensorflow入門----占位符、常量和Session

安裝好TensorFlow之后,開一個python環境,就可以開始運行和使用TensorFlow了。 先給一個實例, #先導入TensorFlowimport tensorflow as tf # Create TensorFlow object called hello_constanthello_constant tf.constant(Hello World!) with …

C語言union關鍵字

union 關鍵字的用法與struct 的用法非常類似。union 維護足夠的空間來置放多個數據成員中的“一種”,而不是為每一個數據成員配置空間,在union 中所有的數據成員共用一個空間,同一時間只能儲存其中一個數據成員,所有的數據成員具有…

js 深拷貝 和 淺拷貝

1、 ...運算符 (淺拷貝) let obj {a:1,b:2}; let obj2 {...obj}; obj.a3 obj //{a: 3, b: 2} obj2 //{a: 1, b: 2}a {a:[{b:1}]}; b a ;b.a[0].b 2; //b {a:[{b:2}]}a // a {a:[{b:2}]} 2、 JSON.parse(JSON.stringify(參數))…

軟考如何備考

軟考上半年 報名時間 3月 考試時間 5月 備考持續時間:一個半月,每天至少兩個小時。 第一輪 基礎知識輪, 15天 在這一輪中如果碰到無法理解的知識點一定不要過于糾結,往后學,一般后面的學著學著之前的內容就…

Python學習第一天-第2節

*本節課內容參見:https://www.cnblogs.com/jin-xin/articles/7459977.html運行第一個Python程序 print(hello world) 將文本文件保存為以.py結尾的文件,如hello_world.py ,在終端中,運行命令:Python hello_world.py&am…

SpringMVC之組合注解@GetMapping

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Spring4.3中引進了{GetMapping、PostMapping、PutMapping、DeleteMapping、PatchMapping},來幫助簡化…

資源下載地址

1、nginx http://nginx.org/en/download.html 2、nodejs http://nodejs.cn/download/ 3、vscode https://code.visualstudio.com/ 4、canal https://github.com/alibaba/canal/releases/download/canal-1.1.4/canal.deployer-1.1.4.tar.gz 5、jenkins https://jenkins.io/i…

C語言volatile關鍵字—最易變的關鍵字

volatile 是易變的、不穩定的意思。很多人根本就沒見過這個關鍵字,不知道它的存在。也有很多程序員知道它的存在,但從來沒用過它。我對它有種“楊家有女初長成,養在深閨人未識” 的感覺。volatile 關鍵字和const 一樣是一種類型修飾符,用它修…

mysql 備份腳本

#!/bin/bash INNOBACKUPEXFULL"/usr/bin/innobackupex" MYSQL_CMD --socket/ssd/mysql/3346/tmp/mysql.sock --userroot --passwordmysqlpassword --port3346 MYSQL_UP --userroot --passwordmysqlpassword --port3346 #mysqladmin的用戶名和密碼 TMPLOG"/dat…

爆棧的處理方法

爆棧指遞歸中,存儲的信息量大于系統棧的內存。 信息量包括元素編號,每一層中開的變量。 和遞歸的層數正相關。 (雖然noip一般開棧) 1.手寫棧 while(top){ int xsta[top]; for(each son) if(has son){ //blablabla sta[top]son; h…

項目面試題

項目面試題 1.描述最熟悉的或者(最近)的一個項目 ? 目的:檢測技術和項目的熟悉程度工作職責 回答:項目名稱,項目的甲方,背景,實現的目的和意義,該項目主要是為了解決什…

MySQL定時備份(全量備份+增量備份)

MySQL 定時備份 參考 zone7_ 的 實戰-MySQL定時備份系列文章 參考 zmcyu 的 mysql數據庫的完整備份、差異備份、增量備份 更多binlog的學習參考馬丁傳奇的 MySQL的binlog日志,這篇文章寫得認真詳細,如果看的認真的話,肯定能學的很好的。 如果…

java 接口可以多繼承

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 接口是常量值和方法定義的集合。接口是一種特殊的抽象類。 java類是單繼承的。classB Extends classA java接口可以多繼承。Interface…

C語言struct關鍵字詳解—結構體

struct 是個神奇的關鍵字,它將一些相關聯的數據打包成一個整體,方便使用。在網絡協議、通信控制、嵌入式系統、驅動開發等地方,我們經常要傳送的不是簡單的字節流(char 型數組),而是多種數據組合起來的一個…

JDK1.8使用Dubbo時需注意

2019獨角獸企業重金招聘Python工程師標準>>> Dubbo自帶的很多包都比較舊了,其中的javassist在JDK1.8上運行會報錯 而且錯誤通常比較詭異,javassist是編輯和創建Java字節碼的類庫,常見的錯誤會從spring中報出 解決辦法:…

Java 11 已發布,String 還能這樣玩!

在文章《Java 11 正式發布,這 8 個逆天新特性教你寫出更牛逼的代碼》中,我有介紹到 Java 11 的八個新特性,其中關于 String 加強部分,我覺得有點意思,這里單獨再拉出來講。 Java 11 增加了一系列的字符串處理方法&…

Redis1 晨考題

Redis1 晨考題 1.Redis 是什么 ? redis 是一個開源的使用 ANSI C 語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value 的內存數據庫,并提供多種語言的 API。 2.NOSQL 是什么 ?出現的目的和意義是什么 ? NoSQL 泛指…

C語言void關鍵字

void 有什么好講的呢?如果你認為沒有,那就沒有;但如果你認為有,那就真的有。有點像“色即是空,空即是色”。一、void a? void 的字面意思是“空類型”,void *則為“空類型指針”,vo…

深入了解RabbitMQ工作原理及簡單使用

深入了解RabbitMQ工作原理及簡單使用 RabbitMQ系列文章 RabbitMQ在Ubuntu上的環境搭建深入了解RabbitMQ工作原理及簡單使用RabbitMQ交換器Exchange介紹與實踐RabbitMQ事務和Confirm發送方消息確認——深入解讀使用Docker部署RabbitMQ集群你不知道的RabbitMQ集群架構全解RabbitM…

使用el-checkbox實現全選,點擊失效沒有反應

最近在公司接收到了一個需求,給收藏夾的書籍添加批量、全選刪除實現思路:點擊全選改變item的checked,改變item的checked,重新便利一下所有item的checked來改變全選的selectAll1)該組件基本功能已經實現,che…