新聞中心
隨著互聯(lián)網的飛速發(fā)展,數(shù)據(jù)庫已成為企業(yè)信息化建設中不可缺少的一部分。設計好的數(shù)據(jù)庫可以幫助企業(yè)高效地存儲和管理數(shù)據(jù),并提高數(shù)據(jù)的利用率。在實際應用中,數(shù)據(jù)庫設計技巧的好壞往往直接影響數(shù)據(jù)操作的效率。本文將從以下角度探討的方法和實踐。

一、數(shù)據(jù)庫設計原則
數(shù)據(jù)庫設計是一個非常關鍵的環(huán)節(jié),其設計好壞決定了數(shù)據(jù)庫的性能與穩(wěn)定性。為了提高數(shù)據(jù)操作效率,設計數(shù)據(jù)庫時需要遵守以下原則:
1.合理分析需求。在數(shù)據(jù)庫設計前,需要對企業(yè)的業(yè)務需求進行梳理和分析,明確數(shù)據(jù)表之間的關系以及數(shù)據(jù)的存儲方式,從而選擇合適的數(shù)據(jù)庫模型和數(shù)據(jù)結構。
2.保證數(shù)據(jù)完整性。作為數(shù)據(jù)庫的核心特性,數(shù)據(jù)完整性是確保數(shù)據(jù)的正確性和有效性,避免數(shù)據(jù)庫出現(xiàn)臟數(shù)據(jù)和重復數(shù)據(jù)的重要保障。在設計數(shù)據(jù)庫時需要合理設置數(shù)據(jù)類型、約束和規(guī)則,以保證數(shù)據(jù)的完整性和一致性。
3.優(yōu)化查詢性能。數(shù)據(jù)庫查詢是最為頻繁的操作,因此需要通過索引和分區(qū)等手段來優(yōu)化查詢性能。同時,也需要在設計時考慮后期數(shù)據(jù)增長的情況,避免出現(xiàn)單表數(shù)據(jù)過大而影響查詢效率的情況。
4.創(chuàng)新數(shù)據(jù)庫設計。合理借鑒優(yōu)秀的數(shù)據(jù)庫設計方案,結合企業(yè)實際情況,采用新型數(shù)據(jù)結構、算法和設計思路等方式,創(chuàng)新數(shù)據(jù)庫設計,提高數(shù)據(jù)庫的性能和可擴展性。
二、創(chuàng)新數(shù)據(jù)庫設計技巧
1.采用適當?shù)拇鎯σ?/p>
在設計數(shù)據(jù)庫時,存儲引擎的選擇是非常關鍵的一步。目前主流的數(shù)據(jù)庫引擎包括InnoDB、MyISAM等,需要根據(jù)業(yè)務需求的不同來選擇適合自己的存儲引擎。比如,InnoDB適合高并發(fā)和事務處理,而MyISAM適合讀頻繁的應用。在數(shù)據(jù)操作時,適當調整存儲引擎的參數(shù)和優(yōu)化數(shù)據(jù)庫結構,也可以顯著提高數(shù)據(jù)庫的性能。
2.采用分區(qū)表
對于單表數(shù)據(jù)過大的情況,可以采用分區(qū)表的方式來提高查詢效率。分區(qū)表是將一個大表劃分成小表,每個小表擁有獨立的存儲空間和索引。這樣可以有效地分散查詢請求,提升查詢效率。同時,也可以根據(jù)數(shù)據(jù)訪問模式來選擇分區(qū)方式,比如按時間、按地域等方式進行分區(qū)。
3.采用非關系型數(shù)據(jù)庫
傳統(tǒng)的關系型數(shù)據(jù)庫存在許多缺點,比如數(shù)據(jù)結構散亂、靈活性不足、缺乏高并發(fā)和大數(shù)據(jù)處理等問題。而采用非關系型數(shù)據(jù)庫(NoSQL)則可以有效地解決這些問題。非關系型數(shù)據(jù)庫采用了鍵值對、文檔、圖形等方式來存儲數(shù)據(jù),具有高擴展性、高可用性和高并發(fā)性等優(yōu)點,適合處理大數(shù)據(jù)和高并發(fā)的應用場景。
4.采用云數(shù)據(jù)庫
隨著云計算的發(fā)展,云數(shù)據(jù)庫也越來越受到企業(yè)的青睞。云數(shù)據(jù)庫具有高可用性、彈性伸縮性和全球性等優(yōu)點,可以為企業(yè)提供強大的數(shù)據(jù)存儲和處理能力。同時,也可以借助云數(shù)據(jù)庫提供的工具和服務來快速搭建和實現(xiàn)數(shù)據(jù)庫的監(jiān)控、備份、恢復等操作。
三、實踐方法
1.設計命名規(guī)范
為了方便數(shù)據(jù)的管理和維護,需要在設計數(shù)據(jù)庫時制定命名規(guī)范。命名規(guī)范應該依據(jù)表的功能和用途來命名,同時也要注意不要使用過長、過于復雜的表名和字段名。在設計數(shù)據(jù)庫時,需要制定統(tǒng)一的命名規(guī)范,并嚴格執(zhí)行。
2.啟用緩存機制
為了提高數(shù)據(jù)讀取的效率,可以通過啟用緩存機制來減少數(shù)據(jù)庫的壓力。常見的緩存機制包括Redis、Memcache等,可以將常用數(shù)據(jù)保存在內存中,提高數(shù)據(jù)讀取的速度。同時,也可以通過設置查詢緩存、對象緩存等方式來優(yōu)化數(shù)據(jù)操作的效率。
3.合理使用索引
索引是數(shù)據(jù)庫查詢的重要依據(jù)之一,它可以極大地提高數(shù)據(jù)操作的效率。在設計數(shù)據(jù)庫時,需要合理設置索引方式和范圍,同時也要避免過度索引和無效索引的問題。通過監(jiān)控和調整索引的使用,可以優(yōu)化數(shù)據(jù)庫的性能和響應速度。
4.定期維護和優(yōu)化
為了確保數(shù)據(jù)庫的穩(wěn)定性和性能,需要定期維護和優(yōu)化數(shù)據(jù)庫。主要包括清理冗余數(shù)據(jù)、優(yōu)化索引規(guī)則、更新存儲引擎等操作。同時還需要對數(shù)據(jù)庫進行監(jiān)控和評估,對性能下降和異常情況進行及時處理。
綜上所述,,是企業(yè)信息化建設中不可或缺的一環(huán)。在實際應用中,需要遵循數(shù)據(jù)庫設計原則,創(chuàng)新數(shù)據(jù)庫設計技巧,采用合適的存儲引擎和分區(qū)方式,選擇適合自己的數(shù)據(jù)庫類型和云數(shù)據(jù)庫,同時也需要不斷參照更佳實踐,定期維護和優(yōu)化數(shù)據(jù)庫,以保證數(shù)據(jù)庫的高效和穩(wěn)定。
相關問題拓展閱讀:
- 大型數(shù)據(jù)庫的設計原則與開發(fā)技巧
- 購物網站數(shù)據(jù)庫設計
- 請簡要的敘述一下數(shù)據(jù)庫的主要設計過程
大型數(shù)據(jù)庫的設計原則與開發(fā)技巧
隨著計算機技術越來越廣泛地應用于國民經濟的各個領域 在計算機硬件不斷微型化的同時 應用系統(tǒng)向著復雜化 大型化的方向發(fā)展 數(shù)據(jù)庫是整個系統(tǒng)的核心 它的設計直接關系系統(tǒng)執(zhí)行的效率和系統(tǒng)的穩(wěn)定性 因此在軟件系統(tǒng)開發(fā)中 數(shù)據(jù)庫設計應遵循必要的數(shù)據(jù)庫范式理論 以減少冗余 保證數(shù)據(jù)的完整性與正確性 只有在合適的數(shù)據(jù)庫產品上設計出合理的數(shù)據(jù)庫模型 才能降低整個系統(tǒng)的編程和維護難度 提高系統(tǒng)的實際運行效率 雖然對于小項目或中等規(guī)模的項目開發(fā)人員可以很容易地利用范式理論設計出一套符合要求的數(shù)據(jù)庫 但對于一個包含大型數(shù)據(jù)庫的軟件項目 就必須有一套完整的設計原則與技巧
一 成立數(shù)據(jù)小組
大型數(shù)據(jù)庫數(shù)據(jù)元素多 在設計上有必要成立專門的數(shù)據(jù)小組 由于數(shù)據(jù)庫設計者不一定是使用者 對系統(tǒng)設計中的數(shù)據(jù)元素不可能考慮周全 數(shù)據(jù)庫設計出來后 往往難以找到所需的庫表 因此數(shù)據(jù)小組更好由熟悉業(yè)務的項目骨干組成
數(shù)據(jù)小組的職能并非是設計數(shù)據(jù)庫 而是通過需求分析 在參考其他相似系顫腔統(tǒng)的基礎上 提取系統(tǒng)的基本數(shù)據(jù)元素 擔負對數(shù)據(jù)庫的審核 審核內容包括審核新的數(shù)據(jù)庫元素是否完全 能否實現(xiàn)全部業(yè)務需求 對舊數(shù)據(jù)庫(如果存在舊系統(tǒng))的分析及數(shù)據(jù)轉換 數(shù)據(jù)庫設計的審核 控制及必要調整
二 設計原沖遲則
規(guī)范命名 所有的庫名 表名 域名必須遵循統(tǒng)一的命名規(guī)則 并進行必要說明 以方便設計 維護 查詢
控制字段的引用 在設計時 可以選擇適當?shù)臄?shù)據(jù)庫設計管理工具 以方便開發(fā)人員的分布式設計和數(shù)據(jù)小組的集中審核管理 采用統(tǒng)一的命名規(guī)則 如果設計的字段已經存在 可直接引用 否則 應重新設計
庫表重復控制 在設計過程中 如果發(fā)現(xiàn)大部分字段都已存在 開發(fā)人員應懷疑所設計的庫表是否已存在 通過對字段所在庫表及相應設計人員的查詢 可以確認庫表是否確實重復
并發(fā)控制 設計中應進行并發(fā)控制 即對于同一個庫表 在茄判衫同一時間只有一個人有控制權 其他人只能進行查詢
必要的討論 數(shù)據(jù)庫設計完成后 數(shù)據(jù)小組應與相關人員進行討論 通過討論來熟悉數(shù)據(jù)庫 從而對設計中存在的問題進行控制或從中獲取數(shù)據(jù)庫設計的必要信息
數(shù)據(jù)小組的審核 庫表的定版 修改最終都要通過數(shù)據(jù)小組的審核 以保證符合必要的要求
頭文件處理 每次數(shù)據(jù)修改后 數(shù)據(jù)小組要對相應的頭文件進行修改(可由管理軟件自動完成) 并通知相關的開發(fā)人員 以便進行相應的程序修改
三 設計技巧
分類拆分數(shù)據(jù)量大的表 對于經常使用的表(如某些參數(shù)表或代碼對照表) 由于其使用頻率很高 要盡量減少表中的記錄數(shù)量 例如 銀行的戶主賬表原來設計成一張表 雖然可以方便程序的設計與維護 但經過分析發(fā)現(xiàn) 由于數(shù)據(jù)量太大 會影響數(shù)據(jù)的迅速定位 如果將戶主賬表分別設計為活期戶主賬 定期戶主賬及對公戶主賬等 則可以大大提高查詢效率
索引設計 對于大的數(shù)據(jù)庫表 合理的索引能夠提高整個數(shù)據(jù)庫的操作效率 在索引設計中 索引字段應挑選重復值較少的字段 在對建有復合索引的字段進行檢索時 應注意按照復合索引字段建立的順序進行 例如 如果對一個 萬多條記錄的流水表以日期和流水號為序建立復合索引 由于在該表中日期的重復值接近整個表的記錄數(shù) 用流水號進行查詢所用的時間接近 秒 而如果以流水號為索引字段建立索引進行相同的查詢 所用時間不到 秒 因此在大型數(shù)據(jù)庫設計中 只有進行合理的索引字段選擇 才能有效提高整個數(shù)據(jù)庫的操作效率
數(shù)據(jù)操作的優(yōu)化 在大型數(shù)據(jù)庫中 如何提高數(shù)據(jù)操作效率值得關注 例如 每在數(shù)據(jù)庫流水表中增加一筆業(yè)務 就必須從流水控制表中取出流水號 并將其流水號的數(shù)值加一 正常情況下 單筆操作的反應速度尚屬正常 但當用它進行批量業(yè)務處理時 速度會明顯減慢 經過分析發(fā)現(xiàn) 每次對流水控制表中的流水號數(shù)值加一時都要鎖定該表 而該表卻是整個系統(tǒng)操作的核心 有可能在操作時被其他進程鎖定 因而使整個事務操作速度變慢 對這一問題的解決的辦法是 根據(jù)批量業(yè)務的總筆數(shù)批量申請流水號 并對流水控制表進行一次更新 即可提高批量業(yè)務處理的速度 另一個例子是對插表的優(yōu)化 對于大批量的業(yè)務處理 如果在插入數(shù)據(jù)庫表時用普通的Insert語句 速度會很慢 其原因在于 每次插表都要進行一次I/O操作 花費較長的時間 改進后 可以用Put語句等緩沖區(qū)形式等滿頁后再進行I/O操作 從而提高效率 對大的數(shù)據(jù)庫表進行刪除時 一般會直接用Delete語句 這個語句雖然可以進行小表操作 但對大表卻會因帶來大事務而導致刪除速度很慢甚至失敗 解決的方法是去掉事務 但更有效的辦法是先進行Drop操作再進行重建
數(shù)據(jù)庫參數(shù)的調整 數(shù)據(jù)庫參數(shù)的調整是一個經驗不斷積累的過程 應由有經驗的系統(tǒng)管理員完成 以Informix數(shù)據(jù)庫為例 記錄鎖的數(shù)目太少會造成鎖表的失敗 邏輯日志的文件數(shù)目太少會造成插入大表失敗等 這些問題都應根據(jù)實際情況進行必要的調整
必要的工具 在整個數(shù)據(jù)庫的開發(fā)與設計過程中 可以先開發(fā)一些小的應用工具 如自動生成庫表的頭文件 插入數(shù)據(jù)的初始化 數(shù)據(jù)插入的函數(shù)封裝 錯誤跟蹤或自動顯示等 以此提高數(shù)據(jù)庫的設計與開發(fā)效率
避免長事務 對單個大表的刪除或插入操作會帶來大事務 解決的辦法是對參數(shù)進行調整 也可以在插入時對文件進行分割 對于一個由一系列小事務順序操作共同構成的長事務(如銀行交易系統(tǒng)的日終交易) 可以由一系列操作完成整個事務 但其缺點是有可能因整個事務太大而使不能完成 或者 由于偶然的意外而使事務重做所需的時間太長 較好的解決方法是 把整個事務分解成幾個較小的事務 再由應用程序控制整個系統(tǒng)的流程 這樣 如果其中某個事務不成功 則只需重做該事務 因而既可節(jié)約時間 又可避免長事務
適當超前 計算機技術發(fā)展日新月異 數(shù)據(jù)庫的設計必須具有一定前瞻性 不但要滿足當前的應用要求 還要考慮未來的業(yè)務發(fā)展 同時必須有利于擴展或增加應用系統(tǒng)的處理功能
lishixinzhi/Article/program/SQL/202311/16498
購物網站數(shù)據(jù)庫設計
要這樣,這樣你會有無數(shù)多的表,而且以后新的一個產品時候非常麻煩,如果要屬于新的類別,而且還會因為避免數(shù)據(jù)庫太復雜而使得許多不同類的產品歸在一個類。而且你的程序很麻煩,要肢升棚為每個類編寫不同程序,因為數(shù)據(jù)表名不同。
應該用下面的辦法,主要使用四個表存儲所有類別的商品:
之一、類別名稱表,字段有
類別ID,類別名稱
1電腦
2洗衣機
第二、類別屬性表,字段有:
類別ID,屬性ID,屬性名稱
11CPU
12內存
13屏幕尺寸
21容量
22類型
第三、商品名稱表,字歷則段有:
商品ID,類別ID
第四、商品屬性表,字段有:
商品ID,屬性ID,屬性值
11P4
12128M
13CRT14
21P4
22512M
23LCD19
319公斤
32滾筒
418公斤
42波輪
上面定義了四個商品,商品ID為1~4,分別是128M、512M內存的電腦,和9公斤滾筒、8公斤的波輪洗衣機。
這樣定義的數(shù)據(jù)庫結構,可以包含任何商品,一般不會笑旅改變,那么程序也就無需改變,定義新的產品、或者修改現(xiàn)有商品只需要在程序界面有操作員點點鼠標。
請簡要的敘述一下數(shù)據(jù)庫的主要設計過程
一、數(shù)據(jù)庫設計過程
數(shù)據(jù)庫技術是信息資源管理最有效的手段。
數(shù)據(jù)庫設計是指:對于一個給定的應用環(huán)境,構造更優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),有效存儲數(shù)據(jù),滿足用戶信息要求和處理要求。
數(shù)據(jù)庫設計的各階段:
A、需求分析階段:綜合各個用戶的應用需求(現(xiàn)實世界的需求)。
B、在概念設計階段:形成獨立于機器和各DBMS產品的概念模式(信息世界模型),用E-R圖來描述。
C、在邏輯設計階段:將E-R圖轉換成具體的數(shù)據(jù)庫產品支持的數(shù)據(jù)模型,如關系模型,形成數(shù)據(jù)庫邏輯模式。然后根據(jù)用戶處理的要求,安全性的考慮,在基本表的基礎上再建立必要的視圖(VIEW)形成數(shù)據(jù)的外模式。
D、在物理設計階段:根據(jù)DBMS特點和處理的需要,進行物理存儲安排,設計索引,形成數(shù)據(jù)庫內模式。
1. 需求分析階段
需求收集和分析,結果得到數(shù)據(jù)字典描述的數(shù)據(jù)需求(和數(shù)據(jù)流圖描述的處理需求)。
需求分析的重點:調查、收集與分析用戶在數(shù)據(jù)管理中的信息要求、處理要求、安全性與完整性要求。
需求分析的方法:調查組織機構情況、各部門的業(yè)務活動情況、協(xié)助用戶明確對新系統(tǒng)的各種要求、確定新系統(tǒng)的邊界。
常用的調查方法有: 跟班作業(yè)、開調查會、請專人介紹、詢問、設計調查表請用戶填寫、查閱記錄。
分析和表達用戶需求的方法主要包括自頂向下和自底向上兩類方法。自頂向下的結構化分析方法(Structured Analysis,簡稱SA方法)從最上層的系統(tǒng)組織機構入手,采用逐層分解的方式分析系統(tǒng),并把每一層用數(shù)據(jù)流圖和數(shù)據(jù)字典描述。
數(shù)據(jù)流圖表達了數(shù)據(jù)和處理過程的關系。系統(tǒng)中的數(shù)據(jù)則借助數(shù)據(jù)字典(Data Dictionary,簡稱DD)來描述。
2. 概念結構設計階段
通過對用戶碰粗需求進行綜合、歸納與抽象,形成一個獨立于具體DBMS的概薯陸念模型,可以用E-R圖表示。
概念模型用于信息世界的建模。概念模型不依賴于某一個DBMS支持的數(shù)據(jù)模型。概念模型可以轉換為計算機上某一DBMS支持的特定數(shù)據(jù)模型。
概念模型特點:
(1) 具有較強的語義表達能力,能夠方便、直接地表達應用中的各種語義知識。
(2) 應該簡單、清晰、易于用戶理解,是用戶與數(shù)據(jù)庫設計人員之間進行交流的語言。
概念模型設計的一種常用方法為IDEF1X方法,它就是把實體-聯(lián)系方法應用到語義數(shù)據(jù)模型中的一種語義模型化技術,用于建立系統(tǒng)信息模型。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
2.1 第零步——初始化工程
這個階段的任務是從目的描述和范圍描述開始,確定建模目標,開發(fā)建模計劃,組織建模隊伍,收集源材料,制定約束和規(guī)范。收集源材料是這階段的重點。通過調查和觀察結果,業(yè)務流程,原有系統(tǒng)的輸入輸出,各種報表,收集原始數(shù)據(jù),形成了基本數(shù)據(jù)資笑手鎮(zhèn)料表。
2.2 之一步——定義實體
實體集成員都有一個共同的特征和屬性集,可以從收集的源材料——基本數(shù)據(jù)資料表中直接或間接標識出大部分實體。根據(jù)源材料名字表中表示物的術語以及具有 “代碼”結尾的術語,如客戶代碼、代理商代碼、產品代碼等將其名詞部分代表的實體標識出來,從而初步找出潛在的實體,形成初步實體表。
2.3 第二步——定義聯(lián)系
IDEF1X模型中只允許二元聯(lián)系,n元聯(lián)系必須定義為n個二元聯(lián)系。根據(jù)實際的業(yè)務需求和規(guī)則,使用實體聯(lián)系矩陣來標識實體間的二元關系,然后根據(jù)實際情況確定出連接關系的勢、關系名和說明,確定關系類型,是標識關系、非標識關系(強制的或可選的)還是非確定關系、分類關系。如果子實體的每個實例都需要通過和父實體的關系來標識,則為標識關系,否則為非標識關系。非標識關系中,如果每個子實體的實例都與而且只與一個父實體關聯(lián),則為強制的,否則為非強制的。如果父實體與子實體代表的是同一現(xiàn)實對象,那么它們?yōu)榉诸愱P系。
2.4 第三步——定義碼
通過引入交叉實體除去上一階段產生的非確定關系,然后從非交叉實體和獨立實體開始標識侯選碼屬性,以便唯一識別每個實體的實例,再從侯選碼中確定主碼。為了確定主碼和關系的有效性,通過非空規(guī)則和非多值規(guī)則來保證,即一個實體實例的一個屬性不能是空值,也不能在同一個時刻有一個以上的值。找出誤認的確定關系,將實體進一步分解,最后構造出IDEF1X模型的鍵基視圖(KB圖)。
2.5 第四步——定義屬性
從源數(shù)據(jù)表中抽取說明性的名詞開發(fā)出屬性表,確定屬性的所有者。定義非主碼屬性,檢查屬性的非空及非多值規(guī)則。此外,還要檢查完全依賴函數(shù)規(guī)則和非傳遞依賴規(guī)則,保證一個非主碼屬性必須依賴于主碼、整個主碼、僅僅是主碼。以此得到了至少符合關系理論第三范式的改進的IDEF1X模型的全屬性視圖。
2.6 第五步——定義其他對象和規(guī)則
定義屬性的數(shù)據(jù)類型、長度、精度、非空、缺省值、約束規(guī)則等。定義觸發(fā)器、存儲過程、視圖、角色、同義詞、序列等對象信息。
3. 邏輯結構設計階段
將概念結構轉換為某個DBMS所支持的數(shù)據(jù)模型(例如關系模型),并對其進行優(yōu)化。設計邏輯結構應該選擇最適于描述與表達相應概念結構的數(shù)據(jù)模型,然后選擇最合適的DBMS。
將E-R圖轉換為關系模型實際上就是要將實體、實體的屬性和實體之間的聯(lián)系轉化為關系模式,這種轉換一般遵循如下原則:一個實體型轉換為一個關系模式。實體的屬性就是關系的屬性。實體的碼就是關系的碼。
數(shù)據(jù)模型的優(yōu)化,確定數(shù)據(jù)依賴,消除冗余的聯(lián)系,確定各關系模式分別屬于第幾范式。確定是否要對它們進行合并或分解。一般來說將關系分解為3NF的標準,即:
表內的每一個值都只能被表達一次。
表內的每一行都應該被唯一的標識(有唯一鍵)。
表內不應該存儲依賴于其他鍵的非鍵信息。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
4. 數(shù)據(jù)庫物理設計階段
為邏輯數(shù)據(jù)模型選取一個最適合應用環(huán)境的物理結構(包括存儲結構和存取方法)。根據(jù)DBMS特點和處理的需要,進行物理存儲安排,設計索引,形成數(shù)據(jù)庫內模式。
5. 數(shù)據(jù)庫實施階段
運用DBMS提供的數(shù)據(jù)語言(例如SQL)及其宿主語言(例如C),根據(jù)邏輯設計和物理設計的結果建立數(shù)據(jù)庫,編制與調試應用程序,組織數(shù)據(jù)入庫,并進行試運行。 數(shù)據(jù)庫實施主要包括以下工作:用DDL定義數(shù)據(jù)庫結構、組織數(shù)據(jù)入庫 、編制與調試應用程序、數(shù)據(jù)庫試運行 ,(Data Definition Language(DDL數(shù)據(jù)定義語言)用作開新數(shù)據(jù)表、設定字段、刪除數(shù)據(jù)表、刪除字段,管理所有有關數(shù)據(jù)庫結構的東西)
●Create (新增有關數(shù)據(jù)庫結構的東西,屬DDL)
●Drop (刪除有關數(shù)據(jù)庫結構的東西,屬DDL)
●Alter (更改結構,屬DDL)
6. 數(shù)據(jù)庫運行和維護階段
在數(shù)據(jù)庫系統(tǒng)運行過程中必須不斷地對其進行評價、調整與修改。內容包括:數(shù)據(jù)庫的轉儲和恢復、數(shù)據(jù)庫的安全性、完整性控制、數(shù)據(jù)庫性能的監(jiān)督、分析和改進、數(shù)據(jù)庫的重組織和重構造。
7. 建模工具的使用
為加快數(shù)據(jù)庫設計速度,目前有很多數(shù)據(jù)庫輔助工具(CASE工具),如Rational公司的Rational Rose,CA公司的Erwin和Bpwin,Sybase公司的PowerDesigner以及Oracle公司的oracle Designer等。
ERwin主要用來建立數(shù)據(jù)庫的概念模型和物理模型。它能用圖形化的方式,描述出實體、聯(lián)系及實體的屬性。ERwin支持IDEF1X方法。通過使用 ERwin建模工具自動生成、更改和分析IDEF1X模型,不僅能得到優(yōu)秀的業(yè)務功能和數(shù)據(jù)需求模型,而且可以實現(xiàn)從IDEF1X模型到數(shù)據(jù)庫物理設計的轉變。ERwin工具繪制的模型對應于邏輯模型和物理模型兩種。在邏輯模型中,IDEF1X工具箱可以方便地用圖形化的方式構建和繪制實體聯(lián)系及實體的屬性。在物理模型中,ERwin可以定義對應的表、列,并可針對各種數(shù)據(jù)庫管理系統(tǒng)自動轉換為適當?shù)念愋汀?/p>
設計人員可根據(jù)需要選用相應的數(shù)據(jù)庫設計建模工具。例如需求分析完成之后,設計人員可以使用Erwin畫ER圖,將ER圖轉換為關系數(shù)據(jù)模型,生成數(shù)據(jù)庫結構;畫數(shù)據(jù)流圖,生成應用程序。
二、數(shù)據(jù)庫設計技巧
1. 設計數(shù)據(jù)庫之前(需求分析階段)
1) 理解客戶需求,包括用戶未來需求變化。
2) 了解企業(yè)業(yè)務類型,可以在開發(fā)階段節(jié)約大量的時間。
3) 重視輸入(要記錄的數(shù)據(jù))、輸出(報表、查詢、視圖)。
4) 創(chuàng)建數(shù)據(jù)字典和ER 圖表
數(shù)據(jù)字典(Data Dictionary,簡稱DD)是各類數(shù)據(jù)描述的,是關于數(shù)據(jù)庫中數(shù)據(jù)的描述,即元數(shù)據(jù),不是數(shù)據(jù)本身。(至少應該包含每個字段的數(shù)據(jù)類型和在每個表內的主外鍵)。
數(shù)據(jù)項描述: 數(shù)據(jù)項名,數(shù)據(jù)項含義說明,別名,數(shù)據(jù)類型,長度,取值范圍,取值含義,與其他數(shù)據(jù)項的邏輯關系
數(shù)據(jù)結構描述: 數(shù)據(jù)結構名,含義說明,組成:
數(shù)據(jù)流描述: 數(shù)據(jù)流名,說明,數(shù)據(jù)流來源,數(shù)據(jù)流去向, 組成:,平均流量,高峰期流量
數(shù)據(jù)存儲描述: 數(shù)據(jù)存儲名,說明,編號,流入的數(shù)據(jù)流,流出的數(shù)據(jù)流,組成:,數(shù)據(jù)量,存取方式
處理過程描述: 處理過程名,說明,輸入:,輸出:,處理:
ER 圖表和數(shù)據(jù)字典可以讓任何了解數(shù)據(jù)庫的人都明確如何從數(shù)據(jù)庫中獲得數(shù)據(jù)。ER圖對表明表之間關系很有用,而數(shù)據(jù)字典則說明了每個字段的用途以及任何可能存在的別名。對SQL 表達式的文檔化來說這是完全必要的。
5) 定義標準的對象命名規(guī)范
數(shù)據(jù)庫各種對象的命名必須規(guī)范。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
2. 表和字段的設計(數(shù)據(jù)庫邏輯設計)
表設計原則
1) 標準化和規(guī)范化
數(shù)據(jù)的標準化有助于消除數(shù)據(jù)庫中的數(shù)據(jù)冗余。標準化有好幾種形式,但Third Normal Form(3NF)通常被認為在性能、擴展性和數(shù)據(jù)完整性方面達到了更好平衡。簡單來說,遵守3NF 標準的數(shù)據(jù)庫的表設計原則是:“One Fact in One Place”即某個表只包括其本身基本的屬性,當不是它們本身所具有的屬性時需進行分解。表之間的關系通過外鍵相連接。它具有以下特點:有一組表專門存放通過鍵連接起來的關聯(lián)數(shù)據(jù)。
2) 數(shù)據(jù)驅動
采用數(shù)據(jù)驅動而非硬編碼的方式,許多策略變更和維護都會方便得多,大大增強系統(tǒng)的靈活性和擴展性。
舉例,假如用戶界面要訪問外部數(shù)據(jù)源(文件、XML 文檔、其他數(shù)據(jù)庫等),不妨把相應的連接和路徑信息存儲在用戶界面支持的表里。如果用戶界面執(zhí)行工作流之類的任務(發(fā)送郵件、打印信箋、修改記錄狀態(tài)等),那么產生工作流的數(shù)據(jù)也可以存放在數(shù)據(jù)庫里。角色權限管理也可以通過數(shù)據(jù)驅動來完成。事實上,如果過程是數(shù)據(jù)驅動的,你就可以把相當大的責任推給用戶,由用戶來維護自己的工作流過程。
3) 考慮各種變化
在設計數(shù)據(jù)庫的時候考慮到哪些數(shù)據(jù)字段將來可能會發(fā)生變更。
4) 表名、報表名和查詢名的命名規(guī)范
(采用前綴命名)檢查表名、報表名和查詢名之間的命名規(guī)范。你可能會很快就被這些不同的數(shù)據(jù)庫要素的名稱搞糊涂了。你可以統(tǒng)一地命名這些數(shù)據(jù)庫的不同組成部分,至少你應該在這些對象名字的開頭用 Table、Query 或者 Report 等前綴加以區(qū)別。如果采用了 Microsoft Access,你可以用 qry、rpt、tbl 和 mod 等符號來標識對象(比如 tbl_Employees)。用 sp_company 標識存儲過程,用 udf_ (或者類似的標記)標識自定義編寫的函數(shù)。
字段設計原則:
1) 每個表中都應該添加的3 個有用的字段。
dRecordCreationDate,在SQL Server 下默認為GETDATE()
sRecordCreator,在SQL Server 下默認為NOT NULL DEFAULT USER
nRecordVersion,記錄的版本標記;有助于準確說明記錄中出現(xiàn)null 數(shù)據(jù)或者丟失數(shù)據(jù)的原因
時效性數(shù)據(jù)應包括“最近更新日期/時間”字段。時間標記對查找數(shù)據(jù)問題的原因、按日期重新處理/重載數(shù)據(jù)和清除舊數(shù)據(jù)特別有用。
2) 對地址和采用多個字段
描述街道地址就短短一行記錄是不夠的。Address_Line1、Address_Line2 和Address_Line3 可以提供更大的靈活性。還有,號碼和郵件地址更好擁有自己的數(shù)據(jù)表,其間具有自身的類型和標記類別。
3) 表內的列的命名規(guī)則(采用前綴/后綴命名)、采用有意義的字段名
對列名應該采用標準的前綴和后綴。如鍵是數(shù)字類型:用 _N 后綴;字符類型:_C 后綴;日期類型:_D 后綴。再如,假如你的表里有好多“money”字段,你不妨給每個列增加一個 _M 后綴。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
假設有兩個表:
Customer 和 Order。Customer 表的前綴是 cu_,所以該表內的子段名如下:cu_name_id、cu_surname、cu_initials 和cu_address 等。Order 表的前綴是 or_,所以子段名是:
or_order_id、or_cust_name_id、or_quantity 和 or_description 等。
這樣從數(shù)據(jù)庫中選出全部數(shù)據(jù)的 SQL 語句可以寫成如下所示:
Select * From Customer, Order Where cu_surname = “MYNAME” ;
and cu_name_id = or_cust_name_id and or_quantity = 1
在沒有這些前綴的情況下則寫成這個樣子(用別名來區(qū)分):
Select * From Customer, Order Where Customer.surname = “MYNAME” ;
and Customer.name_id = Order.cust_name_id and Order.quantity = 1
第 1 個 SQL 語句沒少鍵入多少字符。但如果查詢涉及到 5 個表乃至更多的列你就知道這個技巧多有用了。
5) 選擇數(shù)字類型和文本類型的長度應盡量充足
假設客戶ID 為10 位數(shù)長。那你應該把數(shù)據(jù)庫表字段的長度設為12 或者13 個字符長。但這額外占據(jù)的空間卻無需將來重構整個數(shù)據(jù)庫就可以實現(xiàn)數(shù)據(jù)庫規(guī)模的增長了。
6) 增加刪除標記字段
在表中包含一個“刪除標記”字段,這樣就可以把行標記為刪除。在關系數(shù)據(jù)庫里不要單獨刪除某一行;更好采用清除數(shù)據(jù)程序而且要仔細維護索引整體性。
7) 提防大小寫混用的對象名和特殊字符
采用全部大寫而且包含下劃符的名字具有更好的可讀性(CUSTOMER_DATA),絕對不要在對象名的字符之間留空格。
8) 小心保留詞
要保證你的字段名沒有和保留詞、數(shù)據(jù)庫系統(tǒng)或者常用訪問方法沖突,比如,用 DESC 作為說明字段名。后果可想而知!DESC 是 DESCENDING 縮寫后的保留詞。表里的一個 SELECT * 語句倒是能用,但得到的卻是一大堆毫無用處的信息。
9) 保持字段名和類型的一致性
在命名字段并為其指定數(shù)據(jù)類型的時候一定要保證一致性。假如字段在表1中叫做“agreement_number”,就別在表2里把名字改成 “ref1”。假如數(shù)據(jù)類型在表1里是整數(shù),那在表2里可就別變成字符型了。當然在表1(ABC)有處鍵ID,則為了可讀性,在表2做關聯(lián)時可以命名為 ABC_ID。
10) 避免使用觸發(fā)器
觸發(fā)器的功能通??梢杂闷渌绞綄崿F(xiàn)。在調試程序時觸發(fā)器可能成為干擾。假如你確實需要采用觸發(fā)器,你更好集中對它文檔化。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
3. 選擇鍵和索引(數(shù)據(jù)庫邏輯設計)
參考:《SQL優(yōu)化-索引》一文
4. 數(shù)據(jù)完整性設計(數(shù)據(jù)庫邏輯設計)
1) 完整性實現(xiàn)機制:
實體完整性:主鍵
參照完整性:
父表中刪除數(shù)據(jù):級聯(lián)刪除;受限刪除;置空值
父表中插入數(shù)據(jù):受限插入;遞歸插入
父表中更新數(shù)據(jù):級聯(lián)更新;受限更新;置空值
DBMS對參照完整性可以有兩種方法實現(xiàn):外鍵實現(xiàn)機制(約束規(guī)則)和觸發(fā)器實現(xiàn)機制用戶定義完整性:
NOT NULL;CHECK;觸發(fā)器
2) 用約束而非商務規(guī)則強制數(shù)據(jù)完整性
采用數(shù)據(jù)庫系統(tǒng)實現(xiàn)數(shù)據(jù)的完整性。這不但包括通過標準化實現(xiàn)的完整性而且還包括數(shù)據(jù)的功能性。不要依賴于商務層保證數(shù)據(jù)完整性;它不能保證表之間(外鍵) 的完整性所以不能強加于其他完整性規(guī)則之上。如果你在數(shù)據(jù)層確實采用了約束,你要保證有辦法把更新不能通過約束檢查的原因采用用戶理解的語言通知用戶界面。
3) 強制指示完整性
在有害數(shù)據(jù)進入數(shù)據(jù)庫之前將其剔除。激活數(shù)據(jù)庫系統(tǒng)的指示完整性特性。這樣可以保持數(shù)據(jù)的清潔而能迫使開發(fā)人員投入更多的時間處理錯誤條件。
4) 使用查找控制數(shù)據(jù)完整性
控制數(shù)據(jù)完整性的更佳方式就是限制用戶的選擇。只要有可能都應該提供給用戶一個清晰的價值列表供其選擇。這樣將減少鍵入代碼的錯誤和誤解同時提供數(shù)據(jù)的一致性。某些公共數(shù)據(jù)特別適合查找:國家代碼、狀態(tài)代碼等。
5) 采用視圖
為了在數(shù)據(jù)庫和應用程序代碼之間提供另一層抽象,可以為應用程序建立專門的視圖而不必非要應用程序直接訪問數(shù)據(jù)表。這樣做還等于在處理數(shù)據(jù)庫變更時給你提供了更多的自由。
6) 分布式數(shù)據(jù)系統(tǒng)
對分布式系統(tǒng)而言,在你決定是否在各個站點復制所有數(shù)據(jù)還是把數(shù)據(jù)保存在一個地方之前應該估計一下未來 5 年或者 10 年的數(shù)據(jù)量。當你把數(shù)據(jù)傳送到其他站點的時候,更好在數(shù)據(jù)庫字段中設置一些標記,在目的站點收到你的數(shù)據(jù)之后更新你的標記。為了進行這種數(shù)據(jù)傳輸,請寫下你自己的批處理或者調度程序以特定時間間隔運行而不要讓用戶在每天的工作后傳輸數(shù)據(jù)。本地拷貝你的維護數(shù)據(jù),比如計算常數(shù)和利息率等,設置版本號保證數(shù)據(jù)在每個站點都完全一致。
7) 關系
如果兩個實體之間存在多對一關系,而且還有可能轉化為多對多關系,那么你更好一開始就設置成多對多關系。從現(xiàn)有的多對一關系轉變?yōu)槎鄬Χ嚓P系比一開始就是多對多關系要難得多。
8) 給數(shù)據(jù)保有和恢復制定計劃
考慮數(shù)據(jù)保存策略并包含在設計過程中,預先設計你的數(shù)據(jù)恢復過程。采用可以發(fā)布給用戶/開發(fā)人員的數(shù)據(jù)字典實現(xiàn)方便的數(shù)據(jù)識別同時保證對數(shù)據(jù)源文檔化。編寫在線更新來“更新查詢”供以后萬一數(shù)據(jù)丟失可以重新處理更新。
9) 用存儲過程讓系統(tǒng)做重活
提供一整套常規(guī)的存儲過程來訪問各組以便加快速度和簡化客戶程序代碼的開發(fā)。數(shù)據(jù)庫不只是一個存放數(shù)據(jù)的地方,它也是簡化編碼之地。
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
5. 其他設計技巧
1) 避免使用觸發(fā)器
觸發(fā)器的功能通??梢杂闷渌绞綄崿F(xiàn)。在調試程序時觸發(fā)器可能成為干擾。假如你確實需要采用觸發(fā)器,你更好集中對它文檔化。
2) 使用常用英語(或者其他任何語言)而不要使用編碼
在創(chuàng)建下拉菜單、列表、報表時更好按照英語名排序。假如需要編碼,可以在編碼旁附上用戶知道的英語。
3) 保存常用信息
讓一個表專門存放一般數(shù)據(jù)庫信息非常有用。在這個表里存放數(shù)據(jù)庫當前版本、最近檢查/修復(對Access)、關聯(lián)設計文檔的名稱、客戶等信息。這樣可以實現(xiàn)一種簡單機制跟蹤數(shù)據(jù)庫,當客戶抱怨他們的數(shù)據(jù)庫沒有達到希望的要求而與你聯(lián)系時,這樣做對非客戶機/服務器環(huán)境特別有用。
4) 包含版本機制
在數(shù)據(jù)庫中引入版本控制機制來確定使用中的數(shù)據(jù)庫的版本。時間一長,用戶的需求總是會改變的。最終可能會要求修改數(shù)據(jù)庫結構。把版本信息直接存放到數(shù)據(jù)庫中更為方便。
5) 編制文檔
對所有的快捷方式、命名規(guī)范、限制和函數(shù)都要編制文檔。
采用給表、列、觸發(fā)器等加注釋的 數(shù)據(jù)庫工具。對開發(fā)、支持和跟蹤修改非常有用。
對數(shù)據(jù)庫文檔化,或者在數(shù)據(jù)庫自身的內部或者單獨建立文檔。這樣,當過了一年多時間后再回過頭來做第2 個版本,犯錯的機會將大大減少。
6) 測試、測試、反復測試
建立或者修訂數(shù)據(jù)庫之后,必須用用戶新輸入的數(shù)據(jù)測試數(shù)據(jù)字段。最重要的是,讓用戶進行測試并且同用戶一道保證選擇的數(shù)據(jù)類型滿足商業(yè)要求。測試需要在把新數(shù)據(jù)庫投入實際服務之前完成。
7) 檢查設計
在開發(fā)期間檢查數(shù)據(jù)庫設計的常用技術是通過其所支持的應用程序原型檢查數(shù)據(jù)庫。換句話說,針對每一種最終表達數(shù)據(jù)的原型應用,保證你檢查了數(shù)據(jù)模型并且查看如何取出數(shù)據(jù)。
三、數(shù)據(jù)庫命名規(guī)范
1. 實體(表)的命名
1) 表以名詞或名詞短語命名,確定表名是采用復數(shù)還是單數(shù)形式,此外給表的別名定義簡單規(guī)則(比方說,如果表名是一個單詞,別名就取單詞的前4 個字母;如果表名是兩個單詞,就各取兩個單詞的前兩個字母組成4 個字母長的別名;如果表的名字由3 個單詞組成,從頭兩個單詞中各取一個然后從最后一個單詞中再取出兩個字母,結果還是組成4 字母長的別名,其余依次類推)
對工作用表來說,表名可以加上前綴WORK_ 后面附上采用該表的應用程序的名字。在命名過程當中,根據(jù)語義拼湊縮寫即可。注意:將字段名稱會統(tǒng)一成大寫或者小寫中的一種,故中間加上下劃線。
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
舉例:
定義的縮寫 Sales: Sal 銷售;
Order: Ord 訂單;
Detail: Dtl 明細;
則銷售訂單明細表命名為:Sal_Ord_Dtl;
2) 如果表或者是字段的名稱僅有一個單詞,那么建議不使用縮寫,而是用完整的單詞。
舉例:
定義的縮寫 Material Ma 物品;
物品表名為:Material, 而不是 Ma.
但是字段物品編碼則是:Ma_ID;而不是Material_ID
3) 所有的存儲值列表的表前面加上前綴Z
目的是將這些值列表類排序在數(shù)據(jù)庫最后。
4) 所有的冗余類的命名(主要是累計表)前面加上前綴X
冗余類是為了提高數(shù)據(jù)庫效率,非規(guī)范化數(shù)據(jù)庫的時候加入的字段或者表
5) 關聯(lián)類通過用下劃線連接兩個基本類之后,再加前綴R的方式命名,后面按照字母順序羅列兩個表名或者表名的縮寫。
關聯(lián)表用于保存多對多關系。
如果被關聯(lián)的表名大于10個字母,必須將原來的表名的進行縮寫。如果沒有其他原因,建議都使用縮寫。
舉例:表Object與自身存在多對多的關系,則保存多對多關系的表命名為:R_Object;
作者: 小靈, 出處:論壇, 責任編輯: 李書琴,:17
本文詳細解析了數(shù)據(jù)庫設計過程、設計技巧以及總結了數(shù)據(jù)庫命名規(guī)范……
2. 屬性(列)的命名
1) 采用有意義的列名
表內的列要針對鍵采用一整套設計規(guī)則。每一個表都將有一個自動ID作為主健,邏輯上的主健作為之一組候選主健來定義;
A、如果是數(shù)據(jù)庫自動生成的編碼,統(tǒng)一命名為:ID
B、如果是自定義的邏輯上的編碼則用縮寫加“ID”的方法命名,即“XXXX_ID”
C、如果鍵是數(shù)字類型,你可以用_NO 作為后綴;
D、如果是字符類型則可以采用_CODE 后綴
E、對列名應該采用標準的前綴和后綴。
舉例:銷售訂單的編號字段命名:Sal_Ord_ID;如果還存在一個數(shù)據(jù)庫生成的自動編號,則命名為:ID。
2) 所有的屬性加上有關類型的后綴
注意,如果還需要其它的后綴,都放在類型后綴之前。
注: 數(shù)據(jù)類型是文本的字段,類型后綴TX可以不寫。有些類型比較明顯的字段,可以不寫類型后綴。
3) 采用前綴命名
給每個表的列名都采用統(tǒng)一的前綴,那么在編寫SQL表達式的時候會得到大大的簡化。這樣做也確實有缺點,比如破壞了自動表連接工具的作用,后者把公共列名同某些數(shù)據(jù)庫聯(lián)系起來。
3. 視圖的命名
1) 視圖以V作為前綴,其他命名規(guī)則和表的命名類似;
2) 命名應盡量體現(xiàn)各視圖的功能。
4. 觸發(fā)器的命名(盡量不使用)
觸發(fā)器以TR作為前綴,觸發(fā)器名為相應的表名加上后綴,Insert觸發(fā)器加’_I’,Delete觸發(fā)器加’_D’,Update觸發(fā)器加’_U’,如:TR_Customer_I,TR_Customer_D,TR_Customer_U。
5. 存儲過程名
存儲過程應以’UP_’開頭,和系統(tǒng)的存儲過程區(qū)分,后續(xù)部分主要以動賓形式構成,并用下劃線分割各個組成部分。如增加代理商的帳戶的存儲過程為’UP_Ins_Agent_Account’。
6. 變量名
變量名采用小寫,若屬于詞組形式,用下劃線分隔每個單詞,如@my_err_no。
7. 命名中其他注意事項
1) 以上命名都不得超過30個字符的系統(tǒng)限制。變量名的長度限制為29(不包括標識字符@)。
2) 數(shù)據(jù)對象、變量的命名都采用英文字符,禁止使用中文命名。絕對不要在對象名的字符之間留空格。
3) 小心保留詞,要保證你的字段名沒有和保留詞、數(shù)據(jù)庫系統(tǒng)或者常用訪問方法沖突
關于數(shù)據(jù)庫設計新的的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。
成都服務器托管選創(chuàng)新互聯(lián),先上架開通再付費。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)-網站建設,軟件開發(fā)老牌服務商!微信小程序開發(fā),APP開發(fā),網站制作,網站營銷推廣服務眾多企業(yè)。電話:028-86922220
文章題目:創(chuàng)新數(shù)據(jù)庫設計技巧,提高數(shù)據(jù)操作效率 (數(shù)據(jù)庫設計新的)
當前路徑:http://m.fisionsoft.com.cn/article/dhpgcic.html


咨詢
建站咨詢
