張建莉 高欣
摘要:關(guān)系數(shù)據(jù)模型是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來(lái)的,是數(shù)據(jù)庫(kù)領(lǐng)域中常用的邏輯模型,根據(jù)用戶要求,開(kāi)發(fā)滿足特定管理需求的數(shù)據(jù)庫(kù)的過(guò)程稱為數(shù)據(jù)庫(kù)設(shè)計(jì)。如何在開(kāi)發(fā)實(shí)際業(yè)務(wù)信息系統(tǒng)中收集和組織業(yè)務(wù)中所涉及的數(shù)據(jù),以及按一定的組織結(jié)構(gòu)將這些數(shù)據(jù)裝入數(shù)據(jù)庫(kù)中,本文以小型“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)的設(shè)計(jì)為例,根據(jù)具體任務(wù)的需求和關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)提供的功能進(jìn)行了數(shù)據(jù)庫(kù)設(shè)計(jì)。
關(guān)鍵詞:關(guān)系數(shù)據(jù)模型;數(shù)據(jù)庫(kù)設(shè)計(jì);門診管理系統(tǒng);關(guān)系
中圖分類號(hào):TP315? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)16-0001-02
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
1 引言
數(shù)據(jù)邏輯模型是數(shù)據(jù)庫(kù)系統(tǒng)設(shè)計(jì)的核心,它既要規(guī)范數(shù)據(jù)庫(kù)中數(shù)據(jù)的組織形式,同時(shí)要表示數(shù)據(jù)及數(shù)據(jù)之間的聯(lián)系,邏輯模型構(gòu)建得好壞直接影響數(shù)據(jù)庫(kù)的性能。關(guān)系模型(Relational Model)是數(shù)據(jù)庫(kù)領(lǐng)域中常用的邏輯模型,它是以集合論中的關(guān)系概念為基礎(chǔ)發(fā)展起來(lái)的,有嚴(yán)格的數(shù)學(xué)基礎(chǔ),抽象級(jí)別比較高,而且簡(jiǎn)單清晰,特別是在描述事物間的關(guān)系方面更加簡(jiǎn)潔合理,便于理解和使用,現(xiàn)已為絕大多數(shù)數(shù)據(jù)庫(kù)設(shè)計(jì)所用。
使用數(shù)據(jù)庫(kù)技術(shù)解決來(lái)自客觀世界的各種管理問(wèn)題、開(kāi)發(fā)實(shí)際業(yè)務(wù)信息系統(tǒng),首先碰到的問(wèn)題是如何收集和組織業(yè)務(wù)中所涉及的數(shù)據(jù),以及按什么樣的組織結(jié)構(gòu)將這些數(shù)據(jù)裝入數(shù)據(jù)庫(kù)中,也就是要根據(jù)具體任務(wù)的需求和數(shù)據(jù)庫(kù)管理系統(tǒng)提供的功能進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)。本文以小型“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)的設(shè)計(jì)為例進(jìn)行了數(shù)據(jù)庫(kù)設(shè)計(jì)。
2數(shù)據(jù)庫(kù)設(shè)計(jì)步驟
根據(jù)用戶要求,開(kāi)發(fā)滿足特定管理需求的數(shù)據(jù)庫(kù)的過(guò)程稱為數(shù)據(jù)庫(kù)設(shè)計(jì)。通常設(shè)計(jì)分成以下四步。
需求分析:按照用戶的需求和系統(tǒng)功能要求,確定新建數(shù)據(jù)庫(kù)所需要完成任務(wù)的目的。
確定所需要的表:根據(jù)信息管理的需求確定要?jiǎng)?chuàng)建的表,每個(gè)表應(yīng)該只包含一個(gè)主題的信息,而且各個(gè)表不應(yīng)該包含重復(fù)的信息。
確定所需要的字段:一個(gè)表包含一個(gè)主題的信息,表中的各個(gè)字段都是該主題的各個(gè)組成部分。每個(gè)字段應(yīng)直接與表的主題相關(guān);字段盡可能不是推導(dǎo)或計(jì)算出的數(shù)據(jù);字段是不可分割的數(shù)據(jù)單位。
定義主關(guān)鍵字:為了連接保存在不同表中的數(shù)據(jù),為了唯一地確定一條記錄,需要為每個(gè)表定義一個(gè)主關(guān)鍵字。
優(yōu)化設(shè)計(jì):在初步設(shè)計(jì)數(shù)據(jù)庫(kù)的表、字段及表的關(guān)系后,還需要對(duì)所做的設(shè)計(jì)進(jìn)一步分析,檢查可能存在的缺陷和需要改進(jìn)的地方,使得設(shè)計(jì)更合理、更符合用戶和輸出信息的需要,便于數(shù)據(jù)的使用和維護(hù)。
3門診管理系統(tǒng)數(shù)據(jù)庫(kù)設(shè)計(jì)
3.1需求分析
對(duì)“門診管理系統(tǒng)”進(jìn)行業(yè)務(wù)分析后,“門診管理系統(tǒng)”信息系統(tǒng)所要包括的基本功能:需要管理醫(yī)生、科室、藥品、病人的基本信息,需要管理處方,需要管理處方明細(xì),包括處方的錄入、修改、查詢、刪除等功能;在使用過(guò)程中有時(shí)需要打印報(bào)表,所以還得有打印的功能;如果該系統(tǒng)規(guī)定專人負(fù)責(zé),還需要規(guī)定用戶名和登錄密碼,體現(xiàn)保密性等等。即“門診管理系統(tǒng)”基本功能包括:系統(tǒng)管理(界面管理、退出系統(tǒng))、基本信息管理(輸入數(shù)據(jù)、修改數(shù)據(jù)、查詢數(shù)據(jù)、刪除數(shù)據(jù))、信息輸出處理(輸出一般數(shù)據(jù)、輸出統(tǒng)計(jì)數(shù)據(jù))。
3.2確定所需要的表
根據(jù)“門診管理系統(tǒng)”系統(tǒng)的需求,不難發(fā)現(xiàn)數(shù)據(jù)庫(kù)中包含了4類信息:一是藥品基本信息,如藥品編號(hào)、藥品名稱藥品規(guī)格等;二是醫(yī)生、病人、科室的基本信息,如醫(yī)生工號(hào)、病人ID等;三是處方信息,如處方號(hào)、病人ID、開(kāi)出日期、臨床診斷等;四是單據(jù)信息,如掛號(hào)單號(hào)、掛號(hào)費(fèi)、收費(fèi)單號(hào)、金額等。如果將這些信息放在一個(gè)表中,必然出現(xiàn)大量的重復(fù),不符合信息分類的原則。因此,根據(jù)已確定的“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)應(yīng)完成的任務(wù)以及信息分類原則,初步擬定該數(shù)據(jù)庫(kù)應(yīng)包含8個(gè)數(shù)據(jù)表,即科室表、病人表、醫(yī)生表、藥品表、處方表、掛號(hào)單表、收費(fèi)單表、處方明細(xì)表等。
3.3確定所需要的字段
對(duì)于上面已經(jīng)確定的每一個(gè)表,還要設(shè)計(jì)它的結(jié)構(gòu),即要確定每個(gè)表應(yīng)包含哪些字段。為了使保存在不同表中的數(shù)據(jù)產(chǎn)生聯(lián)系,數(shù)據(jù)庫(kù)中的每個(gè)表必須有主關(guān)鍵字能唯一標(biāo)識(shí)每條記錄,主關(guān)鍵字可以是一個(gè)字段,也可以是多個(gè)字段的組合。
關(guān)系數(shù)據(jù)庫(kù)利用主關(guān)鍵字迅速關(guān)聯(lián)多個(gè)表中的數(shù)據(jù),不允許在主關(guān)鍵字字段中有重復(fù)值或空值。常使用唯一的標(biāo)識(shí)作為這樣的字段,例如,在“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)中,可以將科室號(hào)、病人ID、醫(yī)生工號(hào)、藥品編號(hào)、處方號(hào)、掛號(hào)單號(hào)、收費(fèi)單號(hào)分別作為科室表、病人表、醫(yī)生表、藥品表、處方表、掛號(hào)單表、收費(fèi)單表的主關(guān)鍵字字段,處方號(hào)和藥品編號(hào)這兩個(gè)字段組合作為處方明細(xì)表的主關(guān)鍵字。
3.4確定表之間的關(guān)系
在數(shù)據(jù)庫(kù)中,每個(gè)表不是完全孤立的部分,表與表之間有可能存在著相互的聯(lián)系。例如,前面創(chuàng)建的“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)中有8個(gè)表,不同表中有相同的字段名,如科室表中有“科室號(hào)”,醫(yī)生表中也有“科室號(hào)”,通過(guò)這個(gè)字段,就可以建立起這兩個(gè)表之間的關(guān)系。
確定關(guān)系的目的是使表的結(jié)構(gòu)合理,不僅存儲(chǔ)了所需要的實(shí)體信息,并且反映出實(shí)體之間客觀存在的關(guān)聯(lián)。前面各個(gè)步驟已經(jīng)把數(shù)據(jù)分配到了各個(gè)表中。因?yàn)橛行┹敵鲂枰獜膸讉€(gè)表中得到信息,為了能夠?qū)⑦@些表中的內(nèi)容重新組合,得到有意義的信息,就需要確定外部關(guān)鍵字。例如,在“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)中,病人ID是病人表中的主關(guān)鍵字,也是處方表中的一個(gè)字段。處方表中的病人ID字段稱為“外部關(guān)鍵字”,因?yàn)樗橇硗庖粋€(gè)表即病人表的主關(guān)鍵字。
如果表中沒(méi)有可作為主關(guān)鍵字的字段,可以在表中增加一個(gè)字段,該字段的值為序列號(hào),以此來(lái)標(biāo)識(shí)不同記錄。主鍵是用于將表聯(lián)系到其他表的外部關(guān)鍵字上,從而使不同表中的信息發(fā)生聯(lián)系。如前所述,表之間的聯(lián)系可以歸結(jié)為一對(duì)一、一對(duì)多、多對(duì)多三種類型。
在“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)中,科室表和醫(yī)生表之間就是一對(duì)多的關(guān)系,因?yàn)橐粋€(gè)科室可以有多位醫(yī)生。
而在多對(duì)多聯(lián)系中,應(yīng)將多對(duì)多關(guān)系分解成兩個(gè)一對(duì)多關(guān)系,其方法就是在具有多對(duì)多關(guān)系的兩個(gè)表之間創(chuàng)建第3個(gè)表,即紐帶表。紐帶表不一定需要自己的主關(guān)鍵字,如果需要,可以將它所聯(lián)系的兩個(gè)表的主關(guān)鍵字作為組合關(guān)鍵字指定為主關(guān)鍵字。在“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)中,處方表和藥品表之間就是多對(duì)多的關(guān)系。一個(gè)處方可以包含多種藥品,同樣一種藥品也可以出現(xiàn)在多個(gè)處方中。因此設(shè)置一個(gè)處方明細(xì)表,該表作為處方表和藥品表之間的紐帶表,應(yīng)將處方表的主關(guān)鍵字“處方號(hào)”和藥品表的主關(guān)鍵字“藥品編號(hào)”放入其中。
根據(jù)上述考慮,這樣,在“門診管理系統(tǒng)”數(shù)據(jù)庫(kù)中各個(gè)表之間的關(guān)系如圖1所示。
3.5完善數(shù)據(jù)庫(kù)
在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),信息復(fù)雜和情況變化會(huì)造成考慮不周,如有些表沒(méi)有包含屬于自己主題的全部字段,或者包含了不屬于自己的主題字段,或者沒(méi)有很好地滿足實(shí)際應(yīng)用中的需要。此外,數(shù)據(jù)庫(kù)中常存在著多種復(fù)雜交叉關(guān)系,而這些關(guān)系又是實(shí)現(xiàn)數(shù)據(jù)庫(kù)動(dòng)態(tài)、有效管理的重要線索。因此,在初步確定了數(shù)據(jù)庫(kù)需要包含哪些表、每個(gè)表包含哪些字段以及各個(gè)表之間的關(guān)系以后,還要重新研究一下設(shè)計(jì)方案,檢查可能存在的缺陷,并進(jìn)行相應(yīng)的修改。只有通過(guò)反復(fù)修改,才能設(shè)計(jì)出一個(gè)完善的數(shù)據(jù)庫(kù)系統(tǒng)。
在信息社會(huì)里,信息都是儲(chǔ)存在計(jì)算機(jī)系統(tǒng)中的,它們的組織形式多為數(shù)據(jù)庫(kù)。門診管理系統(tǒng)數(shù)據(jù)庫(kù)案例分析與設(shè)計(jì),以實(shí)例的形式講解了信息的組織方法,在此基礎(chǔ)上可根據(jù)實(shí)際應(yīng)用需要進(jìn)行豐富和完善,并綜合數(shù)據(jù)庫(kù)管理系統(tǒng)提供的其他功能構(gòu)建一個(gè)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。
參考文獻(xiàn):
[1] 趙丹青,雷虎,涂小琴. Access數(shù)據(jù)庫(kù)技術(shù)與應(yīng)用教程[J]. 電子科技大學(xué)出版社,2016(1).
[2] 王軍委. Access數(shù)據(jù)庫(kù)應(yīng)用基礎(chǔ)教程[J]. 清華大學(xué)出版社,2014(4).
【通聯(lián)編輯:王力】