数据库设计_数据库设计(一)分析及逻辑设计
?作為一個后端開發(fā)者,數(shù)據(jù)庫設(shè)計是我們避不開的課題,不管是面試的時候,還是在真實工作的情境下,我們的工作不僅僅是將代碼開發(fā)出來,根據(jù)開發(fā)的項目,設(shè)計出支撐項目的數(shù)據(jù)庫,也是一個合格的開發(fā)者所應(yīng)該具備的技能之一,這里我將數(shù)據(jù)庫設(shè)計分成幾個重要的部分,以下是我做數(shù)據(jù)庫設(shè)計時的步驟。
數(shù)據(jù)庫設(shè)計步驟需求分析
需求分析相信大家都知道,我們在做開發(fā)之前先做需求分析,能讓我們的開發(fā)更加順暢,它是我們開發(fā)的指南針,好的需求分析能讓我們明確開發(fā)的需求,避開不需要做的功能需求,減少不必要的時間,而在數(shù)據(jù)庫設(shè)計當中,需求分析也同樣重要,當然它不需要結(jié)成像是需求文檔一樣的東西,首先要搞清楚為什么要做需求分析。
而經(jīng)過需求分析,我們也有需要搞清楚的事情,這也是需求分析的目的。首先是項目會涉及到的實體,像是在一個電商項目中,商品就是其中一個實體,一般情況下,我們可以將一個實體設(shè)計成一個表,當然這個不是一定的,需要根據(jù)實際情況設(shè)計。其次,也是我認為十分重要的一個步驟,即確定實體之間的關(guān)系,也就是我們常說的一對一,一對多以及多對多。只要確定了這個關(guān)系,我認為就能設(shè)計出一個業(yè)務(wù)邏輯上不會出錯的數(shù)據(jù)庫。
通常情況下,一對一的表將其中一個表的主鍵作為另一個表的外鍵,一對多的情況將“一”對應(yīng)的那個表的主鍵作為“多”的那個表的主鍵,多對多的情況就設(shè)計一個關(guān)聯(lián)表,將兩表的主鍵存在關(guān)聯(lián)表中做關(guān)聯(lián)關(guān)系,這個方法在大部分項目中都能夠直接使用,很大程度上減少我設(shè)計數(shù)據(jù)庫的時間,如果時間緊急,可以采取這種方式設(shè)計后再做驗證,時間充足的化還是希望大家按照一定的規(guī)范設(shè)計數(shù)據(jù)庫。
最后,確定實體的屬性,像是商品這個實體中,有商品名,價格等屬性。
邏輯設(shè)計
以上就是需求分析應(yīng)該做的事情,分析之后,就是做設(shè)計了,這里涉及到的內(nèi)容就比較理論化,但是前人為我們總結(jié)了設(shè)計的規(guī)范,讓我們可以比較簡單的做邏輯設(shè)計。其中使用到的工具就是 ER 圖。
er圖ER 圖由矩形、菱形、橢圓形和線段組成,使我們可以將需求分析出來的實體、屬性、實體間的關(guān)系由圖體現(xiàn)出來,讓人更加方便看懂理解。
將 ER 圖畫出來后,就是使用設(shè)計范式去做更詳細的設(shè)計了。范式是關(guān)系型數(shù)據(jù)庫的理論基礎(chǔ),是我們在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)過程中所要遵循的規(guī)則和指導(dǎo)方法,經(jīng)過設(shè)計范式的指導(dǎo)設(shè)計,我們就可以得到一個十分完善,邏輯清晰的數(shù)據(jù)庫設(shè)計了。其中,我們主要遵循第一范式、第二范式、第三范式和BC范式,各種范式呈遞次規(guī)范,越高的范式數(shù)據(jù)庫冗余越小,即滿足第三范式則一定滿足第一第二范式,滿足第二范式一定滿足第一范式。
第一范式:確定表中的每一個字段都不能再分。下面這張圖就是違反了第一范式,因為其中的用戶信息字段還可以再分。
第一范式第二范式:一個表是復(fù)合主鍵時(多個鍵組成唯一識別),其中一個候選關(guān)鍵字存在決定非關(guān)鍵字的情況時,就不符合第二范式了,如下圖。
第二范式所以,如果是非復(fù)合主鍵則一定符合第二范式。
第三范式:不能存在傳遞函數(shù)關(guān)系。
第三范式如上圖,商品名稱和分類在同一表內(nèi),但分類又可以決定分類描述,這就是傳遞函數(shù)關(guān)系,這時候,將分類和分類關(guān)系拆出來放到另一個表就可以達成第三范式了。
第三范式完善以上就是數(shù)據(jù)庫需求分析和邏輯設(shè)計的內(nèi)容,這里比較偏向理論,好好的理解這些方法和設(shè)計范式就能設(shè)計出項目對應(yīng)的數(shù)據(jù)庫,能讓我們?nèi)缟茟?yīng)對工作中需要做的數(shù)據(jù)庫設(shè)計相關(guān)的工作了,希望這篇文章能給大家?guī)韼椭?#xff0c;下一篇文章會講到物理設(shè)計和數(shù)據(jù)庫維護相關(guān)的內(nèi)容,因為一個數(shù)據(jù)庫設(shè)計僅僅是滿足于業(yè)務(wù)邏輯是不夠的,隨著業(yè)務(wù)的壯大,合理的物理設(shè)計和維護十分必要。這里給關(guān)注公眾號的讀者一個小小的資源,請在后臺回復(fù)【數(shù)據(jù)庫】獲取。
日常發(fā)布初出茅廬程序員一些胡言亂語以及編程資源,漫漫編程路,希望我們一起進步!
總結(jié)
以上是生活随笔為你收集整理的数据库设计_数据库设计(一)分析及逻辑设计的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php ajax jquery 表单重复
- 下一篇: MYSQL 表 部分数据导出、导入