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

正文內(nèi)容

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

2024-09-13 07:39上一頁面

下一頁面
  

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