你好,歡迎進(jìn)入江蘇優(yōu)軟數(shù)字科技有限公司官網(wǎng)!
發(fā)布時間:2023-11-17
瀏覽次數(shù):0
點(diǎn)擊關(guān)注上方“程序員私房菜”,設(shè)為“熱門或明星”,第一時間接收技術(shù)資訊。
來源:blog.csdn.net////
1、原始憑證與實(shí)體的關(guān)系
它可以是一對一、一對多或多對多關(guān)系。 一般來說,它們是一對一的關(guān)系:即一份原始文檔只對應(yīng)一個實(shí)體。 在特殊情況下,它們可能是一對多或多對一的關(guān)系,即一個原始文檔對應(yīng)多個實(shí)體,或者多個原始文檔對應(yīng)一個實(shí)體。
這里的實(shí)體可以理解為基本表。 明確了這個對應(yīng)關(guān)系之后,對于我們設(shè)計輸入界面會有很大的好處。
〖示例1〗:一條員工簡歷信息對應(yīng)人力資源信息系統(tǒng)中的三個基本表:員工基本信息表、社會關(guān)系表、工作簡歷表。 這是“一份原始文件對應(yīng)多個實(shí)體”的典型例子。
2. 主鍵和外鍵
一般來說,一個實(shí)體不能同時擁有主鍵和外鍵。 在ER圖中,葉子位置的實(shí)體可以定義主鍵,也可以不定義(因?yàn)樗鼪]有后代),但它必須有外鍵(因?yàn)樗懈讣墸?/p>
主鍵和外鍵的設(shè)計在全局?jǐn)?shù)據(jù)庫的設(shè)計中起著重要的作用。 全球數(shù)據(jù)庫設(shè)計完成后,一位美國數(shù)據(jù)庫設(shè)計專家表示:“鑰匙無處不在,除了鑰匙之外什么也沒有”。 這是他在數(shù)據(jù)庫設(shè)計方面的經(jīng)驗(yàn),也體現(xiàn)了他對信息的理解。 系統(tǒng)核心思想(數(shù)據(jù)模型)的高度抽象。
因?yàn)椋褐麈I是一個高度抽象的實(shí)體,主鍵和外鍵的配對代表了實(shí)體之間的聯(lián)系。
3. 基本表的屬性
基本表不同于中間表和臨時表,它具有以下四個特點(diǎn):
了解了基本表的本質(zhì)后,在設(shè)計數(shù)據(jù)庫時就可以區(qū)分基本表和中間表、臨時表了。
4.范式標(biāo)準(zhǔn)
基本表及其字段之間的關(guān)系應(yīng)盡量滿足第三范式。 然而,滿足第三范式的數(shù)據(jù)庫設(shè)計往往不是最好的設(shè)計。 為了提高數(shù)據(jù)庫的運(yùn)行效率intellij idea 數(shù)據(jù)庫關(guān)系圖,往往需要降低范式標(biāo)準(zhǔn):適當(dāng)增加冗余,以達(dá)到以空間換時間的目的。
〖例2〗:有一個存儲商品的基本表,如表1所示,“”字段的存在表明該表的設(shè)計不符合第三范式,因?yàn)榭梢垣@取“”將“單價”乘以“數(shù)量”,表明“金額”是冗余字段。 不過,增加冗余字段“金額”可以提高查詢統(tǒng)計的速度。 這就是用空間換時間的方法。
在Rose 2002 中,有兩種類型的列:數(shù)據(jù)列和計算列。 “金額”等列稱為“計算列”,而“單價”和“數(shù)量”等列稱為“數(shù)據(jù)列”。
表1 產(chǎn)品表表結(jié)構(gòu)
5.通俗地理解三種范式
通俗地理解這三種范式對于數(shù)據(jù)庫設(shè)計大有裨益。 在數(shù)據(jù)庫設(shè)計中,為了更好的應(yīng)用三大范式,需要通俗地理解三大范式(通俗的理解是充分的理解,而不是最科學(xué)、最準(zhǔn)確的理解):
任何冗余數(shù)據(jù)庫設(shè)計都無法做到這一點(diǎn)。 然而,沒有冗余的數(shù)據(jù)庫可能不是最好的數(shù)據(jù)庫。 有時為了提高運(yùn)行效率,需要降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。
具體做法是:在設(shè)計概念數(shù)據(jù)模型時堅持第三范式,在設(shè)計物理數(shù)據(jù)模型時考慮降低范式標(biāo)準(zhǔn)的工作。 降低范式意味著添加字段并允許冗余。
6.善于識別并正確處理多對多關(guān)系
如果兩個實(shí)體之間存在多對多關(guān)系,則應(yīng)消除這種關(guān)系。 解決方案是在兩者之間添加第三個實(shí)體。 這樣,原來的多對多關(guān)系,現(xiàn)在就變成了兩個一對多的關(guān)系。 原有兩個實(shí)體的屬性應(yīng)該合理分配給三個實(shí)體。
這里的第三個實(shí)體本質(zhì)上是一個更復(fù)雜的關(guān)系,它對應(yīng)著一個基本的表。 一般來說,數(shù)據(jù)庫設(shè)計工具無法識別多對多關(guān)系,但可以處理多對多關(guān)系。
〖例3〗:在《圖書館信息系統(tǒng)》中,“書”是一個實(shí)體,“讀者”也是一個實(shí)體。 這兩個實(shí)體之間的關(guān)系是典型的多對多關(guān)系:一本書可以在不同時間被多個讀者借閱,一個讀者可以借閱多本書。
為此,需要在兩者之間添加第三個實(shí)體。 這個實(shí)體被命名為“借還書”。 它的屬性是:借還時間、借還標(biāo)志(0表示借書,1表示還書),另外還應(yīng)該有兩個外鍵(“Book”的主鍵和“Book”的主鍵) ”),以便可以連接到“Book”和“”。
7、如何獲取主鍵PK的值
PK是一款為程序員提供的表間連接工具。 可以是無物理意義的數(shù)字串,由程序自動加1實(shí)現(xiàn)。也可以是有物理意義的字段名或字段名的組合。 但前者比后者好。 當(dāng)PK為字段名組合時,建議字段不要過多。 如果太多,索引不僅會占用大量空間,而且速度也會很慢。
8.正確理解數(shù)據(jù)冗余
主鍵和外鍵在多個表中重復(fù)出現(xiàn)并不構(gòu)成數(shù)據(jù)冗余。 這個概念一定要清楚。 事實(shí)上intellij idea 數(shù)據(jù)庫關(guān)系圖,很多人還不清楚。 非關(guān)鍵字段的重復(fù)出現(xiàn)就是數(shù)據(jù)冗余! 而且是一種低級冗余,即重復(fù)冗余。 高級冗余不是某個字段的重復(fù)出現(xiàn),而是某個字段的派生出現(xiàn)。
〖示例4〗:產(chǎn)品中的“單價、數(shù)量、金額”三個字段中,“金額”是“單價”乘以“數(shù)量”得出的。 它是冗余的,而且是高級別的冗余。 冗余的目的是提高處理速度。
只有低級冗余才會增加數(shù)據(jù)不一致,因?yàn)橄嗤臄?shù)據(jù)可能會從不同的時間、地點(diǎn)和角色多次輸入。 因此,我們提倡高級冗余(衍生冗余),反對低級冗余(重復(fù)冗余)。
9、E--R圖沒有標(biāo)準(zhǔn)答案
信息系統(tǒng)的ER圖沒有標(biāo)準(zhǔn)答案,因?yàn)樗脑O(shè)計和繪制方法并不唯一。 只要涵蓋了系統(tǒng)需求的業(yè)務(wù)范圍和功能內(nèi)容,都是可行的。 否則,修改E--R圖。
雖然它沒有單一的標(biāo)準(zhǔn)答案,但并不意味著可以隨意設(shè)計。 好的ER圖的標(biāo)準(zhǔn)是:結(jié)構(gòu)清晰、關(guān)系簡潔、實(shí)體數(shù)量適中、屬性分布合理、無低級冗余。
10.視圖技術(shù)在數(shù)據(jù)庫設(shè)計中很有用
與基本表、代碼表、中間表不同,視圖是一個虛擬表,依賴于數(shù)據(jù)源的真實(shí)表而存在。 視圖是程序員使用數(shù)據(jù)庫的窗口,是基表數(shù)據(jù)合成的一種形式,是一種數(shù)據(jù)處理的方法,也是對用戶數(shù)據(jù)保密的一種手段。
為了進(jìn)行復(fù)雜的處理、提高計算速度、節(jié)省存儲空間,視圖的定義深度一般不超過三級。 如果三層視圖還不夠,就應(yīng)該在視圖上定義臨時表,在臨時表上定義視圖。 通過以這種方式重復(fù)重疊定義,視圖的深度不受限制。
對于某些關(guān)系到國家政治、經(jīng)濟(jì)、技術(shù)、軍事和安全利益的信息系統(tǒng),意見的作用更為重要。 這些系統(tǒng)的基本表的物理設(shè)計完成后,立即在基本表上建立一級視圖。 該級別視圖的數(shù)量和結(jié)構(gòu)與基本表的數(shù)量和結(jié)構(gòu)完全相同。 還規(guī)定所有程序員只允許對視圖進(jìn)行操作。
只有數(shù)據(jù)庫管理員擁有多人共享的“安全密鑰”,才能直接對基礎(chǔ)表進(jìn)行操作。 請讀者思考:這是為什么?
11. 中間表、報告和臨時表
中間表是存儲統(tǒng)計數(shù)據(jù)的表。 它是為數(shù)據(jù)倉庫、輸出報告或查詢結(jié)果而設(shè)計的。 有時它沒有主鍵和外鍵(數(shù)據(jù)倉庫除外)。 臨時表是程序員設(shè)計的,用于存儲供個人使用的臨時記錄。 基表和中間表由DBA維護(hù),臨時表由程序員自己自動維護(hù)。
12、誠信約束表現(xiàn)在三個方面
域完整性:使用Check來實(shí)現(xiàn)約束。 在數(shù)據(jù)庫設(shè)計工具中,定義字段取值范圍時,有一個勾選按鈕,通過該按鈕來定義該字段的取值范圍。
參照完整性:使用PK、FK和表級觸發(fā)器實(shí)現(xiàn)。 用戶定義的完整性:是一些業(yè)務(wù)規(guī)則,使用存儲過程和觸發(fā)器實(shí)現(xiàn)。
13、防止數(shù)據(jù)庫設(shè)計被打補(bǔ)丁的方法是“三少原則”
1、數(shù)據(jù)庫中表的數(shù)量越少越好。 只有減少表的數(shù)量,系統(tǒng)的ER圖才能更少、更精確。 去除重復(fù)、冗余的實(shí)體,形成對客觀世界的高度抽象,進(jìn)行系統(tǒng)的數(shù)據(jù)集成,避免修補(bǔ)。 的設(shè)計;
2、表中組合主鍵字段的數(shù)量越少越好。 因?yàn)橹麈I的作用,首先是建立主鍵索引,其次作為子表的外鍵,減少了組合主鍵的字段數(shù)量,這樣不僅節(jié)省了運(yùn)行時間,還節(jié)省了索引存儲空間;
3.表中的字段越少越好。 只有字段數(shù)量減少了,才意味著系統(tǒng)中沒有數(shù)據(jù)重復(fù),數(shù)據(jù)冗余很少。 更重要的是,呼吁讀者學(xué)會“變列為行”,從而防止子表中的字段被拉出。 進(jìn)入主表,在主表中留下許多空白字段。 所謂“列轉(zhuǎn)行”,就是從主表中拉出部分內(nèi)容,建立一個單獨(dú)的子表。 這個方法很簡單,但是有些人就是不習(xí)慣,不采用,不執(zhí)行。
數(shù)據(jù)庫設(shè)計的一個實(shí)用原則是在數(shù)據(jù)冗余和處理速度之間找到適當(dāng)?shù)钠胶狻? “三少”是一個整體概念,是一個綜合觀點(diǎn),不能孤立某個原則。
這個原則是相對的,不是絕對的。 “三多”原則肯定是錯誤的。 試想:如果覆蓋系統(tǒng)相同的功能,一百個實(shí)體(總共一千個屬性)的ER圖肯定會比兩百個實(shí)體(總共兩千個屬性)的ER圖好得多。 。
提倡“三少”原則,就是教會讀者利用數(shù)據(jù)庫設(shè)計技術(shù)進(jìn)行系統(tǒng)的數(shù)據(jù)集成。 數(shù)據(jù)集成的步驟為:將文件系統(tǒng)集成為應(yīng)用數(shù)據(jù)庫,將應(yīng)用數(shù)據(jù)庫集成為主題數(shù)據(jù)庫,將主題數(shù)據(jù)庫集成為全局綜合數(shù)據(jù)庫。
集成程度越高,數(shù)據(jù)共享越強(qiáng),信息孤島越少,整個企業(yè)信息系統(tǒng)全局ER圖中實(shí)體、主鍵、屬性的數(shù)量就越少。
提倡“三少”原則的目的是為了防止讀者利用打補(bǔ)丁技術(shù)不斷增刪改數(shù)據(jù)庫,把企業(yè)數(shù)據(jù)庫變成隨意設(shè)計的數(shù)據(jù)庫表的“垃圾堆”,或者是“雜院”。 ” 數(shù)據(jù)庫表。 最后,導(dǎo)致數(shù)據(jù)庫中存在無數(shù)的基本表、代碼表、中間表、臨時表,導(dǎo)致企事業(yè)單位的信息系統(tǒng)無法維護(hù)、癱瘓。
“三多”原則任何人都可以做到,這就是數(shù)據(jù)庫“補(bǔ)丁法”設(shè)計的謬誤。 “三少”原則就是少而精的原則。 它需要很高的數(shù)據(jù)庫設(shè)計技巧和藝術(shù),這不是任何人都可以達(dá)到的,因?yàn)檫@個原則是消除使用“修補(bǔ)方法”來設(shè)計數(shù)據(jù)庫的理論基礎(chǔ)。
14、提高數(shù)據(jù)庫運(yùn)行效率的方法
在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫系統(tǒng)運(yùn)行效率的方法是:
總之,提高數(shù)據(jù)庫的運(yùn)行效率,必須從數(shù)據(jù)庫系統(tǒng)級優(yōu)化、數(shù)據(jù)庫設(shè)計級優(yōu)化、程序?qū)崿F(xiàn)級優(yōu)化三個層面同時發(fā)力。
以上十四個技巧是很多人通過大量的數(shù)據(jù)庫分析和設(shè)計實(shí)踐逐步總結(jié)出來的。 對于這些經(jīng)驗(yàn)的運(yùn)用,讀者不要機(jī)械地死記硬背,而應(yīng)該消化理解,實(shí)事求是,靈活掌握。 并逐步做到:在應(yīng)用中發(fā)展,在發(fā)展中應(yīng)用。
(超過)
近期熱門推薦
1.
2.
3.
4.
5.
如有侵權(quán)請聯(lián)系刪除!
Copyright ? 2023 江蘇優(yōu)軟數(shù)字科技有限公司 All Rights Reserved.正版sublime text、Codejock、IntelliJ IDEA、sketch、Mestrenova、DNAstar服務(wù)提供商
13262879759
微信二維碼