
大數(shù)據(jù)量高并發(fā)訪問數(shù)據(jù)庫結(jié)構(gòu)的設計
如果不能設計一個合理的數(shù)據(jù)庫模型,不僅會增加客戶端和服務器段程序的編程和維護的難度,而且將會影響系統(tǒng)實際運行的性能。所以,在一個系統(tǒng)開始實施之前,完備的數(shù)據(jù)庫模型的設計是必須的。
在一個系統(tǒng)分析、設計階段,因為數(shù)據(jù)量較小,負荷較低。我們往往只注意到功能的實現(xiàn),而很難注意到性能的薄弱之處,等到系統(tǒng)投入實際運行一段時間后,才發(fā)現(xiàn)系統(tǒng)的性能在降低,這時再來考慮提高系統(tǒng)性能則要花費更多的人力物力,而整個系統(tǒng)也不可避免的形成了一個打補丁工程。4、字段的長度在最大限度的滿足可能的需要的前提下,應該盡可能的設得短一些,這樣可以提高查詢的效率,而且在建立索引的時候也可以減少資源的消耗。
5、基本表及其字段之間的關系, 應盡量滿足第三范式。但是,滿足第三范式的數(shù)據(jù)庫設計,往往不是最好的設計。為了提高數(shù)據(jù)庫的運行效率,常常需要降低范式標準:適當增加冗余,達到以空間換時間的目的。
6、若兩個實體之間存在多對多的關系,則應消除這種關系。消除的辦法是,在兩者之間增加第三個實體。這樣,原來一個多對多的關系,現(xiàn)在變?yōu)閮蓚€一對多的關系。要將原來兩個實體的屬性合理地分配到三個實體中去。這里的第三個實體,實質(zhì)上是一個較復雜的關系,它對應一張基本表。一般來講,數(shù)據(jù)庫設計工具不能識別多對多的關系,但能處理多對多的關系。
7、主鍵PK的取值方法,PK是供程序員使用的表間連接工具,可以是一無物理意義的數(shù)字串, 由程序自動加1來實現(xiàn)。也可以是有物理意義的字段名或字段名的組合。不過前者比后者好。當PK是字段名的組合時,建議字段的個數(shù)不要太多,多了不但索引占用空間大,而且速度也慢。
8、主鍵與外鍵在多表中的重復出現(xiàn), 不屬于數(shù)據(jù)冗余,這個概念必須清楚,事實上有許多人還不清楚。非鍵字段的重復出現(xiàn), 才是數(shù)據(jù)冗余!而且是一種低級冗余,即重復性的冗余。高級冗余不是字段的重復出現(xiàn),而是字段的派生出現(xiàn)。
〖例4〗:商品中的“單價、數(shù)量、金額”三個字段,“金額”就是由“單價”乘以“數(shù)量”派生出來的,它就是冗余,而且是一種高級冗余。冗余的目的是為了提高處理速度。只有低級冗余才會增加數(shù)據(jù)的不一致性,因為同一數(shù)據(jù),可能從不同時間、地點、角色上多次錄入。因此,我們提倡高級冗余(派生性冗余),反對低級冗余(重復性冗余)。
9、中間表是存放統(tǒng)計數(shù)據(jù)的表,它是為數(shù)據(jù)倉庫、輸出報表或查詢結(jié)果而設計的,有時它沒有主鍵與外鍵(數(shù)據(jù)倉庫除外)。臨時表是程序員個人設計的,存放臨時記錄,為個人所用?;砗椭虚g表由DBA維護,臨時表由程序員自己用程序自動維護。
10、防止數(shù)據(jù)庫設計打補丁的方法是“三少原則”
(1) 一個數(shù)據(jù)庫中表的個數(shù)越少越好。只有表的個數(shù)少了,才能說明系統(tǒng)的E--R圖少而精,去掉了重復的多余的實體,形成了對客觀世界的高度抽象,進行了系統(tǒng)的數(shù)據(jù)集成,防止了打補丁式的設計;
(2) 一個表中組合主鍵的字段個數(shù)越少越好。因為主鍵的作用,一是建主鍵索引,二是做為子表的外鍵,所以組合主鍵的字段個數(shù)少了,不僅節(jié)省了運行時間,而且節(jié)省了索引存儲空間;
(3) 一個表中的字段個數(shù)越少越好。只有字段的個數(shù)少了,才能說明在系統(tǒng)中不存在數(shù)據(jù)重復,且很少有數(shù)據(jù)冗余,更重要的是督促讀者學會“列變行”,這樣就防止了將子表中的字段拉入到主表中去,在主表中留下許多空余的字段。所謂“列變行”,就是將主表中的一部分內(nèi)容拉出去,另外單獨建一個子表。這個方法很簡單,有的人就是不習慣、不采納、不執(zhí)行。
數(shù)據(jù)庫設計的實用原則是:在數(shù)據(jù)冗余和處理速度之間找到合適的平衡點。“三少”是一個整體概念,綜合觀點,不能孤立某一個原則。該原則是相對的,不是絕對的。“三多”原則肯定是錯誤的。試想:若覆蓋系統(tǒng)同樣的功能,一百個實體(共一千個屬性) 的E--R圖,肯定比二百個實體(共二千個屬性)的E--R圖,要好得多。
提倡“三少”原則,是叫讀者學會利用數(shù)據(jù)庫設計技術進行系統(tǒng)的數(shù)據(jù)集成。數(shù)據(jù)集成的步驟是將文件系統(tǒng)集成為應用數(shù)據(jù)庫,將應用數(shù)據(jù)庫集成為主題數(shù)據(jù)庫,將主題數(shù)據(jù)庫集成為全局綜合數(shù)據(jù)庫。集成的程度越高,數(shù)據(jù)共享性就越強,信息孤島現(xiàn)象就越少,整個企業(yè)信息系統(tǒng)的全局E—R圖中實體的個數(shù)、主鍵的個數(shù)、屬性的個數(shù)就會越少。
提倡“三少”原則的目的,是防止讀者利用打補丁技術,不斷地對數(shù)據(jù)庫進行增刪改,使企業(yè)數(shù)據(jù)庫變成了隨意設計數(shù)據(jù)庫表的“垃圾堆”,或數(shù)據(jù)庫表的“大雜院”,最后造成數(shù)據(jù)庫中的基本表、代碼表、中間表、臨時表雜亂無章,不計其數(shù),導致企事業(yè)單位的信息系統(tǒng)無法維護而癱瘓。
“三多”原則任何人都可以做到,該原則是“打補丁方法”設計數(shù)據(jù)庫的歪理學說?!叭佟痹瓌t是少而精的原則,它要求有較高的數(shù)據(jù)庫設計技巧與藝術,不是任何人都能做到的,因為該原則是杜絕用“打補丁方法”設計數(shù)據(jù)庫的理論依據(jù)。
11、在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫系統(tǒng)的運行效率的辦法是:
(1) 在數(shù)據(jù)庫物理設計時,降低范式,增加冗余, 少用觸發(fā)器, 多用存儲過程。
(2) 當計算非常復雜、而且記錄條數(shù)非常巨大時(例如一千萬條),復雜計算要先在數(shù)據(jù)庫外面,以文件系統(tǒng)方式用編程語言計算處理完成之后,最后才入庫追加到表中去。
(3) 發(fā)現(xiàn)某個表的記錄太多,例如超過一千萬條,則要對該表進行水平分割。水平分割的做法是,以該表主鍵PK的某個值為界線,將該表的記錄水平分割為兩個表。若發(fā)現(xiàn)某個表的字段太多,例如超過八十個,則垂直分割該表,將原來的一個表分解為兩個表。
(4) 對數(shù)據(jù)庫管理系統(tǒng)DBMS進行系統(tǒng)優(yōu)化,即優(yōu)化各種系統(tǒng)參數(shù),如緩沖區(qū)個數(shù)。
(5) 在使用面向數(shù)據(jù)的SQL語言進行程序設計時,盡量采取優(yōu)化算法。
總之,要提高數(shù)據(jù)庫的運行效率,必須從數(shù)據(jù)庫系統(tǒng)級優(yōu)化、數(shù)據(jù)庫設計級優(yōu)化、程序?qū)崿F(xiàn)級優(yōu)化,這三個層次上同時下功夫。
主鍵設計:
1、不建議用多個字段做主鍵,單個表還可以,但是關聯(lián)關系就會有問題,主鍵自增是高性能的。
2、一般情況下,如果有兩個外鍵,不建議采用兩個外鍵作為聯(lián)合住建,另建一個字段作為主鍵。除非這條記錄沒有邏輯刪除標志,且該表永遠只有一條此聯(lián)合主鍵的記錄。
3、一般而言,一個實體不能既無主鍵又無外鍵。在E—R 圖中, 處于葉子部位的實體, 可以定義主鍵,也可以不定義主鍵(因為它無子孫), 但必須要有外鍵(因為它有父親)。
主鍵與外鍵的設計,在全局數(shù)據(jù)庫的設計中,占有重要地位。當全局數(shù)據(jù)庫的設計完成以后,有個美國數(shù)據(jù)庫設計專家說:“鍵,到處都是鍵,除了鍵之外,什么也沒有”,這就是他的數(shù)據(jù)庫設計經(jīng)驗之談,也反映了他對信息系統(tǒng)核心(數(shù)據(jù)模型)的高度抽象思想。因為:主鍵是實體的高度抽象,主鍵與、外鍵的配對,表示實體之間的連接。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預期算子的內(nèi)涵、作用與應用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應用 在數(shù)據(jù)分析與統(tǒng)計學領域,假設檢驗是驗證研究假設、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務邏輯:從規(guī)則拆解到數(shù)據(jù)把關的實戰(zhàn)指南 在業(yè)務系統(tǒng)落地過程中,“業(yè)務邏輯” 是連接 “需求設計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10