成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們該如何設(shè)計數(shù)據(jù)庫(三)

數(shù)據(jù)庫 數(shù)據(jù)庫運(yùn)維
簡單的說說吧:假設(shè)為Man用戶實現(xiàn)的是一個征婚系統(tǒng),而Woman用戶實現(xiàn)的是一個選美系統(tǒng)。這么說應(yīng)該能理解Man和Woman的不能并同一張表的原因了吧。

在《我們該如何設(shè)計數(shù)據(jù)庫(二)》中,園友Jacklondon Chen提出了一些問題,大致如下:

“man/woman應(yīng)該設(shè)計在同一張表中。 用戶表大多都設(shè)計成一個表。連分 administrator 和 user 都不應(yīng)該。”

我想還是因為我舉例太隨意,因為博文中Man和Woman只有4個差異屬性:HasCar\HasHouse\HasMoney,以及IsBeauty。

其實對于這個問題我無力吐槽什么,簡單的說說吧:假設(shè)為Man用戶實現(xiàn)的是一個征婚系統(tǒng),而Woman用戶實現(xiàn)的是一個選美系統(tǒng)。這么說應(yīng)該能理解Man和Woman的不能并同一張表的原因了吧

廢話說完,正文開始

現(xiàn)在有一個系統(tǒng),我們暫時假設(shè)為學(xué)校選課系統(tǒng)。有兩類用戶Teacher和Student,還有一張Curriculum表是課程總表,來儲存學(xué)校一共有哪些課程,每門課的學(xué)分什么的。然后一個老師,一門課程和多名學(xué)生,就可以開始上課了

表結(jié)構(gòu)如下圖:

邏輯很簡單,一目了然。

但是問題在于,我們的系統(tǒng)要按學(xué)校來賣。每個學(xué)校的選課邏輯都是一樣的,而表中的數(shù)據(jù)有共性,但是也有差異性。比如說基本的Teacher表結(jié)構(gòu)是這樣的:

現(xiàn)在把系統(tǒng)賣給A學(xué)校。A學(xué)校除了的Teacher表除了用戶名和密碼之外,還要儲存老師的FirstName和LastName,那么表結(jié)構(gòu)變化如下:

現(xiàn)在B學(xué)校也買了我們的系統(tǒng)。他們的Teacher表不要FirstName和LastName,但是要儲存教師的工號“Number”,表結(jié)構(gòu)如下:

好,現(xiàn)在我們的問題出來了:怎么去解決這種差異性。

最簡單的思路莫過于表中加冗余字段。比如說將表設(shè)計成這樣:

如果我們的系統(tǒng)只賣兩三個學(xué)校,這樣是可行的。但是打個比方,我們的系統(tǒng)賣了30所學(xué)校,每個學(xué)校有一個自己的差異字段,那么這個表就要有30個冗余字段來應(yīng)對這種差異性。且不說每次加冗余都要改動系統(tǒng),且不說冗余多了浪費空間降低傳輸效率,光說怎么維護(hù)這些冗余,我就已經(jīng)覺得是災(zāi)難了:Teacher表有差異字段,其他表也會有。假設(shè)一個中型系統(tǒng),60張表,其中30張實體表30張關(guān)系表不算過分吧。那么總共要維護(hù) 30(表數(shù)量)*30(冗余數(shù)量)= 900 個差異字段。

 

第二個想法是建立一張冗余表來儲存差異。這種其實和表中加冗余異曲同工,就不多加分析了,留給大家自己思考

 

第三個想法是建立不同的數(shù)據(jù)庫。其實本來每個學(xué)校的數(shù)據(jù)庫就是不同的,唔……怎么說呢,A學(xué)校自己的數(shù)據(jù)庫中的表,存的是A學(xué)校自己的特有字段,B學(xué)校存B學(xué)校的特有字段。兩者之間并無關(guān)系,然后Model用l繼承的思路來設(shè)計(詳見上一篇文章),通過配置文件來選擇恰當(dāng)?shù)臄?shù)據(jù)庫和其對應(yīng)的Model。

是的,這種方法挺好的,唯一的不足可能就是比較依賴于ORM——使用ORM來生成數(shù)據(jù)庫,以及T-SQL語句

 

如果您是一個關(guān)系型數(shù)據(jù)庫的重度愛好者,那么這篇文章到這就結(jié)束了,下面的東西不會對您胃口的

眾所周知,因為大量使用了反射,ORM的效率不是那么的高,而且本身關(guān)系型數(shù)據(jù)庫的可拓展性也不是那么的好。

作為一個激進(jìn)的開發(fā)者,我一直希望在項目中嘗試NoSql。

下面的一篇文章我會講解如何用MongoDB來解決前文描述的差異性問題,敬請期待。

 

順便附上一個小測試:在.net 4環(huán)境下分別插入5W條數(shù)據(jù),分別是EF5、Nhibernate、ADO.Net向Sql server 2008插入,以及MongoDB官方驅(qū)動向MongoDB插入。

EF耗時:00:00:25.4972758

ADO.NET耗時:00:00:23.8307860

NHibernate耗時:00:00:26.0199898

MongoDB耗時:00:00:01.9474134

在這里,EF每次插入1000條數(shù)據(jù)(批量插入),其他方式都是單條插入;NHibernate關(guān)閉了一級緩存;

MongoDB使用的是“離弦之箭”的插入方式

MongoDB使用的是安全的插入模式(不會丟失數(shù)據(jù))。

原文鏈接:http://www.cnblogs.com/CrazyJinn/archive/2012/09/25/2701284.html

責(zé)任編輯:林師授 來源: 博客園
相關(guān)推薦

2013-03-20 13:16:15

2013-03-20 11:25:47

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計

2013-03-20 13:25:53

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計

2013-03-20 13:35:12

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計

2012-04-28 10:07:43

數(shù)據(jù)庫數(shù)據(jù)庫設(shè)計

2011-05-19 11:01:14

ERWin數(shù)據(jù)庫設(shè)計

2023-10-16 09:00:00

數(shù)據(jù)庫分布式系統(tǒng)

2017-03-03 15:23:46

數(shù)據(jù)庫設(shè)計范式

2017-07-06 15:52:22

大數(shù)據(jù)數(shù)據(jù)分層數(shù)據(jù)倉庫

2022-06-30 18:17:00

數(shù)據(jù)集云數(shù)據(jù)建模計數(shù)據(jù)倉庫

2020-12-31 05:29:25

數(shù)據(jù)庫Powerdesign建模

2021-10-03 15:00:44

數(shù)據(jù)庫mysql單機(jī)

2017-11-27 06:01:37

數(shù)據(jù)庫中間件中間層

2011-04-12 10:59:46

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

2017-11-30 08:56:14

數(shù)據(jù)庫中間件架構(gòu)師

2015-06-23 13:56:30

數(shù)據(jù)庫設(shè)計面向?qū)ο?/a>

2017-11-23 15:06:14

前端數(shù)據(jù)庫開發(fā)

2022-12-27 08:38:45

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

2024-09-12 09:30:55

2018-07-27 06:08:12

點贊
收藏

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

主站蜘蛛池模板: 成人免费看片又大又黄 | 欧美国产日韩在线观看成人 | 久久久精品视频免费 | 成人在线视频免费观看 | 一区二区精品视频 | 毛片网站在线观看视频 | 欧美一区二区三区高清视频 | 欧美日韩成人在线 | 日本亚洲欧美 | 国产一区二区三区网站 | 色噜噜色综合 | 久久久久99| 亚洲在线久久 | 亚洲国产一区二区视频 | 日日草夜夜草 | 日韩欧美不卡 | 欧美日韩精品一区二区三区视频 | 亚洲精品中文字幕在线观看 | 精品久久久久久久久久 | 欧美videosex性极品hd | 91视视频在线观看入口直接观看 | www.一区二区 | 成人午夜影院 | 国产激情视频在线免费观看 | 日韩图区| 黄色大片在线视频 | 欧美一级在线 | 国产精品69久久久久水密桃 | 亚洲午夜精品 | 国产在线视频一区二区 | 精产国产伦理一二三区 | 国产美女福利在线观看 | 国产欧美一区二区三区在线看 | 午夜精品视频 | 免费国产视频 | 久久精品中文字幕 | a a毛片| 国产精品久久久久久久白浊 | 亚洲三级在线 | 国产精品视频网站 | 日日夜夜精品视频 |