現(xiàn)在終于又要和機(jī)房見面了,不知不覺機(jī)房重構(gòu)又要開始了,雖然說它比我想象中晚很久。剛開始機(jī)房之前,真的是一點(diǎn)思路都沒有,不知道自己要干嘛,通過和小伙伴的交流以及站在巨人的肩膀上,我的機(jī)房也算是拉開了序幕。
不管先做什么,首先數(shù)據(jù)庫(kù)的建立是非常有必要的,剛開始建立的時(shí)候要盡量的考慮全面一些,要不然在開發(fā)的過程中,就麻煩了。下面來聊一聊我的建立過程吧。
●范式學(xué)習(xí)
第一范式:數(shù)據(jù)表中的每個(gè)字段不能有重復(fù)的屬性,符合原子性。
第二范式:在1NF基礎(chǔ)上,要求實(shí)體的每個(gè)非主屬性完全函數(shù)依賴于候選鍵。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性。
第三范式:在1NF基礎(chǔ)上,任何非主屬性不傳遞依賴于其它非主屬性
通過實(shí)例來學(xué)習(xí)一下:
●ER圖
ER模型的基本元素:實(shí)體、聯(lián)系、屬性
實(shí)體:是一個(gè)數(shù)據(jù)對(duì)象,指應(yīng)用中可以區(qū)別的客觀存在的事物。實(shí)體用方框表示。
聯(lián)系:表示一個(gè)或多個(gè)實(shí)體之間的關(guān)聯(lián)關(guān)系。聯(lián)系用菱形框表示。
屬性:實(shí)體的某一特性稱為屬性。
●機(jī)房收費(fèi)系統(tǒng)的ER圖(注:沒有畫實(shí)體的屬性)

●ER圖分析:
實(shí)體User和Card之間有四種關(guān)系:注冊(cè)、充值、退卡、上下機(jī)
實(shí)體Card和Student存在隸屬的關(guān)系:每一個(gè)學(xué)生至多可以有一個(gè)卡。
實(shí)體User和BasicData之間是唯一確定的關(guān)系1:1,
實(shí)體User和Check是1:n的關(guān)系,用戶可以進(jìn)行多次結(jié)賬的操作
實(shí)體User和WorkLog是1:n的關(guān)系,每一個(gè)用戶可以有多個(gè)工作記錄。
●新舊數(shù)據(jù)庫(kù)設(shè)計(jì)的對(duì)比:
1、增加了卡表Card:原來的表是把卡表和學(xué)生表混合在一起使用的,學(xué)生表中有一部分字段是關(guān)于卡的,但是我們?cè)趯?shí)際操作的時(shí)候,這兩部分內(nèi)容基本上是相互分開的,所以現(xiàn)在設(shè)計(jì)成兩個(gè)表,學(xué)生表和卡表。
2、合并日結(jié)賬單和周結(jié)賬單,這兩個(gè)表里面的數(shù)據(jù)完全一樣,只是查詢的時(shí)候設(shè)置的時(shí)間不同。
3、合并正在工作表OnWork和工作記錄表WorkLog,內(nèi)容基本相同,只需稍微改動(dòng)即可。
4、合并正在上機(jī)表Online和上機(jī)記錄表Line,內(nèi)容基本相同,只需稍微改動(dòng)即可。
此次機(jī)房,我設(shè)計(jì)的數(shù)據(jù)庫(kù)一共有9張表,從ER圖中可以看到6個(gè)實(shí)體,每一個(gè)實(shí)體一張表,剩下的3張表自于實(shí)體和實(shí)體之間的m:n關(guān)系,用戶和卡之間的充值和退卡可以生成一張充值表和退卡表,學(xué)生和卡之間的上下機(jī)可以生成一張上下機(jī)表。所以一共有9張表。
因?yàn)橛械谋碇g有關(guān)聯(lián),所以我們最好給一些表設(shè)立主鍵,并且如果實(shí)體之間是1:n的關(guān)系,那么就是一對(duì)多的關(guān)系,這時(shí)候就需要在n的那一個(gè)實(shí)體中建立外鍵,1的那一個(gè)實(shí)體中的主鍵是n的這一個(gè)實(shí)體的外鍵。
不怕不知道,就怕不知道,學(xué)習(xí)是一個(gè)過程,不要著急,何況著急也是沒有用的,所以還是踏踏實(shí)實(shí)的來吧。
具體的數(shù)據(jù)庫(kù)的建立以及外鍵的設(shè)計(jì)請(qǐng)看小編的下一篇博客。
小編菜鳥一只,初學(xué)機(jī)房重構(gòu),如果對(duì)于知識(shí)的理解有什么偏差,還望您不吝賜教。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注