引言:數(shù)據(jù)庫設(shè)計(jì) Step by Step (1)得到這么多朋友的關(guān)注著實(shí)出乎了我的意外。這也堅(jiān)定了我把這一系列的博文寫好的決心。近來工作上的事務(wù)比較繁重,加之我期望這個系列的文章能盡可能的系統(tǒng)、完整,需要花很多時間整理、思考數(shù)據(jù)庫設(shè)計(jì)的各種資料,所以文章的更新速度可能會慢一些,也希望大家能夠諒解。
系列的第二講我們將站在高處俯瞰一下數(shù)據(jù)庫的生命周期,了解數(shù)據(jù)庫設(shè)計(jì)的整體流程。 大家對軟件生命周期較為熟悉,數(shù)據(jù)庫也有其生命周期,如下圖所示。 數(shù)據(jù)庫的生命周期主要分為四個階段:需求分析、邏輯設(shè)計(jì)、物理設(shè)計(jì)、實(shí)現(xiàn)維護(hù)。 這個系列的博文將主要關(guān)注數(shù)據(jù)庫生命周期中的前兩個階段(需求分析、邏輯設(shè)計(jì)),還會涉及反范式化設(shè)計(jì)的一些內(nèi)容。如圖中高亮圈出的部分。 數(shù)據(jù)庫的物理設(shè)計(jì),包括索引的選擇與優(yōu)化、數(shù)據(jù)分區(qū)等內(nèi)容。這些內(nèi)容也非常豐富,而且可以自成體系,園子里也有很多好文章,故在本系列中不作主要關(guān)注。本文最后將給出一些鏈接供大家參考。 數(shù)據(jù)庫生命周期的四個階段又能細(xì)分為多個小步驟,我們配合圖(1)來看看每一小步包含的內(nèi)容。 階段1 需求分析 數(shù)據(jù)庫設(shè)計(jì)與軟件設(shè)計(jì)一樣首先需要進(jìn)行需求分析。 我們需要與數(shù)據(jù)的創(chuàng)造者和使用者進(jìn)行訪談。對訪談獲得的信息進(jìn)行整理、分析,并撰寫正式的需求文檔。 需求文檔中需包含:需要處理的數(shù)據(jù);數(shù)據(jù)的自然關(guān)系;數(shù)據(jù)庫實(shí)現(xiàn)的硬件環(huán)境、軟件平臺等; 階段2 邏輯設(shè)計(jì) 使用ER或UML建模技術(shù),創(chuàng)建概念數(shù)據(jù)模型圖,展示所有數(shù)據(jù)以及數(shù)據(jù)間關(guān)系。最終概念數(shù)據(jù)模型必須被轉(zhuǎn)化為范式化的表。 數(shù)據(jù)庫邏輯設(shè)計(jì)主要步驟包括: a) 概念數(shù)據(jù)建模
b) 多視圖集成
c) 轉(zhuǎn)化概念數(shù)據(jù)模型為SQL表
d) 范式化
階段3 物理設(shè)計(jì) 數(shù)據(jù)庫物理設(shè)計(jì)包括選擇索引,數(shù)據(jù)分區(qū)與分組等。 邏輯設(shè)計(jì)方法學(xué)通過減少需要分析的數(shù)據(jù)依賴,簡化了大型關(guān)系數(shù)據(jù)庫的設(shè)計(jì),這也減輕了數(shù)據(jù)庫物理設(shè)計(jì)階段的壓力。
數(shù)據(jù)庫物理設(shè)計(jì)的目標(biāo)是盡可能優(yōu)化性能。 物理設(shè)計(jì)階段,全局表結(jié)構(gòu)可能需要進(jìn)行重構(gòu)來滿足性能上的需求,這被稱為反范式化。 反范式化的步驟包括:
階段4 數(shù)據(jù)庫的實(shí)現(xiàn)維護(hù) 當(dāng)設(shè)計(jì)完成之后,使用數(shù)據(jù)庫管理系統(tǒng)(DBMS)中的數(shù)據(jù)定義語言(DDL)來創(chuàng)建數(shù)據(jù)結(jié)構(gòu)。 數(shù)據(jù)庫創(chuàng)建完成后,應(yīng)用程序或用戶可以使用數(shù)據(jù)操作語言(DML)來使用(查詢、修改等)該數(shù)據(jù)庫。 一旦數(shù)據(jù)庫開始運(yùn)行,就需要對其性能進(jìn)行監(jiān)視。當(dāng)數(shù)據(jù)庫性能無法滿足要求或用戶提出新的功能需求時,就需要對該數(shù)據(jù)庫進(jìn)行再設(shè)計(jì)與修改。這形成了一個循環(huán):監(jiān)視 –> 再設(shè)計(jì) –> 修改 –> 監(jiān)視…。
這里只做一個提綱挈領(lǐng)的簡介,大家可以根據(jù)相應(yīng)的線索進(jìn)行擴(kuò)展。 表、行、列 關(guān)系數(shù)據(jù)庫可以想象成表的集合,每個表包含行與列。(可以想象成一個Excel workbook,包含多個worksheet)。 表在關(guān)系代數(shù)中被稱為關(guān)系,這也是關(guān)系數(shù)據(jù)庫名稱的起源(不要與表之間的外鍵關(guān)系混淆)。 列在關(guān)系代數(shù)中被稱為屬性(attribute)。列中允許存放的值的集合稱為列的域(域與數(shù)據(jù)類型密切相關(guān),但并不完全相同)。 行在關(guān)系代數(shù)中的學(xué)名是元組(tuple)。 關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)來自于“關(guān)系代數(shù)”。但在關(guān)系代數(shù)中,一個集合的各個元組沒有次序的概念,在關(guān)系數(shù)據(jù)庫中為了方便使用,定義了行的次序。 鍵、索引 鍵是一種約束,目的是保證數(shù)據(jù)完整性
索引是數(shù)據(jù)的物理組織形式,目的是提高查詢的性能 約束 基本約束
檢查約束(Check Constraints)
主鍵約束(Primary Key Constraints)
唯一性約束(Unique Constraints) 外鍵約束(Foreign Key Constraints) 關(guān)系數(shù)據(jù)庫操作
上述7種是最基本的關(guān)系數(shù)據(jù)庫操作,對應(yīng)于集合論中的關(guān)系運(yùn)算。 有些書籍中還會加入改名(Rename),除(Divide)等關(guān)系操作。 1. 數(shù)據(jù)庫生命周期的四個階段:需求分析、邏輯設(shè)計(jì)、物理設(shè)計(jì)、實(shí)現(xiàn)維護(hù)。 2. 關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)是關(guān)系代數(shù)。 數(shù)據(jù)庫物理設(shè)計(jì)參考資料 第一個鏈接是我針對查詢優(yōu)化作的讀書筆記,后三個鏈接是SQLServerCentral中幾篇關(guān)于索引的文章(需要簡單注冊后才能看到全文) 1. 查詢優(yōu)化系列(查詢優(yōu)化(1),查詢優(yōu)化(2),查詢優(yōu)化(3),查詢優(yōu)化(4),查詢優(yōu)化(5)——總結(jié)) 2. Part 1 - The basics of indexes |
|