freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

數(shù)據(jù)庫設(shè)計(jì)規(guī)范化的五個要求(留存版)

2025-09-19 07:39上一頁面

下一頁面
  

【正文】 (5) 在使用面向數(shù)據(jù)的SQL語言進(jìn)行程序設(shè)計(jì)時,盡量采取優(yōu)化算法。符合三大范式就意味著數(shù)據(jù)庫表會拆分的很細(xì),表間關(guān)聯(lián)很多,統(tǒng)計(jì)分析查詢就不可避免的導(dǎo)致n張表的聯(lián)合查詢,在沒有有效的應(yīng)用層緩存的情況下,這種查詢無可避免的性能低下。 在實(shí)際的設(shè)計(jì)中,我盡量避免使用聯(lián)合主鍵,有些時候“不得不”使用聯(lián)合主鍵。在數(shù)據(jù)遷移(如轉(zhuǎn)入分析用的數(shù)據(jù)庫)時也可能會發(fā)揮作用。 個人實(shí)際使用中,設(shè)計(jì)時基本不考慮多對多關(guān)系,但編碼時總會有小組成員使用一些多對多關(guān)系,自己建立多對多的ORM,使自己編碼方便些,用在數(shù)據(jù)量小的地方,影響不大。 大家都提出自己的經(jīng)驗(yàn)、思路、教訓(xùn)等等,讓參與討論的人根據(jù)自己的條件(這個我們無法完全為他人設(shè)想),有所取舍的得到“我所正需要的”。 第三范式: 與主鍵沒有直接關(guān)系的數(shù)據(jù)列必須消除(消除的辦法就是再創(chuàng)建一個表來存放他們)這三大范式就像給ORM的人如何設(shè)計(jì)數(shù)據(jù)庫寫的指南: 引用第一范式: 每個持久對象映射一張表 每個持久對象必須有一個主鍵 第二范式: 持久對象要有內(nèi)聚性,冗余的內(nèi)容拿出去,單獨(dú)創(chuàng)建持久對象 持久對象之間的關(guān)系用外鍵關(guān)聯(lián) 第三范式: 持久對象要有內(nèi)聚性,無關(guān)的內(nèi)容拿出去,單獨(dú)創(chuàng)建持久對象關(guān)系模型和對象模型是不是在存儲概念上一致,就不用多說廢話了。    (3) 發(fā)現(xiàn)某個表的記錄太多,例如超過一千萬條,則要對該表進(jìn)行水平分割。所謂“列變行”,就是將主表中的一部分內(nèi)容拉出去,另外單獨(dú)建一個子表。 若三層視圖仍不夠用, 則應(yīng)在視圖上定義臨時表,    在臨時表上再定義視圖。不過前者比后者好。在數(shù)據(jù)庫設(shè)計(jì)中,為了更好地應(yīng)用三個范式,就必須通俗地理解   三個范式(通俗地理解是夠用的理解,并不是最科學(xué)最準(zhǔn)確的理解):   第一范式:1NF是對屬性的原子性約束,要求屬性具有原子性,不可再分解;   第二范式:2NF是對記錄的惟一性約束,要求記錄有惟一標(biāo)識,即實(shí)體的惟一性;   第三范式:3NF是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。    (2) 原始性?! ?12)設(shè)計(jì)出的表要盡可能減少數(shù)據(jù)冗余,確保數(shù)據(jù)的準(zhǔn)確性,有效的控制冗余有助于提高數(shù)據(jù)庫的性能。  (5)同樣,由于對象職責(zé)的單一性以及對象之間的關(guān)系反映的是業(yè)務(wù)邏輯之間的關(guān)系,所以在領(lǐng)域模型中的對象存在主對象和從對象之分,從對象是從1N或NN的角度進(jìn)一步主對象的業(yè)務(wù)邏輯,所以從對象及對象關(guān)系映射為的表及表關(guān)聯(lián)關(guān)系不存在刪除和插入異常。同時,若這個作者的圖書從數(shù)據(jù)庫中全部刪除之后,這個作者的信息也就蕩然無存了。如跟物料管理模塊相關(guān)的表可以用M為前綴。通常情況下,ID列是以1為單位遞進(jìn)的。在編號不改而名字改變了的情況下,采購訂單上顯示的就是更改后的名字。有時候,企業(yè)可能只知道客戶一個采購員的姓名。因?yàn)椴皇敲總€人都可以記住自己的身份證號碼。若符合這兩個條件,則可以說明這個數(shù)據(jù)庫的規(guī)范化水平還是比較高的。如當(dāng)用戶沒有輸入內(nèi)容的時候,則把這個字段的默認(rèn)值設(shè)置為0或者為N/A。但是,若設(shè)計(jì)不合理的話在,則會導(dǎo)致重復(fù)的值或者列。然后通過客戶ID把供應(yīng)商信息表跟客戶聯(lián)系人信息表連接起來。如可以把行號改為1,在排序時就可以按行號來進(jìn)行排序。如視圖可以用V為前綴,而函數(shù)則可以利用F為前綴。除了這些另外還有很多細(xì)節(jié)方面的要求,如數(shù)據(jù)類型、存儲過程等等?! ?7)在經(jīng)過分析后確認(rèn)所有的表都滿足二、三、四范式的情況下,表和表之間的關(guān)聯(lián)盡量采用弱關(guān)聯(lián)以便于對表字段和表結(jié)構(gòu)的調(diào)整和重構(gòu)。明確這種對應(yīng)關(guān)系后,對我們設(shè)計(jì)錄入界面大有好處。基本表的結(jié)構(gòu)是相對穩(wěn)定的,表中的記錄是要長期保存的。 6. 要善于識別與正確處理多對多的關(guān)系   若兩個實(shí)體之間存在多對多的關(guān)系,則應(yīng)消除這種關(guān)系。   〖例4〗:商品中的“單價、數(shù)量、金額”三個字段,“金額”就是由“單價”乘以“數(shù)量”派生出來的,它就是冗余,   而且是一種高級冗余。只有數(shù)據(jù)庫管理員,帶著多個人員共同掌握的“安全鑰匙”,   才能直接在基本表上操作?!叭唷痹瓌t肯定是錯誤的。     總之,要提高數(shù)據(jù)庫的運(yùn)行效率,必須從數(shù)據(jù)庫系統(tǒng)級優(yōu)化、數(shù)據(jù)庫設(shè)計(jì)級優(yōu)化、程序?qū)崿F(xiàn)級優(yōu)化,這三    個層次上同時下功夫。這使得程序員寧肯違背三大范式,而選擇查詢性能優(yōu)先的數(shù)據(jù)庫設(shè)計(jì)。 (邏輯主鍵)還是有意義的字段(業(yè)務(wù)主鍵)?個人傾向于“邏輯主鍵”,理由是這樣設(shè)計(jì)出的數(shù)據(jù)庫模型結(jié)構(gòu)清晰、關(guān)系脈絡(luò)清楚,往往更符合“第三范式”(雖然不是故意的,呵呵)。 ?沒辦法,我總是設(shè)計(jì)不出“完美”的數(shù)據(jù)表,給每個表加幾個備用字段(我一般用字符串型,隨你)可以應(yīng)付“不時之需”,尤其是需要長期維護(hù)的、業(yè)務(wù)可能有臨時性變動的系統(tǒng)。這是使用ORM時的問題,比如使用Hibernate,多對多關(guān)系有時會使編碼看起來靈活一些,代價是效率的明顯降低。 請不要在討論中試圖證明個人的觀點(diǎn)是“最好的”。我震驚的只是三大范式和我們現(xiàn)在遵循ORM的原則去設(shè)計(jì)數(shù)據(jù)庫的方式如出一轍!我簡單摘要書中內(nèi)容如下: 引用第一范式: 內(nèi)容相似的數(shù)據(jù)列必須消除(消除的辦法就是再創(chuàng)建一個數(shù)據(jù)表來存放他們,建立關(guān)聯(lián)關(guān)系) 必須為每一組相關(guān)數(shù)據(jù)分別創(chuàng)建一個表 每條數(shù)據(jù)記錄必須用一個主鍵來標(biāo)示 第二范式: 只要數(shù)據(jù)列里面的內(nèi)容出現(xiàn)重復(fù),就意味著應(yīng)該把表拆分為多個表 拆分形成的表必須用外鍵關(guān)聯(lián)起來。這是電信計(jì)費(fèi)系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn)。只有字段的個數(shù)少了,才能說明在系統(tǒng)中不存在數(shù)據(jù)重復(fù),且很少有數(shù)據(jù)冗     余,更重要的是督促讀者學(xué)會“列變行”,這樣就防止了將子表中的字段拉入到主表中去,在主表中留下許     多空余的字段。為了進(jìn)行復(fù)雜處理、   提高運(yùn)算速度和節(jié)省存儲空間, 視圖的定義深度一般不得超過三層。也可以是有物理意義   的字段名或字段名的組合。   表1 商品表的表結(jié)構(gòu)   商品名稱 商品型號 單價 數(shù)量 金額   電視機(jī) 29吋 2,500 40 100,000    5. 通俗地理解三個范式   通俗地理解三個范式,對于數(shù)據(jù)庫設(shè)計(jì)大有好處。基本表中的字段是不可再分解的?! ?11)設(shè)計(jì)出的表要具有較好的使用性,主要體現(xiàn)在查詢時是否需要關(guān)聯(lián)多張表且還需使用復(fù)雜的SQL技巧?! ?4)由于第一點(diǎn)所述的領(lǐng)域模型驅(qū)動的方式設(shè)計(jì)數(shù)據(jù)庫表結(jié)構(gòu),領(lǐng)域模型中的每一個對象只有一項(xiàng)職責(zé),所以對象中的數(shù)
點(diǎn)擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1