1. 程式人生 > >數據庫01-範式總結

數據庫01-範式總結

不可 serve mysql配置 start post 去掉 登錄 對象 mys

數據庫:文檔型sqlite,服務型mysql
範式:關系模式-一張表的結構 關系-一張實例化了的數據表
1NF的定義為:每個屬性都不可再分
2NF:消除了非主屬性對於碼的部分函數依賴(非主屬性不能由部分碼確定,必須由全部碼才能 唯一確定非主屬性)
解決方法:把部分依賴的關系,形成新的表分離
進步:數據冗余過大 修改異常
3NF:消除了非主屬性對於碼的傳遞函數依賴(非主屬性之間存在著主鍵的關系)
解決方法:直接把非主傳遞的屬性分成新的表,在原表中去掉非主的非主屬性
進步:數據冗余過大 刪除異常
BCNF:消除主屬性對於碼的部分與傳遞函數依賴


總結:2範式:主和非主的關系解除
3範式:非主屬性之間的解除
BCDF:主屬性之間的解除
問題所在:
數據冗余過大 :表重復太多
插入異常:只要碼沒有確定,非主屬性就不能往表裏面寫入
刪除異常:一旦把主鍵刪完了,對應的非主屬性全部都消失了
修改異常:一個屬性在多個表中都有記錄,刪除一個表的,別的表中就會有異常
補充:
函數依賴 :‘於’代表的是反方向
完全函數依賴:學號 F→ 姓名
部分函數依賴:(學號,課名) P→ 姓名
傳遞函數依賴: Z 函數依賴於 Y,且 Y 函數依賴於 X (『Y 不包含於 X,且 X 不函數依 賴於 Y』這個前提),那麽我們就稱 Z 傳遞函數依賴於 X

屬性:
“碼”:唯一標示確定一條記錄的屬性(可以是一個字段也可以是多個字段)
“主屬性”:當碼是多個對象的時候,其中的任意一個屬性就是主屬性
“部分函數依賴”:非主屬性由碼的一部分就能唯一確定
數據庫Linux下安裝:
安裝:sudo apt-get install mysql-server mysql-client
service mysql start service mysql stop service mysql restart
允許遠程連接
找到mysql配置文件並修改
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

將bind-address=127.0.0.1註釋
登錄mysql,運行命令
grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘mysql‘ with grant option;
flush privileges;
重啟mysql




數據庫01-範式總結