天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

數(shù)據(jù)庫設(shè)計 Step by Step (2)

  引言:數(shù)據(jù)庫設(shè)計 Step by Step (1)得到這么多朋友的關(guān)注著實出乎了我的意外。這也堅定了我把這一系列的博文寫好的決心。近來工作上的事務(wù)比較繁重,加之我期望這個系列的文章能盡可能的系統(tǒng)、完整,需要花很多時間整理、思考數(shù)據(jù)庫設(shè)計的各種資料,所以文章的更新速度可能會慢一些,也希望大家能夠諒解。

  系列的第二講我們將站在高處俯瞰一下數(shù)據(jù)庫的生命周期,了解數(shù)據(jù)庫設(shè)計的整體流程。

image  數(shù)據(jù)庫生命周期

  大家對軟件生命周期較為熟悉,數(shù)據(jù)庫也有其生命周期,如下圖所示。

image圖(1)數(shù)據(jù)庫生命周期

  數(shù)據(jù)庫的生命周期主要分為四個階段:需求分析、邏輯設(shè)計、物理設(shè)計、實現(xiàn)維護。

  這個系列的博文將主要關(guān)注數(shù)據(jù)庫生命周期中的前兩個階段(需求分析、邏輯設(shè)計),還會涉及反范式化設(shè)計的一些內(nèi)容。如圖中高亮圈出的部分。

  數(shù)據(jù)庫的物理設(shè)計,包括索引的選擇與優(yōu)化、數(shù)據(jù)分區(qū)等內(nèi)容。這些內(nèi)容也非常豐富,而且可以自成體系,園子里也有很多好文章,故在本系列中不作主要關(guān)注。本文最后將給出一些鏈接供大家參考。

  數(shù)據(jù)庫生命周期的四個階段又能細分為多個小步驟,我們配合圖(1)來看看每一小步包含的內(nèi)容。

  階段1 需求分析

  數(shù)據(jù)庫設(shè)計與軟件設(shè)計一樣首先需要進行需求分析。

  我們需要與數(shù)據(jù)的創(chuàng)造者和使用者進行訪談。對訪談獲得的信息進行整理、分析,并撰寫正式的需求文檔。

  需求文檔中需包含:需要處理的數(shù)據(jù);數(shù)據(jù)的自然關(guān)系;數(shù)據(jù)庫實現(xiàn)的硬件環(huán)境、軟件平臺等;

image圖(2)階段1 需求分析

  階段2 邏輯設(shè)計

  使用ER或UML建模技術(shù),創(chuàng)建概念數(shù)據(jù)模型圖,展示所有數(shù)據(jù)以及數(shù)據(jù)間關(guān)系。最終概念數(shù)據(jù)模型必須被轉(zhuǎn)化為范式化的表。

  數(shù)據(jù)庫邏輯設(shè)計主要步驟包括:

  a) 概念數(shù)據(jù)建模

在需求分析完成后,使用ER圖或UML圖對數(shù)據(jù)進行建模。使用ER圖或UML圖描述需求中的語義,即得到了數(shù)據(jù)概念模型(Conceptual Data Model),例如:三元關(guān)系(ternary relationships)、超類(supertypes)、子類(subtypes)等。

eg:  零售商視角,產(chǎn)品/客戶數(shù)據(jù)庫的ER模型簡圖

注:ER圖的含義,以及詳細標記方法將在該系列的下一篇博文中進行討論

image圖(3)階段2(a) 概念數(shù)據(jù)建模

  b) 多視圖集成

當在大型項目設(shè)計或多人參與設(shè)計的情況下,會產(chǎn)生數(shù)據(jù)和關(guān)系的多個視圖。這些視圖必須進行化簡與集成,消除模型中的冗余與不一致,最終形成一個全局的模型。多視圖集成可以使用ER建模語義中的同義詞(synonyms)、聚合(aggregation)、泛化(generalization)等方法。多視圖集成在整合多個應(yīng)用的場景中也非常重要。

eg: 集成零售商ER圖與客戶ER圖

零售商ER圖如圖(3)所示。客戶視角,產(chǎn)品/客戶數(shù)據(jù)庫的ER模型簡圖如下:

image圖(4)以客戶為關(guān)注點繪制的ER圖

注:現(xiàn)在市面上有許多輔助建模工具可以繪制ER圖。使用Sybase的PowerDesigner繪制與圖(4)相同語義的ER圖如下:

image

其標記法與圖(4)中略有不同,這將在今后的博文中加以說明。

這里需要指出的是輔助軟件的使用不是設(shè)計的核心,大家不要被這些工具迷惑。所以后文中我們將主要使用手繪。只要掌握了ER圖的語義,使用這些軟件都不會是件難事。

集成零售商ER圖與客戶ER圖

image圖(5) 階段2(b) 多視圖集成

  c) 轉(zhuǎn)化概念數(shù)據(jù)模型為SQL表

根據(jù)映射規(guī)則,把ER圖中的實體與關(guān)系轉(zhuǎn)化為SQL表結(jié)構(gòu)。在這一過程中我們將識別冗余的表,并去除這些表。

eg: 把圖(5)中的customer, product, salesperson實體轉(zhuǎn)化為SQL表

image圖(6) 階段2(c)轉(zhuǎn)化概念數(shù)據(jù)模型為SQL表

  d) 范式化

范式化是數(shù)據(jù)庫邏輯設(shè)計中的重要一步。范式化的目標是盡可能去除模型中的冗余信息,從而消除關(guān)系模型更新、插入、刪除異常(anomalies)。

講到范式化就會引出函數(shù)依賴(Functional Dependency)這一概念。函數(shù)依賴(FDs)源自于概念數(shù)據(jù)模型圖,反映了需求分析中的數(shù)據(jù)關(guān)系語義。不同實體之間的函數(shù)依賴表示各個實體唯一鍵之間的依賴。實體內(nèi)部也有函數(shù)依賴,反映了實體中鍵屬性與非鍵屬性之間的依賴。在保證數(shù)據(jù)完整性約束的前提下,基于函數(shù)依賴對候選表進行范式化(分解、降低數(shù)據(jù)冗余)。

eg: 對圖(6)中的Salesperson表進行范式化,消除更新異常(update anomalies)

image圖(7) 階段2(d)范式化

  階段3 物理設(shè)計

  數(shù)據(jù)庫物理設(shè)計包括選擇索引,數(shù)據(jù)分區(qū)與分組等。

  邏輯設(shè)計方法學(xué)通過減少需要分析的數(shù)據(jù)依賴,簡化了大型關(guān)系數(shù)據(jù)庫的設(shè)計,這也減輕了數(shù)據(jù)庫物理設(shè)計階段的壓力。

1. 概念數(shù)據(jù)建模和多視圖集成準確地反映了現(xiàn)實需求場景

2. 范式化在模型轉(zhuǎn)化為SQL表的過程中保留了數(shù)據(jù)完整性

  數(shù)據(jù)庫物理設(shè)計的目標是盡可能優(yōu)化性能。

  物理設(shè)計階段,全局表結(jié)構(gòu)可能需要進行重構(gòu)來滿足性能上的需求,這被稱為反范式化。

  反范式化的步驟包括:

1. 辨別關(guān)鍵性流程,如頻繁運行、大容量、高優(yōu)先級的處理操作

2. 通過增加冗余來提高關(guān)鍵性流程的性能

3. 評估所造成的代價(對查詢、修改、存儲的影響)和可能損失的數(shù)據(jù)一致性

  階段4 數(shù)據(jù)庫的實現(xiàn)維護

  當設(shè)計完成之后,使用數(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ù)庫開始運行,就需要對其性能進行監(jiān)視。當數(shù)據(jù)庫性能無法滿足要求或用戶提出新的功能需求時,就需要對該數(shù)據(jù)庫進行再設(shè)計與修改。這形成了一個循環(huán):監(jiān)視 –> 再設(shè)計 –>  修改 –> 監(jiān)視…。

image  在進行數(shù)據(jù)庫設(shè)計之前,我們先回顧一下關(guān)系數(shù)據(jù)庫的相關(guān)基本概念。

  這里只做一個提綱挈領(lǐng)的簡介,大家可以根據(jù)相應(yīng)的線索進行擴展。

  表、行、列

  關(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ù)完整性

1. 復(fù)合鍵(Compound key):由多個數(shù)據(jù)列組成的鍵

2. 超鍵(Superkey):列的集合,其中任何兩行都不會完全相同

3. 候選鍵(Candidate key):首先是一個超鍵,同時這個超鍵中的任何列的缺失都會破壞行的唯一性

4. 主鍵(Primary key):指定的某個候選鍵

  索引是數(shù)據(jù)的物理組織形式,目的是提高查詢的性能

  約束

  基本約束

not null constraint, domain constraint

  檢查約束(Check Constraints)

eg: Salary > 0

  主鍵約束(Primary Key Constraints)

實體完整性(entity integrity),沒有兩條記錄是完全相同的,組成主鍵的字段不能為null

  唯一性約束(Unique Constraints)

  外鍵約束(Foreign Key Constraints)

也被稱為引用完整性約束,eg:

  關(guān)系數(shù)據(jù)庫操作

1.選擇(Selection)

2.映射(Projection)

3.聯(lián)合(Union)

4.交集(Intersection)

5.差集(Difference)

6.笛卡爾積(Cartesian Product)

7.連接(Join)

  上述7種是最基本的關(guān)系數(shù)據(jù)庫操作,對應(yīng)于集合論中的關(guān)系運算。

  有些書籍中還會加入改名(Rename),除(Divide)等關(guān)系操作。

image  主要內(nèi)容回顧

  1. 數(shù)據(jù)庫生命周期的四個階段:需求分析、邏輯設(shè)計、物理設(shè)計、實現(xiàn)維護。

  2. 關(guān)系數(shù)據(jù)庫的理論基礎(chǔ)是關(guān)系代數(shù)。

  數(shù)據(jù)庫物理設(shè)計參考資料

  第一個鏈接是我針對查詢優(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

  3. Part 2 - The Clustered Index

  4. Part 3 - The Non-clustered index

it知識庫數(shù)據(jù)庫設(shè)計 Step by Step (2),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩AV无码一区二区三区不卡毛片 | 精品欧美一区二区三区四区 | 国产精品99 | 日本大片免a费观看视频 | 欧美高清vivoesosexo18 | 欧美乱妇15p图 | 快穿女主有名器的H纯肉黄暴拉文 | 武侠古典久久亚洲精品 | 日本中文字幕巨大的乳专区 | 456亚洲人成在线播放网站 | 久久性综合亚洲精品电影网 | 美女尿口羞羞视频 | 亚洲国产剧情中文视频在线 | 国精产品一区二区三区 | 无码国产成人午夜在线观看不卡 | 国语大学生自产拍在线观看 | 麻豆高潮AV久久久久久久 | 蜜桃麻豆WWW久久囤产精品免费 | 亚洲欧美激情精品一区二区 | 美女胸被男子强捏视频 | 青青青视频在线 | 午夜插插插| 最新无码国产在线视频2020 | 亚洲熟伦熟女专区 | 国产精品九九久久 | 嗯啊好爽视频 | 24小时日本在线电影 | 免费在线观看国产 | 久久橹| 熟女人妻久久精品AV天堂 | 春暖花开 性 欧洲 | 欧美精品做人一级爱免费 | 被六个男人躁到一夜同性 | 最近日本MV字幕免费观看在线 | 仓井空torrent | 美女逼逼毛茸茸 | 国产精品夜夜春夜夜爽久久小 | 国产伊人久久 | 伊人色综合久久天天 | 久久国产乱子伦精品免费不卡 | 国产成人自产拍免费视频 |