解讀數(shù)據(jù)庫(kù)設(shè)計(jì)正規(guī)化的五大范式(2)_Mssql數(shù)據(jù)庫(kù)教程

      編輯Tag賺U幣
      教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

      推薦:數(shù)據(jù)庫(kù)用SQL語(yǔ)法大全
      1、建表格: createtabletable_name(column1datatype[notnull][notnullprimarykey],column2datatype[notnull],...) 說(shuō)明: datatype--是資料的格式,詳見(jiàn)表。 nutnull--可不可以允許資料有空的(尚未有資料填入)。 primarykey--是本表的主鍵。 2、更改表


      users 
      userId name relCompId 
      1 Joe 1 
      2 Jill 2 

      companies 
      compId company company_address 
      1 ABC 1 Work Lane 
      2 XYZ 1 Job Street 


      urls 
      urlId url 
      1 abc.com 
      2 xyz.com 


      url_relations 
      relationId relatedUrlId relatedUserId 
      1 1 1 
      2 1 2 
      3 2 1 
      4 2 2 


        為了進(jìn)一步減低數(shù)據(jù)的冗余,我們運(yùn)用第四級(jí)正規(guī)化形式。我們創(chuàng)建了一個(gè)頗奇怪的url_relations表,里面的字段均為主鍵或者foreign key。通過(guò)這個(gè)表,我們就可以消除urls表中的重復(fù)項(xiàng)目。以下是第四個(gè)正規(guī)化形式的具體要求: 

      第四個(gè)正規(guī)化形式 

      1.在一個(gè)多對(duì)多的關(guān)系中,獨(dú)立的實(shí)體不能存放在同一個(gè)表格中 

        由于它僅應(yīng)用于多對(duì)多的關(guān)系,因此大多數(shù)的開(kāi)發(fā)者可以忽略這條規(guī)定。不過(guò)在某些情況下,它是非常實(shí)用的,這個(gè)例子就是這樣,我們通過(guò)將相同的實(shí)體分離出來(lái),并且將關(guān)系移到它們自己的表格中,從而改進(jìn)了urls表格。 

      為了令你更容易明白,我們舉個(gè)具體的例子,以下將用一個(gè)SQL語(yǔ)句選擇出所有屬于joe的urls: 

      SELECT name, url FROM users, urls, url_relations WHERE url_relations.relatedUserId = 1 AND users.userId = 1 AND urls.urlId = url_relations.relatedUrlId 

      如果我們想要遍歷每個(gè)人的個(gè)人信息和url信息,我們可以這樣做: 

      SELECT name, url FROM users, urls, url_relations WHERE users.userId = url_relations.relatedUserId AND urls.urlId = url_relations.relatedUrlId 

      第五級(jí)正規(guī)化形式 

      還有一級(jí)正規(guī)化的形式,它并不常見(jiàn),有點(diǎn)深?yuàn)W,并且在大部分的情況下都是不必要的。它的原則是: 

      1.原來(lái)的表格必須可以通過(guò)由它分離出去的表格重新構(gòu)建 

        使用這個(gè)規(guī)定的好處是,你可以確保不會(huì)在分離的表格中引入多余的列,所有你創(chuàng)建的表格結(jié)構(gòu)都與它們的實(shí)際需要一樣大。應(yīng)用這條規(guī)定是一個(gè)好習(xí)慣,不過(guò)除非你要處理一個(gè)非常大型的數(shù)據(jù),否則你將不需要用到它。 

        希望這篇文章對(duì)你有用,并且可以幫助你在所有的項(xiàng)目中應(yīng)用這些正規(guī)化的規(guī)定。你可能想知道這些方法是從哪來(lái)的,我可以告訴你,前面三個(gè)正規(guī)化的規(guī)定是1972年,Dr. E.F. Codd在他的論文“進(jìn)一步正規(guī)化數(shù)據(jù)庫(kù)的關(guān)系模型中”提出的,其余的規(guī)定是經(jīng)過(guò)后來(lái)的集合理論和關(guān)系數(shù)學(xué)家理論化的。 評(píng)論:正所謂物級(jí)必反,將表格分得過(guò)細(xì)有時(shí)并不好,因?yàn)檫@樣需要將各表進(jìn)行各種的關(guān)聯(lián),這會(huì)令查詢時(shí)變得復(fù)雜,而且效率也可能降低,這些正規(guī)化的規(guī)定可以參考,在實(shí)際應(yīng)用時(shí),要根據(jù)項(xiàng)目的大小,必要時(shí)可以進(jìn)行一些測(cè)試,以設(shè)計(jì)出更合理的表格結(jié)構(gòu)。 

      分享:解決SQLServer2000因登陸失敗無(wú)法啟動(dòng)服務(wù)的方法
      解決方法: 1、開(kāi)始--設(shè)置--控制面板--管理工具--服務(wù) (Run --鍵入 services.msc) 。 2、選擇MSSQLSERVER服務(wù),右鍵“屬性”--“登錄”,選擇登錄選項(xiàng)。將登錄帳戶改為本地系統(tǒng)帳戶。 3、重啟MSSQLSERVER服務(wù)。

      共2頁(yè)上一頁(yè)12下一頁(yè)
      來(lái)源:模板無(wú)憂//所屬分類:Mssql數(shù)據(jù)庫(kù)教程/更新時(shí)間:2010-03-16
      相關(guān)Mssql數(shù)據(jù)庫(kù)教程

      Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索