偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

程序員應(yīng)知應(yīng)會之數(shù)據(jù)庫設(shè)計的那些事兒

數(shù)據(jù)庫 新聞
在做一個項目之前,完全了解項目用戶的業(yè)務(wù)流程,是對于開發(fā)團隊素質(zhì)的一個重要考驗。

對于很多應(yīng)用系統(tǒng)來說,數(shù)據(jù)庫結(jié)構(gòu)是應(yīng)用運行的基礎(chǔ),這就好像房子的地基一樣,地基不牢,地動山搖。當應(yīng)用程序建立之后,再改數(shù)據(jù)庫表結(jié)構(gòu),就會導(dǎo)致很多不必要的冗余工作量。

然而很多開發(fā)團隊卻非常不重視這個過程,數(shù)據(jù)庫及接口的設(shè)計極其隨意。甚至還有一些大神認為,數(shù)據(jù)庫和接口的改變是避免不了的事情,做項目就是做完之后試試看,不行再改??梢哉f,從方法論上就存在問題,就好像修路一樣,修好了挖,挖好了修,反反復(fù)復(fù),來來回回,開發(fā)者和用戶都苦不堪言。

說了這么多,下面我們來正式介紹一下數(shù)據(jù)庫設(shè)計的整個流程。

數(shù)據(jù)庫設(shè)計的基本步驟包括以下幾個方面:

一、需求分析階段

需求分析是整個數(shù)據(jù)庫設(shè)計的基礎(chǔ)和核心,需求分析的結(jié)果是否能準確地反映用戶的實際需求,將直接影響到后面各個階段的設(shè)計,并影響到設(shè)計結(jié)果是否合理、實用。這一階段要收集和分析用戶對系統(tǒng)的信息需求和處理需求,以及后續(xù)可以存在的擴展功能,從而得到設(shè)計系統(tǒng)所必需的信息,建立系統(tǒng)的需求說明文檔。

在很多項目中,存在的最大問題就是開發(fā)團隊對于項目,沒有從日常使用者的角度去考慮問題,對項目所涉及的業(yè)務(wù)流程不熟悉,完全根據(jù)用戶的描述來被動設(shè)計。而往往不懂技術(shù)的用戶描述是不完備的,最終導(dǎo)致完全的項目在用戶試用之后發(fā)現(xiàn)很多問題,導(dǎo)致工作量的大幅增加。

因此,在做一個項目之前,完全了解項目用戶的業(yè)務(wù)流程,是對于開發(fā)團隊素質(zhì)的一個重要考驗。

二、概念設(shè)計階段

概念設(shè)計是數(shù)據(jù)庫設(shè)計的關(guān)鍵所在,這一階段通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于具體DBMS的概念模型,并且用E-R圖表示出來。

概念模型也稱為信息模型,用于信息世界的建模,實現(xiàn)了由現(xiàn)實世界到信息世界的第一層抽象。

信息世界涉及的主要概念有:

1、實體(Entity):現(xiàn)實世界中存在的可以相互區(qū)分的事物或概念,如一個學(xué)生

2、實體集(Entity Set):同一類實體的集合,如全體學(xué)生

3、屬性(Attribute):實體所具有的特征,如學(xué)生姓名、性別

4、碼/鍵(Key):唯一標識實體的屬性集,例如學(xué)生的學(xué)號

5、聯(lián)系(Relationship):實體集之間的對應(yīng)關(guān)系,如一個教師教多個學(xué)生、多個學(xué)生選多門課

概念模型最常用的表示方法是P.P.S.Chen在1976年提出的實體-聯(lián)系(Entity-Relationship)模型,簡稱E-R模型或E-R圖

三、邏輯結(jié)構(gòu)設(shè)計階段

這一階段在概念模型的基礎(chǔ)之上,根據(jù)轉(zhuǎn)換規(guī)則導(dǎo)出一種DBMS支持的邏輯數(shù)據(jù)庫模型,比如說目前最常用的關(guān)系型數(shù)據(jù)庫,該模型應(yīng)滿足數(shù)據(jù)庫存取、一致性及運行等方面的用戶需求,并且在一定程度上,對些模型進行優(yōu)化。

例如,一個一對一的E-R模型,可以建立一個單表,比如說班級,對班主任,是一對一的關(guān)系,那么只需要一張表。而一個一對多的關(guān)系,則需要兩張表,比如說班級對學(xué)生,就需要把班級設(shè)置為一張表,而將班級號作為學(xué)生表里的一個外鍵。多對多的關(guān)系,就需要設(shè)計三張表,比如說學(xué)生和課程,就需要學(xué)生、課程、學(xué)生選的課程三張表來反映三者之間的關(guān)系。

四、物理結(jié)構(gòu)設(shè)計階段

為邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu),利用已經(jīng)確定的邏輯結(jié)構(gòu)的結(jié)果以及DBMS提供的方法、技術(shù),以設(shè)計出高效可實現(xiàn)的數(shù)據(jù)庫結(jié)構(gòu)。但一般情況下,在關(guān)系型數(shù)據(jù)庫中,數(shù)據(jù)的存取對用戶是透明的,所以對物理設(shè)計考慮會相對少一點。尤其是現(xiàn)在有了諸如Spring Data Jpa之類的持久層框架之后,開發(fā)者的精力可以主要放在實體之間的關(guān)系上面。

五、數(shù)據(jù)庫實施階段

根據(jù)邏輯設(shè)計和物理設(shè)計的結(jié)果建立數(shù)據(jù)庫,編寫與調(diào)試應(yīng)用程序,將數(shù)據(jù)錄入到數(shù)據(jù)庫中,同時進行數(shù)據(jù)庫系統(tǒng)的試運行。

以上就是數(shù)據(jù)庫設(shè)計的幾個重要步驟,在實際操作中,最重要的是正確劃分實體和實體間的對應(yīng)關(guān)系,而這也是優(yōu)秀開發(fā)者與普通開發(fā)者最大的區(qū)別之一。往往優(yōu)秀的開發(fā)者可以看透一個項目之間存在的實體,和實體間的對應(yīng)關(guān)系,從而方便快捷地確定項目的數(shù)據(jù)庫基礎(chǔ)。而普通或者低劣的開發(fā)人員,則很有可能將實體關(guān)系搞得一團糟,最終在實際應(yīng)用中才發(fā)現(xiàn)表設(shè)計存在較大的缺陷,最終不得不耗費大量的工作量來解決這個問題。

就好像地心說時代,天文學(xué)家用本輪均輪,等大小齒輪咬合模擬的方式來推演太陽、月亮和各行星的軌道。一開始只有地球、太陽、月亮的時候還很好擬合,但是隨著多顆行星的發(fā)現(xiàn),到了哥白尼時代,需要模擬的齒輪已經(jīng)達到了上百個,導(dǎo)致人們苦不堪言。但是,改成以太陽為中心的話,那么一切就清爽直觀了。

數(shù)據(jù)庫設(shè)計也是如此,如果實體之間的關(guān)系沒有理順,那么最終將嚴重影響項目的開發(fā)質(zhì)量。讀者們,你們被實體關(guān)系設(shè)計得很糟糕的數(shù)據(jù)庫結(jié)構(gòu)坑過嗎?如果被坑過,歡迎說出你的故事哦。

責任編輯:張燕妮 來源: Android開發(fā)中文站
相關(guān)推薦

2023-05-06 07:24:22

程序員視頻算法

2022-11-04 07:12:24

JavaScript基準測試

2022-11-07 08:51:24

數(shù)據(jù)庫開發(fā)笛卡爾積

2022-12-02 07:16:29

MySQL函數(shù)日期

2013-05-24 09:14:39

國企程序員程序員

2011-05-31 09:22:39

程序員

2011-05-26 10:04:30

程序員

2022-04-18 11:05:36

開源github代碼庫

2011-05-24 13:47:25

程序員

2011-06-02 09:02:36

程序員

2011-06-02 09:56:21

程序員團隊精神

2010-07-27 16:21:25

程序員

2011-05-31 09:37:53

程序員

2021-05-22 10:01:45

PythonPython列表Python程序開發(fā)

2011-05-31 10:50:36

程序員

2011-03-22 10:49:53

2022-07-20 00:03:10

Python列表字典推導(dǎo)

2023-05-10 08:41:40

二叉樹遍歷算法

2013-04-22 09:15:20

2019-01-30 14:14:16

LinuxUNIX操作系統(tǒng)
點贊
收藏

51CTO技術(shù)棧公眾號