第一正規化(1nf)、第二正規化(2nf)、第三正規化(3nf)、巴斯-科德正規化(bcnf)、
第四正規化(4nf)和第五正規化(5nf,又稱完美正規化)。
資料庫表的每一列都是不可分割的原子資料項,而不是陣列、集合。即實體中的某個屬性有多值
時,必須拆分為不同的屬性。在符合第一正規化(1nf)表中的每個域值只能是實體的乙個屬性或乙個
屬性的一部分。簡而言之,第一正規化就是無重複的域。
建立在第一正規化的基礎上,第二正規化要求資料庫表中的每個例項或記錄必需可以被唯一的區分
選取乙個能區分每個實體的屬性或屬性組作為實體的唯一標識,例如在員工表中的身份證號碼即可實
現每個一員工的區分,該身份證號碼即為候選鍵,任何乙個候選鍵都可以被選作主鍵。(該主鍵的添
加是在er設計時新增,不是建庫時隨意新增)
第二正規化要求屬性完全依賴於主關鍵字,而不能存在任何一列和主鍵沒有關係
第三正規化(3nf)是第二正規化(2nf)的乙個子集,即滿足第三正規化(3nf)必須滿足第二正規化
(2nf)。簡而言之,第三正規化(3nf)要求乙個關係中不包含已在其它關係已包含的非主關鍵字信
息。例如,存在乙個部門資訊表,其中每個部門有部門編號(dept_id)、部門名稱、部門簡介等信
息。那麼在員工資訊表中列出部門編號後就不能再將部門名稱、部門簡介等與部門有關的資訊再加入
員工資訊表中。
第三正規化要求表中的每一列都要與主鍵直接關聯,而不是間接關聯
在一張表中,用來唯一標識一條記錄的字段集,叫做主關鍵字或者主關鍵碼,簡稱主鍵(或主碼),
這裡說"欄位集"是因為主鍵可能用乙個字段或者多個欄位來表示
一張表的非主屬性是另乙個表的主屬性就是這個表的外來鍵。這裡有兩個分別為: 學生表(學
號, 姓名, 性別,專業編號),專業資訊表(專業編號,專業名稱,專業備註資訊)。學生表
中主鍵是學號,專業資訊表中主鍵是專業編號。學生表中的非主屬性專業編號恰好是專業資訊表中的
主鍵。我們就稱這個專業編號是學生表的外來鍵。像這樣,乙個表的非主屬性是另乙個表的主屬性,該
非主屬性就是外來鍵。
有兩張表,一張表中的外來鍵是另一張表的主鍵時,外來鍵的那張表稱之為字表,另一張表就是父
表,以上面的學生表和專業資訊表為例,學生表的外來鍵專業編號是專業資訊表的主鍵,那麼學生表
是字表,專業資訊表是父表。
學生系統的設計
確定要設計的內容
首先先把所有屬性放在一張表中,看有什麼結果
(學號,學生姓名、年齡、性別、課程、課程學分、系別、學科成績,系辦位址、系辦**)
(學號, 課程名稱) → (姓名, 年齡, 成績, 學分)
不符合第二正規化的要求
資料冗餘
資料修改困難
解決:
設計四張表:
資料庫筆記(關聯式資料庫相關)
關聯式資料庫由被稱為關係 relation 的 組成。關係中的每乙個列被稱為屬性 attribution 每一行被稱為一條記錄 record 每乙個儲存了實際資料的關係被稱為關係例項 relation instance 在關係的屬性中,每一條記錄的某個屬性被約束在某個特定的資料型別上,這個型別被稱為...
資料庫相關 ETL 實習筆記
1 oracle操作 1 插入日期 insert into tablename values to date 2011 1 1 yyyy mm dd 2 將乙個表的資料匯入另乙個表 要求字段個數一致,最好型別也一致 insert into tablename1 select from tablena...
資料庫相關
1.操作類 godb public goosundb open throws sqlexception public void close public cursor search int mark mark mark,null,null,null,col date desc if cursor n...