數(shù)據(jù)庫是整個(gè)軟件應(yīng)用的核心,也是軟件設(shè)計(jì)的起點(diǎn),它起著決定性的質(zhì)變作用,因此我們必須對(duì)數(shù)據(jù)庫設(shè)計(jì)高度重視起來,培養(yǎng)設(shè)計(jì)良好數(shù)據(jù)庫的習(xí)慣,是一個(gè)優(yōu)秀的軟件設(shè)計(jì) 師所必須具備的基本素質(zhì)條件!
創(chuàng)建數(shù)據(jù)庫要注意哪些設(shè)計(jì)原則,才能把數(shù)據(jù)庫做得符合軟件的使用,下面培訓(xùn)啦IT教育小編為大家簡(jiǎn)單說一下,數(shù)據(jù)庫設(shè)計(jì)的幾大原則:
1、數(shù)據(jù)庫設(shè)計(jì)最起碼要占用整個(gè)項(xiàng)目開發(fā)的40%以上的時(shí)間
數(shù)據(jù)庫是需求的直觀反應(yīng)和表現(xiàn),因此設(shè)計(jì)時(shí)必須要切實(shí)符合用戶的需求,要多次與用戶溝通交流來細(xì)化需求,將需求中的要求和每一次的變化都要一一體現(xiàn)在數(shù)據(jù)庫的設(shè)計(jì)當(dāng)中。如果需求不明確,就要分析不確定的因素,設(shè)計(jì)表時(shí)就要事先預(yù)留出可變通的字段,正所謂“有備無患”。
2、數(shù)據(jù)庫設(shè)計(jì)不僅僅停留于頁面demo的表面
頁面內(nèi)容所需要的字段,在數(shù)據(jù)庫設(shè)計(jì)中只是一部分,還有系統(tǒng)運(yùn)轉(zhuǎn)、模塊交互、中轉(zhuǎn)數(shù)據(jù)、表之間的聯(lián)系等等所需要的字段,因此數(shù)據(jù)庫設(shè)計(jì)絕對(duì)不是簡(jiǎn)單的基本數(shù)據(jù)存儲(chǔ),還 有邏輯數(shù)據(jù)存儲(chǔ)。
3、數(shù)據(jù)庫設(shè)計(jì)完成后,項(xiàng)目80%的設(shè)計(jì)開發(fā)在你腦海中就已經(jīng)完成了
每個(gè)字段的設(shè)計(jì)都是有他必要的意義的,你在設(shè)計(jì)每一個(gè)字段的同時(shí),就應(yīng)該已經(jīng)想清楚程序中如何去運(yùn)用這些字段,多張表的聯(lián)系在程序中是如何體現(xiàn)的。換句話說,你完成數(shù) 據(jù)庫設(shè)計(jì)后,程序中所有的實(shí)現(xiàn)思路和實(shí)現(xiàn)方式在你的腦海中就已經(jīng)考慮過了。如果達(dá)不到這種程度,那當(dāng)進(jìn)入編碼階段后,才發(fā)現(xiàn)要運(yùn)用的技術(shù)或?qū)崿F(xiàn)的方式數(shù)據(jù)庫無法支持,這時(shí)再改動(dòng)數(shù)據(jù)庫就會(huì)很麻煩,會(huì)造成一系列不可預(yù)測(cè)的問題。
4、數(shù)據(jù)庫設(shè)計(jì)時(shí)就要考慮到效率和優(yōu)化問題
一開始就要分析哪些表會(huì)存儲(chǔ)較多的數(shù)據(jù)量,對(duì)于數(shù)據(jù)量較大的表的設(shè)計(jì)往往是粗粒度的,也會(huì)冗余一些必要的字段,已達(dá)到盡量用最少的表、最弱的表關(guān)系去存儲(chǔ)海量的數(shù)據(jù)。并且在設(shè)計(jì)表時(shí),一般都會(huì)對(duì)主鍵建立聚集索引,含有大數(shù)據(jù)量的表更是要建立索引以提供查詢性能。對(duì)于含有計(jì)算、數(shù)據(jù)交互、統(tǒng)計(jì)這類需求時(shí),還要考慮是否有必要采用存儲(chǔ) 過程。
5、添加必要的(冗余)字段
像“創(chuàng)建時(shí)間”、“修改時(shí)間”、“備注”、“操作用戶IP”和一些用于其他需求(如統(tǒng)計(jì))的字段等,在每張表中必須都要有,不是說只有系統(tǒng)中用到的數(shù)據(jù)才會(huì)存到數(shù)據(jù)庫中,一些冗余字段是為了便于日后維護(hù)、分析、拓展而添加的,這點(diǎn)是非常重要的,比如黑客攻擊,篡改了數(shù)據(jù),我們便就可以根據(jù)修改時(shí)間和操作用戶IP來查找定位。
6、設(shè)計(jì)合理的表關(guān)聯(lián)
若多張表之間的關(guān)系復(fù)雜,建議采用第三張映射表來關(guān)聯(lián)維護(hù)兩張表之間的關(guān)系,以降低表之間的直接耦合度。若多張表涉及到大數(shù)據(jù)量的問題,表結(jié)構(gòu)盡量簡(jiǎn)單,關(guān)聯(lián)也要盡可 能避免。
7、設(shè)計(jì)表時(shí)不加主外鍵等約束性關(guān)聯(lián),系統(tǒng)編碼階段完成后再添加約束性關(guān)聯(lián)
這樣做的目的是有利于團(tuán)隊(duì)并行開發(fā),減少編碼時(shí)所遇到的問題,表之間的關(guān)系靠程序來控制。編碼完成后再加關(guān)聯(lián)并進(jìn)行測(cè)試。不過也有一些公司的做法是干脆就不加表關(guān)聯(lián)。
8、選擇合適的主鍵生成策略
培訓(xùn)啦IT教育集團(tuán)-國內(nèi)最資深、最實(shí)戰(zhàn)的IT教育培訓(xùn)機(jī)構(gòu),擁有cisco培訓(xùn),華為認(rèn)證,紅帽linux認(rèn)證,Oracle數(shù)據(jù)庫培訓(xùn),Java培訓(xùn)等主流IT課程。
985大學(xué) 211大學(xué) 全國院校對(duì)比 專升本