自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范感悟

數(shù)據(jù)庫(kù)
在設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)時(shí),我們從課上的學(xué)習(xí)得知,需要參照不同的范式及原則,設(shè)計(jì)表結(jié)構(gòu)與表關(guān)系。

前言

 在設(shè)計(jì)關(guān)系型數(shù)據(jù)庫(kù)時(shí),我們從課上的學(xué)習(xí)得知,需要參照不同的范式及原則,設(shè)計(jì)表結(jié)構(gòu)與表關(guān)系。在課上,我們關(guān)注的角度更多是,設(shè)計(jì)要符合范式,保證數(shù)據(jù)不冗余。但在實(shí)際的開發(fā)設(shè)計(jì)中,我們往往要從更多角度思考數(shù)據(jù)庫(kù)的設(shè)計(jì)原則,根據(jù)不同的需求場(chǎng)景,進(jìn)行不同角度的側(cè)重。比如開發(fā)是否便捷,表結(jié)構(gòu)是否易維護(hù),查詢效率是否達(dá)到要求等等。

[[378474]]

設(shè)計(jì)原則

一般的企業(yè)級(jí)應(yīng)用數(shù)據(jù)庫(kù)中,對(duì)于數(shù)據(jù)的冗余是有一定容忍性的,但對(duì)于數(shù)據(jù)庫(kù)增刪改查的效率,往往會(huì)有很高的要求。這時(shí)候,我們之前遵循的一些原則,就要做出不同程度的改變。比如,之前依據(jù)少冗余原則,參考的設(shè)計(jì)三大范式,可能在數(shù)據(jù)庫(kù)增刪改查效率的面前,就要做一些妥協(xié)了。

在設(shè)計(jì)能容忍冗余、重視效率的數(shù)據(jù)庫(kù)時(shí),個(gè)人認(rèn)為,主要需要考慮以下幾方面:

1、每個(gè)表增刪改的范圍盡量都在本表進(jìn)行

這條原則也是與三大范式有些相悖的,但這樣做的好處非常明顯。

第一,還是從開銷角度出發(fā),這樣做的話,增刪改的開銷通常比多表要低。

第二,這樣便捷開發(fā),在數(shù)據(jù)存儲(chǔ)過(guò)程中,如果涉及多表操作,表越多,處理業(yè)務(wù)邏輯的代碼就越多,在開發(fā)時(shí)難度也就越大。

第三,可維護(hù)性高,這一點(diǎn)和第二點(diǎn)有點(diǎn)重合,但就是因?yàn)閱伪碓O(shè)計(jì)的業(yè)務(wù)代碼會(huì)相對(duì)簡(jiǎn)單,所以日后的維護(hù)也會(huì)相對(duì)容易,反之,多表的業(yè)務(wù)代碼龐雜,日后的維護(hù)也會(huì)非常的困難。

2、通過(guò)主鍵體現(xiàn)對(duì)應(yīng)關(guān)系,且應(yīng)體現(xiàn)流程順序

企業(yè)級(jí)應(yīng)用最大的難題就是梳理業(yè)務(wù),理清業(yè)務(wù)模塊之間的對(duì)應(yīng)關(guān)系。在數(shù)據(jù)庫(kù)中,表中包含的主鍵除了要體現(xiàn)對(duì)應(yīng)關(guān)系外,還應(yīng)該體現(xiàn)生成順序或流程順序的邏輯。

3、每個(gè)表盡量代表一個(gè)業(yè)務(wù)模塊,盡量記錄模塊中的所有字段

由第一個(gè)原則推理出這個(gè)原則,因?yàn)樵诒颈碓鰟h改查的開銷小,所以,如果一個(gè)表足夠的內(nèi)聚,那么這個(gè)表就要盡量記錄模塊中的所有字段。

tips:

如果之后業(yè)務(wù)模塊內(nèi)字段過(guò)多,可以進(jìn)行分表處理,但如果一開始就是分開設(shè)計(jì)的,那么處理會(huì)很麻煩。

4、中間表不可以隨意使用

在充分遵循三大范式的前提下,我們的設(shè)計(jì)就會(huì)有很多的中間表(關(guān)系表)。但如果在兩個(gè)表中,其中有一個(gè)表增刪改頻繁,那么從效率角度而言,這樣的設(shè)計(jì)就是不合格的。這樣的設(shè)計(jì)確實(shí)會(huì)減少很多數(shù)據(jù)冗余,但是也會(huì)大大增加每條數(shù)據(jù)增刪改的開銷。所以從一般的企業(yè)級(jí)應(yīng)用場(chǎng)景來(lái)看,中間表不可以隨意使用。

通過(guò)了解中間表的使用缺陷,我們也就知道了什么時(shí)候可以使用中間表。當(dāng)左表和右表都沒(méi)有非常頻繁的改動(dòng)需求,但有非常頻繁的聯(lián)表查詢需求的時(shí),我們就可以運(yùn)用中間表,來(lái)提升查詢效率,并減少數(shù)據(jù)冗余。

[[378475]]

總結(jié)

經(jīng)過(guò)了幾次設(shè)計(jì)我發(fā)現(xiàn)一個(gè)大道理哈哈,其實(shí)技術(shù)最后還是要為具體的業(yè)務(wù)場(chǎng)景服務(wù)。很多計(jì)算機(jī)問(wèn)題都是需要時(shí)間和空間的開銷相互妥協(xié),在具體的業(yè)務(wù)場(chǎng)景中,往往也是如此。三大范式只是一般設(shè)計(jì)數(shù)據(jù)庫(kù)的基本理念,通過(guò)三大范式,我們可以建立一個(gè)小冗余、表結(jié)構(gòu)合理的數(shù)據(jù)庫(kù),但就像之前說(shuō)的,表結(jié)構(gòu)合理不代表符合業(yè)務(wù)需求,如有特殊業(yè)務(wù)情況,就要按特殊情況對(duì)待。

一般而言,需求 > 性能 > 表結(jié)構(gòu)(冗余)。

 

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2010-04-12 15:53:09

Oracle

2014-08-29 10:24:05

SQL Server

2010-05-11 18:57:53

MYSQL數(shù)據(jù)庫(kù)命名

2011-08-12 14:18:38

SQL Server數(shù)設(shè)計(jì)規(guī)范

2010-04-19 12:35:01

Oracle數(shù)據(jù)庫(kù)設(shè)計(jì)

2009-01-13 10:50:19

數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范化

2022-12-27 08:38:45

關(guān)系型數(shù)據(jù)庫(kù)設(shè)計(jì)

2018-07-18 09:16:39

關(guān)系型非關(guān)系型數(shù)據(jù)庫(kù)

2015-08-04 09:20:42

.NET數(shù)據(jù)庫(kù)設(shè)計(jì)規(guī)范

2015-07-28 10:33:17

.NETERP系統(tǒng)

2024-04-25 09:14:57

數(shù)據(jù)庫(kù)Mysql阿里巴巴

2021-09-06 10:24:12

鴻蒙HarmonyOS應(yīng)用

2010-04-27 16:31:41

Oracle數(shù)據(jù)庫(kù)

2019-10-12 00:39:23

MySQL數(shù)據(jù)庫(kù)Oracle

2010-12-10 10:17:21

關(guān)系型數(shù)據(jù)庫(kù)

2022-06-13 08:30:01

數(shù)據(jù)庫(kù)管理系統(tǒng)

2017-03-17 14:44:04

關(guān)系型數(shù)據(jù)庫(kù)原理

2013-03-28 10:22:33

數(shù)據(jù)庫(kù)關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)設(shè)計(jì)

2022-05-01 21:43:38

SQL設(shè)計(jì)模式

2024-06-06 16:50:15

點(diǎn)贊
收藏

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