第一正規化是第二和第三正規化的基礎,是最基本的正規化。第一正規化包括下列的指導原則:
在任何乙個關聯式資料庫中,第一正規化是對關係模式的基本要求,不滿足第一正規化的資料庫就不是關係型資料庫。
表1.1不符合第一正規化的學生資訊表
學號 姓名
性別 年齡
班級9527
東*方 男
20計算機系3班
因為上表中的班級屬性中包含了多個值,所以它不符合第一正規化。改進後的結構如下表所示:
表1.2符合第一正規化的學生資訊表
學號 姓名
性別 年齡
系別 班級
9527
東*方 男
20計算機 3班
第二正規化是第一正規化的基礎上建立起來的,即滿足第二正規化必先滿足第一正規化。第二正規化要求資料庫中的每個實體(即各個記錄行)必須可以被唯一地區分。要求實體的屬性完全依賴於主關鍵字,即不能存在僅依賴主關鍵字一部分的屬性。
不符合第二正規化的示範(員工工資表):
(員工編號,崗位)-》(決定)(姓名、年齡、學歷、基本工資、績效工資、資金)
不符合的原因是,在上面的關係中,還可以進一步拆分為如下兩種決定關係:
(員工編號)-》(決定)(姓名、年齡、學歷)
(崗位)-》(決定)(基本工資)
符合第二正規化的示範(將上面的表拆分為三張表):
員工檔案表:employee(員工編號、姓名、年齡、學歷)
崗位工資表:quarters(崗位、基本工資)
員工工資表:pay(員工編號、崗位、績效工資、獎金)
第三正規化是在第二正規化的基礎上建立起來的,即滿足第三正規化必先滿足第二正規化。第三正規化要求關係表不存在非關鍵字列對任意候選關鍵字列的傳遞函式依賴,也就是說,第三正規化要求乙個關係表中不包含已在其他表中已包含的非主關鍵字資訊。
示範:(員工編號)-》(決定)(員工姓名、年齡、部門編號、部門經理)
上面的這個關係是符合第二正規化的,但它不符合第三正規化,因為該關係表內部隱含著如下決定關係:
(員工編號)->(決定)(部門編號)-》(決定)(部門經理)
上面的關係表存在非關鍵字段「部門經理」對關鍵字「員工編號」的傳遞函式依賴。
更改為符合第三正規化關係:
員工資訊表:employee(員工編號、員工姓名、年齡、部門編號)
部門資訊表:department(部門編號、部門經理)
對於關聯式資料庫的設計,理想的設計目標是按照「規範化」原則儲存資料,因為這樣做能夠消除資料冗餘、更新異常、插入異常和刪除異常。
一重Prototype寫法
每個專案產品都會讓你加埋點,你是願意花幾天乙個個加,還是願意幾分鐘乙個小時加完去喝茶聊天?來試試這520web工具,高效加埋點,目前我們公司100號前端都在用,因為很好用,所以很自然普及開來了,推薦給大家吧 錄音管理 let record function recordermanager recor...
ROS學習(一) 重要概念
ros ros是乙個用於開發機械人應用程式的 類似作業系統的機械人軟體平台。ros提供 開發機械人應用程式時所需的硬體抽象 子裝置控制,以及機械人工程中廣泛使用的傳 感 識別 繪圖 運動規劃等功能。此外ros還提供程序之間的訊息解析 功能包管理 庫和豐富的開發及除錯工具。主節點主節點 master ...
Oracle筆記之一
1.oracle 複製表 create table tmps as select from emp 2.使用子查詢插入資料 insert into temps select from user objects 3.oracle 中遞迴查詢的使用 select from emp start with ...