?? 數(shù)據(jù)庫(kù)設(shè)計(jì)第一范式.txt
字號(hào):
第一范式因?yàn)閷傩远际遣豢刹鸱值? 呵呵 要很詳細(xì)的理論一下子說(shuō)不出來(lái)
看個(gè)例子吧
動(dòng)物表
動(dòng)物名稱 動(dòng)物分類 飼料供應(yīng)商
a1 馬 b1,蘇州市
a2 馬 b2,上海市
a3 羊 b3.蘇州市
a4 牛 b4,北京市
這樣就不滿足第一范式 因?yàn)轱暳瞎?yīng)商可以拆分
滿足第一范式應(yīng)該為
動(dòng)物名稱 動(dòng)物分類 飼料供應(yīng)商名 供應(yīng)商地址
a1 馬 b1 蘇州市
a2 馬 b2 上海市
a3 羊 b3 蘇州市
a4 牛 b4 北京市
---------------------------------------------------------------
第一范式的目標(biāo)式消除組中的重復(fù),問(wèn)題描述:列中是否重復(fù)存儲(chǔ)了其他列中的信息?
---------------------------------------------------------------
如果關(guān)系模式的每一個(gè)屬性都不可分解,則稱該關(guān)系模式為第一范式
---------------------------------------------------------------
如:
create table aa(id int,NameAge varchar(100))
insert aa values(1,'無(wú)限-女')
沒(méi)有達(dá)到第一范式
create table aa(id int,name varcahr(10),age char(2))
insert aa values(1,'無(wú)限','女')
達(dá)到第一范式
---------------------------------------------------------------
第一范式
就是數(shù)據(jù)表的每一列不可再分
-----------------------------------
-----------------------------------
-----------------------------------
數(shù)據(jù)庫(kù)設(shè)計(jì)第一范式
摘要:數(shù)據(jù)庫(kù)設(shè)計(jì)第一范式 在動(dòng)態(tài)網(wǎng)站的設(shè)計(jì)中,數(shù)據(jù)庫(kù)設(shè)計(jì)的重要性不言而喻。如果設(shè)計(jì)不當(dāng),查詢起來(lái)就非常吃力,程序的性能也會(huì)受到影響。無(wú)論你使用的是mySQL 或者Oracle 數(shù)據(jù)庫(kù),通過(guò)進(jìn)行正規(guī)化的表格設(shè)計(jì),可以令你的PHP 代碼更具可讀性,更容易擴(kuò)展,從而也會(huì)提升應(yīng)用的性能。
簡(jiǎn)單說(shuō)來(lái),正規(guī)化就是在表格設(shè)計(jì)時(shí),消除冗余性和不協(xié)調(diào)的從屬關(guān)系。在本文中,我將通過(guò)五個(gè)漸進(jìn)的過(guò)程來(lái)告訴你在設(shè)計(jì)中應(yīng)該了解的正規(guī)化技巧。從而建立一個(gè)可行而且效率高的數(shù)據(jù)庫(kù)。本文也會(huì)詳細(xì)分析一下可以利用的關(guān)系類型。
這里假定我們要建立一個(gè)用戶信息的表格,其中要存儲(chǔ)用戶的名字、公司、公司地址和一些個(gè)人的收藏夾或url 。在開(kāi)始時(shí),你可能定義一個(gè)如下的表格結(jié)構(gòu):
零狀態(tài)形式
users
name company company_address url1 url2
Joe ABC 1 Work Lane abc.com xyz.com
Jill XYZ 1 Job Street abc.com xyz.com
由于沒(méi)有進(jìn)行任何的正規(guī)化處理,我們將這種形式的表稱為零狀態(tài)形式的表。留意其中的url1 和url2 字段---如果我們?cè)趹?yīng)用中需要第三個(gè)url 呢?這樣你就要在表格中多加一列,很明顯,這不是一個(gè)好辦法。如果你要?jiǎng)?chuàng)建一個(gè)富有擴(kuò)展性的系統(tǒng),你就要考慮使用第一個(gè)正規(guī)化的形式,并且應(yīng)用到該表格中。
第一級(jí)正規(guī)化形式
1. 消除每個(gè)表格中重復(fù)的組
2. 為每套相關(guān)的數(shù)據(jù)建立一個(gè)獨(dú)立的表格
3. 使用一個(gè)主鍵來(lái)標(biāo)識(shí)每套相關(guān)的數(shù)據(jù)
以上的表格明顯違反了上面第一條的規(guī)定,那么第三條的主鍵又是什么意思呢?很簡(jiǎn)單,它只是在每個(gè)記錄中加入一個(gè)唯一的、自動(dòng)增加的整型值。通過(guò)這個(gè)值,就可以將兩個(gè)姓名一樣的記錄區(qū)分開(kāi)來(lái)。通過(guò)應(yīng)用第一級(jí)正規(guī)化形式,我們得到了以下的表格:
users
userId name company company_address url
1 Joe ABC 1 Work Lane abc.com
1 Joe ABC 1 Work Lane xyz.com
2 Jill XYZ 1 Job Street abc.com
2 Jill XYZ 1 Job Street xyz.com
現(xiàn)在我們的表格可以說(shuō)已經(jīng)處在第一級(jí)正規(guī)化的形式了,它已經(jīng)解決了url 字段的限制問(wèn)題,不過(guò)這樣的處理后又帶來(lái)了一個(gè)新的問(wèn)題。每次在users 表中插入一條記錄的時(shí)候,我們都必須重復(fù)所有的公司和用戶數(shù)據(jù)。這樣不僅令數(shù)據(jù)庫(kù)比以前大了,而且很容易出錯(cuò)。因此還要經(jīng)過(guò)第二級(jí)正規(guī)化處理
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -