1
乙個好的**,要想資料查詢達到很好的效果,
資料庫
設計是最基礎也是最重要的
工作
。資料庫設計是要遵循一定規則的,即當資料庫設計正規化,資料庫設計正規化包括第一正規化、第二正規化、第三正規化、第四正規化、第五正規化和第六正規化。不過一般資料庫只要滿足第
一、第二和第三正規化就足夠了。
在建立乙個資料庫的過程中,範化是將其轉化為一些表的過程,這種方法可以使從資料庫得到的結果更加明確。這樣可能使資料庫產生重複資料,從而導致建立多餘的表。範化是在識別資料庫中的資料元素、關係,以及定義所需的表和各表中的專案這些初始工作之後的乙個細化的過程。
第一正規化:
在任何乙個關聯式資料庫中,第一正規化是對關係模式的基本要求,不滿足第一正規化的資料庫就不是關聯式資料庫。
所謂第一正規化是指資料庫表的每一列都是不可分割的基本資料項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重複的屬性。如果出現重複的屬性,就可能需要定義乙個新的實體,新的實體由重複的屬性構成,新實體與原實體之間為一對多關係。在第一正規化(1nf)中表的每一行只包含乙個例項的資訊。例如,create table person (
name varchar(20),
phone1 varchar(20), --用來存放**
phone2 varchar(20), --用來存放**
fd3 int --其他
)。在這裡phone1,phone2違反了第一正規化。
簡單地說,第一正規化就是無重複的列,即在資料表中沒有重複的字段
第二正規化
第二正規化是在第一正規化的基礎上建立起來的,即滿足第二正規化必須先滿足第一正規化。第二正規化要求資料庫表中的每個例項或行必須可以被惟一地區分.為實現區分通常需要為表加上乙個列,以儲存各個例項的惟一標識。這個惟一的標識被稱為主關鍵字或主鍵。
簡單地說,第二正規化就是不設計沒有主鍵,或沒有唯一索引的表。
第三正規化
滿足第三正規化必須先滿足第二正規化。第三正規化要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊。例如create table person (
id int,
name varchar(20),
phone1 varchar(20), --用來存放**
phone2 varchar(20), --用來存放**
dept varchar(2), --部門名稱
deptdesc varchar(100), --部門說明
fd3 int --其他
)。在這裡dept和deptdesc違反了第三正規化,因為dept和deptdesc的資訊是可以細分的。
根據第三正規化的原則,上表可分割成如下兩個表。
create table person (
id int,
name varchar(20),
phone1 varchar(20), --用來存放**
phone2 varchar(20), --用來存放**
deptid int, --部門編號
fd3 int --其他
)create table dept (
deptid int,
dept varchar(2), --部門名稱
deptdesc varchar(100), --部門說明
)簡單地說,第三正規化就是能細分則細分資料表中的每個字段
滿足第三正規化的資料庫設計是結構清淅的,同時可避免資料冗餘和操作異常,所以在設計資料庫時不妨多用用正規化化設計。
MySql資料庫優化(1)
目錄 mysql資料庫優化 資料庫優化的目的 資料庫優化入手方面 學習使用的資料庫 資料庫開啟慢查詢日誌 配置 慢日誌包含的內容 如何檢視mysql日誌 mysqldumpslow pt query digest 如何通過慢查日誌發現有問題的sql?如何分析sql查詢?count 和max 的優化方...
資料庫優化 資料庫設計優化
一 索引優化 1.首先索引不是越多越好,要視情況而定。因為索引會降低insert和update的效率 insert和update有時可能會重建索引。2.乙個表的索參數量最好不要超過6個,擇優而建。3.專案上線後,根據使用者的查詢條件字段稍微調整資料庫中的字段索引。二 分表 1.縱切 根據表字段來且分...
mysql資料庫優化 1 提綱
應用程式架構中 lamp lnmp 最慢的一環 都是資料庫 php 業務邏輯程式都是相似的 不會隨著資料的增加而變得更加複雜 mysql,來說,資料是不斷的增加的,同樣的運算,隨著資料的增加而變慢!如何提公升資料庫的效率?通常需要從 個方面考慮 l 設計方面 儲存引擎的選擇,字段型別的選項,實體間的...