軟件系統(tǒng)開(kāi)發(fā)指導(dǎo)_第1頁(yè)
軟件系統(tǒng)開(kāi)發(fā)指導(dǎo)_第2頁(yè)
軟件系統(tǒng)開(kāi)發(fā)指導(dǎo)_第3頁(yè)
軟件系統(tǒng)開(kāi)發(fā)指導(dǎo)_第4頁(yè)
軟件系統(tǒng)開(kāi)發(fā)指導(dǎo)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、軟件系統(tǒng)開(kāi)發(fā)概述系統(tǒng)開(kāi)發(fā)的主要步驟包括:系統(tǒng)需求分析、數(shù)據(jù)庫(kù)設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)。系統(tǒng)分為面向數(shù)據(jù)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)和面向處理的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)。否認(rèn)哪一種,第一步都要作好數(shù)據(jù)庫(kù)的設(shè)計(jì)。兩類系統(tǒng)都是通過(guò)應(yīng)用程序向用戶提供信息服務(wù)的。但是,前者的應(yīng)用面更寬,其數(shù)據(jù)對(duì)應(yīng)用程序的依賴也因而更小。反映在系統(tǒng)的開(kāi)發(fā)步驟上,兩類系統(tǒng)的具體作法也有較大不同?,F(xiàn)分述如下:一、 以數(shù)據(jù)為中心的系統(tǒng)這類系統(tǒng)都是大型數(shù)據(jù)庫(kù)系統(tǒng)。這類系統(tǒng)的開(kāi)發(fā)示意圖如下收集數(shù)據(jù)處理需求 求 數(shù)據(jù)分類與編碼維護(hù)子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)應(yīng)用子系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)數(shù)據(jù)庫(kù)設(shè)計(jì)滿意否 N 數(shù)據(jù)庫(kù)實(shí)現(xiàn)(采集與裝入數(shù)據(jù))數(shù)據(jù)庫(kù)運(yùn)行與維護(hù)1 數(shù)據(jù)庫(kù)設(shè)計(jì)數(shù)據(jù)量大是這

2、類系統(tǒng)的主要特點(diǎn)。如國(guó)家經(jīng)濟(jì)信息系統(tǒng)、全國(guó)財(cái)政稅務(wù)信息系統(tǒng)、科技情報(bào)檢索系統(tǒng)等,一般都在幾百M(fèi)B。設(shè)計(jì)這類系統(tǒng)時(shí)還要充分考慮到數(shù)據(jù)的增長(zhǎng)。科技情報(bào)信息也好,國(guó)家經(jīng)濟(jì)信息也好,數(shù)據(jù)量都是逐年增長(zhǎng)的。在一般情況下,可以把數(shù)據(jù)分為當(dāng)前數(shù)據(jù)和歷史數(shù)據(jù),分別存放在當(dāng)前庫(kù)和歷史庫(kù)中。這樣既可達(dá)到把一些有用數(shù)據(jù)作為歷史資料長(zhǎng)期保存的目的,又可使對(duì)當(dāng)前數(shù)據(jù)的頻繁處理更加高效和方便。2 應(yīng)用程序設(shè)計(jì)在上圖中,“數(shù)據(jù)庫(kù)設(shè)計(jì)”的左右兩側(cè)列出了應(yīng)用程序設(shè)計(jì)所包含的兩項(xiàng)工作,即應(yīng)用子系統(tǒng)設(shè)計(jì)和維護(hù)子系統(tǒng)設(shè)計(jì)。需要強(qiáng)調(diào)指出,對(duì)于以數(shù)據(jù)為中心的系統(tǒng),其應(yīng)用子程序不僅數(shù)量大,而且伴隨用戶的增加而不斷擴(kuò)充。由于這類系統(tǒng)的用戶眾

3、多,每個(gè)用戶對(duì)數(shù)據(jù)會(huì)有不同的需求,因此系統(tǒng)設(shè)置若干基本查詢程序用于一般的對(duì)外信息服務(wù)外,應(yīng)允許某些用戶擁有專用的查詢程序;對(duì)于領(lǐng)導(dǎo)機(jī)關(guān)和研究部門,還應(yīng)允許它們建立滿足各自需求的統(tǒng)計(jì)和分析程序,支持它們進(jìn)行預(yù)測(cè)和決策。由此可見(jiàn),這類系統(tǒng)的應(yīng)用子程序可以在數(shù)據(jù)庫(kù)設(shè)計(jì)之后,甚至在已經(jīng)運(yùn)行后,再根據(jù)用戶的需要逐步開(kāi)發(fā)與擴(kuò)充。所以我們說(shuō),在這類系統(tǒng)中數(shù)據(jù)是獨(dú)立于應(yīng)用程序的。除此之外,在設(shè)計(jì)這類系統(tǒng)的應(yīng)用程序時(shí)不需注意以下特點(diǎn):(1) 由于用戶眾多,系統(tǒng)應(yīng)十分重視數(shù)據(jù)安全,防止有意或無(wú)意地造成數(shù)據(jù)的破壞或泄密。為此,程序應(yīng)具有鑒別用戶身分(例如核對(duì)用戶口令)和限制操作權(quán)限(例如只讀不寫)等功能,并在維護(hù)子

4、程序中設(shè)置對(duì)數(shù)據(jù)進(jìn)行后備(即復(fù)制備份)和轉(zhuǎn)移(將數(shù)據(jù)從當(dāng)前庫(kù)轉(zhuǎn)入歷史庫(kù))等有關(guān)程序。(2) 考慮到大多數(shù)用戶是不計(jì)算機(jī)的非專業(yè)用戶,所有應(yīng)用程序都應(yīng)具有友好的用戶界面,并盡可能利用圖形、代碼等技術(shù),以方便用戶的操作。(3) 維護(hù)數(shù)據(jù)的完整性。由于這類系統(tǒng)往往是適用于多用戶的網(wǎng)絡(luò)或分布式系統(tǒng),這一點(diǎn)尤須引起足夠重視。以數(shù)據(jù)為中心的應(yīng)用系統(tǒng)通常是在大、中型計(jì)算機(jī),或者由它們與微機(jī)共同組成的主從式系統(tǒng)上開(kāi)發(fā)的。二、 以處理為中心的系統(tǒng)在微機(jī)DBMS上開(kāi)發(fā)的應(yīng)用系統(tǒng)大都是小型的數(shù)據(jù)庫(kù)系統(tǒng)。它們是以處理為中心的應(yīng)用系統(tǒng),也是我們研究的重點(diǎn)。這類系統(tǒng)的開(kāi)發(fā)示意圖如下:需 求 分 析功能分析數(shù)據(jù)分析應(yīng)用程序

5、設(shè)計(jì)數(shù)據(jù)庫(kù)設(shè)計(jì)系統(tǒng)試運(yùn)行(聯(lián)調(diào))滿意否NNY系統(tǒng)運(yùn)行與維護(hù)由圖可知,整個(gè)開(kāi)發(fā)活動(dòng)是從對(duì)系統(tǒng)的需求分析開(kāi)始的。需要指出,系統(tǒng)需求包括對(duì)數(shù)據(jù)的需求和對(duì)數(shù)據(jù)處理或應(yīng)用的需求兩方面的內(nèi)容。圖中把前者稱為數(shù)據(jù)分析,后者稱為功能分析。它們的分析結(jié)果將分別作為數(shù)據(jù)庫(kù)設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)的依據(jù)。實(shí)際上在一個(gè)“以處理為中心”的應(yīng)用系統(tǒng)中,這兩方面的需求往往我中有你,你中有我,不能截然分開(kāi)。具體地說(shuō),不僅在應(yīng)用程序設(shè)計(jì)中仍須接受數(shù)據(jù)庫(kù)當(dāng)前結(jié)構(gòu)的約束,在設(shè)計(jì)數(shù)據(jù)庫(kù)的時(shí)候,也須充分考慮滿足數(shù)據(jù)處理的需要。需求分析結(jié)束后,就要分別開(kāi)始數(shù)據(jù)庫(kù)設(shè)計(jì)和應(yīng)用誤譯設(shè)計(jì)了。前者又可分為“概念設(shè)計(jì)-實(shí)現(xiàn)設(shè)計(jì)(或邏輯設(shè)計(jì))-物理設(shè)計(jì)”等

6、步驟;后者則通常包括“確定總體結(jié)構(gòu)-模塊設(shè)計(jì)-編碼調(diào)試”等內(nèi)容。這兩項(xiàng)工作完成后,系統(tǒng)應(yīng)進(jìn)入試運(yùn)行,即把數(shù)據(jù)庫(kù)文件連同有關(guān)的應(yīng)用程序一起裝入計(jì)算機(jī),考察它們?cè)诟鞣N應(yīng)用中能否達(dá)到預(yù)定的功能和性能需求。若不能滿足,還需返回前面步驟,修改數(shù)據(jù)庫(kù)或應(yīng)用程序的設(shè)計(jì)。為穩(wěn)妥起見(jiàn),在試運(yùn)行階段一般只裝入少量數(shù)據(jù)。等確認(rèn)沒(méi)有重大問(wèn)題時(shí)再裝入大批數(shù)據(jù),以免造成較大返工。試運(yùn)行的結(jié)束,標(biāo)志著系統(tǒng)開(kāi)發(fā)的基本完成。但是,只要系統(tǒng)存在一天,對(duì)系統(tǒng)的調(diào)整和修改就會(huì)繼續(xù)一天。還須繼續(xù)做好系統(tǒng)的維護(hù)工作,包括糾錯(cuò)和系統(tǒng)改進(jìn)等。系統(tǒng)需求分析需求分析是系統(tǒng)開(kāi)發(fā)的第一步,目的是確定用戶對(duì)目標(biāo)系統(tǒng)的需求。一般地說(shuō),目標(biāo)系統(tǒng)都是由當(dāng)前

7、系統(tǒng)脫胎而來(lái)的。它源于當(dāng)前系統(tǒng),但又往往高于當(dāng)前系統(tǒng)。大體上說(shuō)系統(tǒng)的需求分析要經(jīng)歷下列步驟:(1) 調(diào)查研究當(dāng)前系統(tǒng)的工作狀況,即進(jìn)行“詳細(xì)的用戶調(diào)查”(2) 通過(guò)對(duì)調(diào)查內(nèi)容的“分析”與“抽象”,列出經(jīng)過(guò)用戶許可的目標(biāo)系統(tǒng)需求(3) 對(duì)上述需求進(jìn)行“數(shù)據(jù)分析”和“功能分析”,分別得出系統(tǒng)對(duì)數(shù)據(jù)和數(shù)據(jù)應(yīng)用兩方面的需求。一個(gè)實(shí)例汽車修理管理信息系統(tǒng)(QCXL_MIS)通過(guò)用戶調(diào)查,初步得出以下結(jié)果:1當(dāng)前系統(tǒng)工作狀況調(diào)查獲悉,該廠在業(yè)務(wù)管理上共使用5種單據(jù),4種賬冊(cè)和3種主要報(bào)表?,F(xiàn)分述如下:(1) 5種單據(jù)。如下表當(dāng)前系統(tǒng)單據(jù)一覽表編 號(hào)名 稱填 寫 人D1修車登記表送修人D2汽車修理單修理派工

8、員和修理工D3零件領(lǐng)用單修理工D4零件入庫(kù)單倉(cāng)庫(kù)管理員D5修車發(fā)票財(cái)務(wù)人員各表的具體格式如下:修車登記單 日期 汽車牌號(hào) 型號(hào) 生產(chǎn)廠 修理項(xiàng)目 車主名 電話 地址 其余略(2) 4種帳冊(cè) 如下表當(dāng)前系統(tǒng)賬冊(cè)一覽表編 號(hào)名 稱建賬根據(jù)Z1汽車登記冊(cè)D1Z2修理工名冊(cè)人事部門資料Z3汽車修理臺(tái)賬D2、D5Z4庫(kù)存零件臺(tái)賬庫(kù)房資料汽車登記冊(cè)牌號(hào)型號(hào)生產(chǎn)廠車主名地址電話其余略(3) 3種主要報(bào)表當(dāng)前系統(tǒng)報(bào)表一覽表編 號(hào)名 稱 數(shù)據(jù)來(lái)源B1零件耗用月報(bào)表Z3,Z4B2修理工資月報(bào)表Z3,Z2B3零件訂貨計(jì)劃Z4零件耗用月報(bào)表零件名稱數(shù)量?jī)r(jià)格零件費(fèi)利潤(rùn)其余略2對(duì)目標(biāo)系統(tǒng)的應(yīng)用要求通過(guò)對(duì)當(dāng)前系統(tǒng)的調(diào)查和與

9、用戶的共同討論,對(duì)將要開(kāi)發(fā)的目標(biāo)系統(tǒng)提出了如下的總體要求:(1) 用數(shù)據(jù)文件代替現(xiàn)用的全部賬冊(cè)(2) 具有對(duì)各種數(shù)據(jù)文件裝入和修改數(shù)據(jù)的功能(3) 能計(jì)算出修車費(fèi)用和開(kāi)發(fā)票。其中修車費(fèi)用按下列各式計(jì)算:零件費(fèi)=零件價(jià)格耗用數(shù)量修理費(fèi)=小時(shí)工資修理工時(shí)3總 計(jì)=零件費(fèi)用+修理費(fèi)(4) 能找出需要訂貨的零件,編制并打印零件訂貨計(jì)劃訂貨條件:零件庫(kù)存量<最低庫(kù)存量訂貨數(shù)量:額定訂貨量(5) 按現(xiàn)有格式和內(nèi)容和打印零件耗用月報(bào)表和修理工資月報(bào)表(6) 有多種查詢和統(tǒng)計(jì)功能。為了簡(jiǎn)化討論,具體需求就從略了在上述工作的基礎(chǔ)上,就可以進(jìn)行“數(shù)據(jù)分析”和“功能分析”了。數(shù)據(jù)分析這是數(shù)據(jù)庫(kù)系統(tǒng)開(kāi)發(fā)中十分重

10、要的一項(xiàng)活動(dòng)。其首要任務(wù)是確定目標(biāo)系統(tǒng)中使用的全部數(shù)據(jù),為它們?nèi)∶投x。在傳統(tǒng)的軟件工程方法中,數(shù)據(jù)常區(qū)分為數(shù)據(jù)文件、數(shù)據(jù)流(組合數(shù)據(jù))和數(shù)據(jù)項(xiàng)(單個(gè)數(shù)據(jù))三大類。分析中要為每一數(shù)據(jù)編寫一個(gè)數(shù)據(jù)條目,然后將所有條目合編為數(shù)據(jù)字典。這樣,在隨后進(jìn)行的系統(tǒng)設(shè)計(jì)中不論有多少人參加,大家都可以數(shù)據(jù)字典為統(tǒng)一的根據(jù),不必?fù)?dān)心因數(shù)據(jù)不一致而導(dǎo)致矛盾和混亂了。在數(shù)據(jù)字典中,每一個(gè)數(shù)據(jù)占一個(gè)字典條目。字典條目可以用簡(jiǎn)易表示法表示。字典條目所用符號(hào)如下表:符號(hào)=+a b/( )*含義定義為加允許重復(fù)a-b次在數(shù)項(xiàng)中任選一項(xiàng)允許省略( )中內(nèi)容注釋的起止符號(hào)字典條目舉例修車登記單=牌號(hào)+型號(hào)+生產(chǎn)廠+車主名+地

11、址+電話汽車登記冊(cè)=牌號(hào)+型號(hào)+生產(chǎn)廠+車主名+地址+電話車主名=3漢字符10以汽車修理管理信息系統(tǒng)為例,說(shuō)明數(shù)據(jù)分析步驟如下:1確定各個(gè)單項(xiàng)數(shù)據(jù)(不含數(shù)據(jù)文件和數(shù)據(jù)流)在目標(biāo)系統(tǒng)中的名稱。為數(shù)據(jù)取名時(shí)注意:(1) 同一數(shù)據(jù)還要使用不同的名稱(2) 在容易識(shí)別的前提下盡量簡(jiǎn)化名稱,以方便輸入操作。在本例中,一律取漢字拼音的首字母作為數(shù)據(jù)名稱。例:賬冊(cè)Z1(PH,XH,SCC,CZM,DZ,DH)2定義數(shù)據(jù)項(xiàng)的含意與取值將上一步得到的全部數(shù)據(jù)項(xiàng)綜合起來(lái),加上含義與取值,便可得到整個(gè)目標(biāo)系統(tǒng)的數(shù)據(jù)項(xiàng)條目,這些數(shù)據(jù)項(xiàng)將構(gòu)成定義應(yīng)用系統(tǒng)的字段變量和內(nèi)存變量的根據(jù)。數(shù)據(jù)項(xiàng)條目一覽表數(shù)據(jù)項(xiàng)名含義類型寬度數(shù)

12、據(jù)項(xiàng)名含義類型寬度PH汽車牌號(hào)C12CB成本N8.2XH汽車型號(hào)C6JG價(jià)格N8.2GH修理工工號(hào)C4LJF零件費(fèi)N8.2BH修理單編號(hào)C4ZJ總計(jì)N8.2LJH零件號(hào)C6SL數(shù)量N2XM修理工姓名C8KCL庫(kù)存量N3CZM車主名C8ZDKC最低庫(kù)存N3LJM零件名C10DHL訂貨量N3DZ地址C16LR利潤(rùn)N8.2DH電話C13YGZ月工資N6.2XLXM修理項(xiàng)目C12CSRQ出生日期D8SCC生產(chǎn)廠C20JCRQ進(jìn)廠日期D8XLXS修理小時(shí)N4.1SXRG送修日期D8XSGZ小時(shí)工資N5.2WGRG完工日期D8XLF修理費(fèi)N8.23定義目標(biāo)系統(tǒng)的數(shù)據(jù)流系統(tǒng)的輸入數(shù)據(jù)和輸出的打印數(shù)據(jù),一般可

13、轉(zhuǎn)換為目標(biāo)系統(tǒng)的輸入和輸出數(shù)據(jù)流。就本例面議,D1-D5,B1-B3共可定義8種數(shù)據(jù)流。如下表:數(shù)據(jù)流條目一覽表數(shù)據(jù)流名含 義組 成XCDJ修車登記單PH+XH+SCC+CZM+DH+DZ+XLXM+SXRQXLD汽車修理單BH+PH+GH+XLXM+XLXS+WGRQ+LJH+SLLYD零件領(lǐng)用單BH+LJH+SLRKD零件入庫(kù)單LJH+LJM+CB+SLXCFP修車發(fā)票CZM+DZ+PH+XLXM+WGRQ+XLF+LJF+ZJLHYB零件耗用月報(bào)LJH+LJM+SLDHJB零件訂貨季報(bào)LJH+LJM+DHL+JG+ZJGZYB修理工資月報(bào)GH+XM+XLXS+XSGZ+YGZ如果目標(biāo)系統(tǒng)

14、是基于普通文件的應(yīng)用系統(tǒng),在數(shù)據(jù)項(xiàng)和數(shù)據(jù)流全部定義后,就可以定義數(shù)據(jù)文件了。但是在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,定義數(shù)據(jù)庫(kù)文件不屬于分析階段的任務(wù)。這是因?yàn)樵陂_(kāi)發(fā)這類系統(tǒng)時(shí),數(shù)據(jù)庫(kù)的設(shè)計(jì)上升為一項(xiàng)獨(dú)立的開(kāi)發(fā)活動(dòng)。目標(biāo)系統(tǒng)共需要多少個(gè)數(shù)據(jù)庫(kù)文件?每個(gè)文件怎樣組成?必須推遲到數(shù)據(jù)庫(kù)設(shè)計(jì)階段方能最后確定。這也是開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)不同于開(kāi)發(fā)傳統(tǒng)文件應(yīng)用系統(tǒng)的一個(gè)特點(diǎn)。還需指出的是,由于數(shù)據(jù)庫(kù)文件暫不能確定,已定義的數(shù)據(jù)項(xiàng)和數(shù)據(jù)流也可以在以后的設(shè)計(jì)階段出現(xiàn)增刪。功能分析功能分析的任務(wù)是弄清用戶對(duì)目標(biāo)系統(tǒng)數(shù)據(jù)處理功能所提出的需求。用戶對(duì)本例提出的功能需求可歸納為下列4個(gè)方面:1登記功能:用于把各種手填單據(jù)中的數(shù)據(jù)及時(shí)

15、登記到系統(tǒng)將要定義的數(shù)據(jù)庫(kù)文件中。由于庫(kù)文件要等數(shù)據(jù)庫(kù)設(shè)計(jì)好后才能確定,故此項(xiàng)功能也須隨后再定。2開(kāi)修車發(fā)票:根據(jù)修理單記載的修理小時(shí)和零件用量記載的耗用零件,按規(guī)定的算式計(jì)算出修理費(fèi)和零件費(fèi),然后打印出發(fā)票。不難看出,發(fā)票包含的信息幾乎取自所有數(shù)據(jù)文件,所以這是一項(xiàng)涉及面很廣的功能。3打印報(bào)表:包括2種月報(bào)表(零件耗用和工資津貼)和一種季報(bào)表(零件訂貨)。4查詢統(tǒng)計(jì):滿足對(duì)各種數(shù)據(jù)的查詢、統(tǒng)計(jì)和分析等需求。如前所述,為了簡(jiǎn)化所討論的問(wèn)題,這總分的功能從略了。至此,除個(gè)別問(wèn)題暫時(shí)不能確定外,已經(jīng)基本上完成了對(duì)“汽車修理管理信息系統(tǒng)”的需求分析。數(shù)據(jù)庫(kù)設(shè)計(jì)在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,數(shù)據(jù)由DBMS進(jìn)行獨(dú)

16、立的管理,對(duì)程序的依賴大為減小。因此,數(shù)據(jù)庫(kù)的設(shè)計(jì)也上升為一項(xiàng)獨(dú)立的開(kāi)發(fā)活動(dòng),成為在數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)的開(kāi)發(fā)中最受關(guān)心的中心問(wèn)題。以下將介紹數(shù)據(jù)庫(kù)設(shè)計(jì)所包含的工作內(nèi)容、指導(dǎo)原則與設(shè)計(jì)過(guò)程。一、數(shù)據(jù)庫(kù)的分級(jí)結(jié)構(gòu)與設(shè)計(jì)過(guò)程1SPARC分級(jí)結(jié)構(gòu)SPARC是美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)下屬的標(biāo)準(zhǔn)規(guī)劃和要求委員會(huì)的縮寫。1975年,該委員會(huì)對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)提出了一個(gè)標(biāo)準(zhǔn)模型。這一模型將數(shù)據(jù)庫(kù)劃分為內(nèi)模式、概念模式和外模式三級(jí),被稱為SPARC分級(jí)模型。下圖給出了這一模型的分級(jí)結(jié)構(gòu)及各級(jí)之間的聯(lián)系。應(yīng)用程序外模式A應(yīng)用程序應(yīng)用程序用戶視圖外模式B (用戶級(jí)邏輯數(shù) 據(jù)庫(kù)) (外部/概念映射)DBMS 概 念 模 式

17、 (概念/內(nèi)部映射)模內(nèi)式對(duì)于上圖給出的三層模式,現(xiàn)分述如下:(1) 內(nèi)模式(internal schema) 即存儲(chǔ)模式。它是當(dāng)數(shù)據(jù)庫(kù)在外存儲(chǔ)器上存儲(chǔ)時(shí),對(duì)它的物理結(jié)構(gòu)的描述。早期的數(shù)據(jù)庫(kù)都建立在大、中型計(jì)算機(jī)上,其內(nèi)模式通常由系統(tǒng)程序員設(shè)計(jì),由他來(lái)確定所有數(shù)據(jù)庫(kù)文件與索引文件的物理結(jié)構(gòu)。所以內(nèi)模式有時(shí)也稱為系統(tǒng)程序員視圖(view),表明它是系統(tǒng)程序員觀點(diǎn)下的數(shù)據(jù)庫(kù)。(2) 概念模式(conceptual schema) 它是對(duì)數(shù)據(jù)庫(kù)整體邏輯結(jié)構(gòu)的描述。規(guī)模較大的數(shù)據(jù)庫(kù)都設(shè)有數(shù)據(jù)庫(kù)管理員(DataBase Administrator),簡(jiǎn)稱DBA由他們來(lái)統(tǒng)一管理對(duì)數(shù)據(jù)庫(kù)的定義、使用與維護(hù),

18、他們對(duì)數(shù)據(jù)庫(kù)的全局結(jié)構(gòu)必須有清楚的了解。所以這一模式有時(shí)也稱為DBA視圖,表明它是DBA觀點(diǎn)下的數(shù)據(jù)庫(kù)。(3) 外模式(external schema) 數(shù)據(jù)共享是數(shù)據(jù)庫(kù)的一大特點(diǎn)。一個(gè)大型數(shù)據(jù)庫(kù)通常擁有許多用戶。對(duì)某一特定的用戶面議,他可能僅對(duì)其中的一部分?jǐn)?shù)據(jù)感興趣,不需要訪問(wèn)庫(kù)中所有的數(shù)據(jù),也不必了解數(shù)據(jù)庫(kù)的全局結(jié)構(gòu)。以大型企業(yè)的管理信息系統(tǒng)為例,在它的數(shù)據(jù)庫(kù)中,可能包括生產(chǎn)、供銷、財(cái)務(wù)、人事等內(nèi)容廣泛的數(shù)據(jù)庫(kù)文件。外模式的作用就是用來(lái)定義滿足不同用戶(例生產(chǎn)、供銷、財(cái)務(wù)、人事等處、科)需要的數(shù)據(jù)庫(kù)。一個(gè)數(shù)據(jù)庫(kù)只能有一個(gè)概念模式,但卻允許有多個(gè)外模式,每一個(gè)外模式都是概念模式的一個(gè)子集,包

19、含了允許某一特定用戶使用的那部分?jǐn)?shù)據(jù)。由于外模式是對(duì)應(yīng)于用戶的,是用戶觀點(diǎn)下的數(shù)據(jù)庫(kù),所以有時(shí)也稱為用戶視圖。小型數(shù)據(jù)庫(kù)可以沒(méi)有外模式。此時(shí)所有的用戶都直接使用概念模式,或者說(shuō)取整個(gè)概念模式作為自己的外模式。從上面描述可知,所謂三級(jí)模式,其實(shí)是對(duì)同一數(shù)據(jù)庫(kù)所作的三種不同的描述。內(nèi)模式是計(jì)算機(jī)上實(shí)際存在的數(shù)據(jù)庫(kù),即常說(shuō)的物理數(shù)據(jù)庫(kù)。概念模式是對(duì)內(nèi)模式的邏輯抽象,外模式則是對(duì)概念模式中某個(gè)局部的抽象,它們分別對(duì)應(yīng)于佤的和用戶級(jí)的邏輯數(shù)據(jù)庫(kù)。如上圖所示,從一種模式到另一種模式是通過(guò)級(jí)間“映射(mapping)”實(shí)現(xiàn)的。這種映射功能由DBMS自動(dòng)提供,不需要由用戶進(jìn)行干預(yù)。2數(shù)據(jù)庫(kù)的設(shè)計(jì)過(guò)程數(shù)據(jù)庫(kù)的設(shè)

20、計(jì)主要是針對(duì)上述三種模式的設(shè)計(jì)。由于概念模式和外模式所描述的都是數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu),所以傳統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)將設(shè)計(jì)過(guò)程概括為兩大步,即邏輯設(shè)計(jì)和物理設(shè)計(jì)。當(dāng)然,在邏輯設(shè)計(jì)前首先要進(jìn)行系統(tǒng)分析,弄清用戶對(duì)系統(tǒng)的需求。但是,傳統(tǒng)的數(shù)據(jù)庫(kù)設(shè)計(jì)在完成需求分析后,隨即就開(kāi)始邏輯設(shè)計(jì)。設(shè)計(jì)人員在滿足系統(tǒng)需求的前提下,要同時(shí)考慮選擇數(shù)據(jù)模型(層次、網(wǎng)狀、關(guān)系)、確定存取方法與訪問(wèn)路徑、提高存取效率等多方面的問(wèn)題,難免顧此失彼。為此,在“1978新奧爾良數(shù)據(jù)庫(kù)設(shè)計(jì)小組工作報(bào)告”中,數(shù)十位專家一致建議在邏輯設(shè)計(jì)階段前增加一個(gè)“概念設(shè)計(jì)”階段,將設(shè)計(jì)全過(guò)程擴(kuò)充為四步,如下:第一階段:面向問(wèn)題第一步:系統(tǒng)的需求分析-弄清

21、系統(tǒng)對(duì)信息的需求第二步:概念設(shè)計(jì)-確定概念模式第二階段:面向?qū)崿F(xiàn)第三步:邏輯設(shè)計(jì)-確定概念模式與外模式(邏輯數(shù)據(jù)庫(kù))第四步:物理設(shè)計(jì)-確定內(nèi)模式(物理數(shù)據(jù)庫(kù))這樣,第一階段集中于弄清需要解決的問(wèn)題,第二階段才考慮怎樣去實(shí)現(xiàn),既降低了每一步工作的復(fù)雜性,而且使整個(gè)工作顯得更有條理。采用美籍華人陳平山創(chuàng)議的“實(shí)體-聯(lián)系模型”(簡(jiǎn)稱E-R模型),可將上圖改造為:需 求 說(shuō) 明 書(shū)系統(tǒng)需求分析 E-R 模型概念設(shè)計(jì)邏輯數(shù)據(jù)庫(kù)結(jié)構(gòu)實(shí)現(xiàn)設(shè)計(jì)物理數(shù)據(jù)庫(kù)結(jié)構(gòu)物理設(shè)計(jì)以下對(duì)上圖進(jìn)行說(shuō)明:(1) 需求分析 目的是分析系統(tǒng)的需求。這一步的主要任務(wù)是從數(shù)據(jù)庫(kù)的所有用戶那里收集對(duì)數(shù)據(jù)的需求和對(duì)數(shù)據(jù)處理的需求,并把這些需

22、求寫成用戶各設(shè)計(jì)人員都能接受的需求說(shuō)明書(shū)。(2) 概念設(shè)計(jì) 目的是將需求說(shuō)明書(shū)中關(guān)于數(shù)據(jù)的需求綜合為一個(gè)統(tǒng)一的概念模型。為此,可首先根據(jù)單個(gè)應(yīng)用的需求,畫出能反映每一應(yīng)用需求的局部E-R模型。然后把這些E-R圖合并起來(lái),消除冗余和可能存在的矛盾,得出系統(tǒng)的總體E-R模型。(需要重申,概念模型是對(duì)用戶需求的客觀反映,并不涉及用什么軟硬件來(lái)實(shí)現(xiàn)它們。因此,這一步的注意力應(yīng)該集中在怎樣準(zhǔn)確表達(dá)用戶對(duì)信息的需求上,暫時(shí)不要去考慮怎樣實(shí)現(xiàn),以免分散精力。)(3) 實(shí)現(xiàn)設(shè)計(jì) 其目的是將前一步得出的E-R模型轉(zhuǎn)換為某一特定的DBMS能夠接受的邏輯模式。在這一步中,首先要選擇一種適當(dāng)?shù)臄?shù)據(jù)模型(關(guān)系、網(wǎng)狀、層

23、次)。由于一種特定的DBMS只支持一種數(shù)據(jù)模型,所以DBMS一經(jīng)確定,數(shù)據(jù)模型也就確定了。然后可以就按照相應(yīng)的轉(zhuǎn)換規(guī)則將E-R模型轉(zhuǎn)換為所選的DBMS可以接受的數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)。對(duì)于需要外模式的數(shù)據(jù)庫(kù),還應(yīng)利用概念設(shè)計(jì)階段得到的局部E-R模型,參照轉(zhuǎn)換規(guī)則設(shè)計(jì)出供不同用戶使用的局部邏輯結(jié)構(gòu)。通過(guò)轉(zhuǎn)換規(guī)則形成的全局和局部的邏輯模式,還需要運(yùn)用有關(guān)理論和方法對(duì)結(jié)構(gòu)進(jìn)行優(yōu)化,然后再轉(zhuǎn)入物理設(shè)計(jì)。(4) 物理設(shè)計(jì) 目的在于確定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)。其主要任務(wù)包括:確定數(shù)據(jù)庫(kù)文件和索引文件的記錄格式和物理結(jié)構(gòu),選擇存取方法,決定訪問(wèn)和外存儲(chǔ)器的分配策略等。由于這些工作都與硬件環(huán)境密切相關(guān),所以物理設(shè)計(jì)包含了許

24、多復(fù)雜和細(xì)致的工作。幸運(yùn)的是,這些工作大部分將由DBMS自動(dòng)完成,僅有一小部分內(nèi)容需要設(shè)計(jì)人員確定。以FOXPRO為例,其物理設(shè)計(jì)主要包括確定數(shù)據(jù)庫(kù)文件中表的字段類型與長(zhǎng)度,決定在哪些字段上建立索引,建立什么樣的索引等,實(shí)際上比概念設(shè)計(jì)和實(shí)現(xiàn)設(shè)計(jì)還要簡(jiǎn)單。以下是數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程各階段工作示意圖: 應(yīng)用1 應(yīng)用2 應(yīng)用n用 戶模式 求用 戶模式 求用 戶模式 求用 戶需 求 應(yīng)用1 應(yīng)用2 : : 局部概 念局部概 念局部概 念邏輯數(shù)據(jù)庫(kù)E-R模型庫(kù)物理用 戶需 求用 戶需 求 應(yīng)用n數(shù)據(jù)庫(kù)概念設(shè)計(jì)需求分析結(jié)束后,就可以進(jìn)行數(shù)據(jù)庫(kù)概念設(shè)計(jì)了。以下根據(jù)上述分析,建立汽車管理信息系統(tǒng)的概念模型。作為預(yù)

25、備知識(shí),下面先對(duì)“實(shí)體-聯(lián)系”方法作一簡(jiǎn)單介紹。1實(shí)體-聯(lián)系方法實(shí)體-聯(lián)系方法(Entity-relationship approach)簡(jiǎn)稱E-R方法,是用E-R圖來(lái)描述現(xiàn)實(shí)世界中數(shù)據(jù)之間聯(lián)系的有效方法。自1976年P(guān)PSChen提出這一方法以來(lái),E-R圖在設(shè)計(jì)數(shù)據(jù)庫(kù)中被廣泛應(yīng)用,現(xiàn)已成為概念設(shè)計(jì)階段描述數(shù)據(jù)庫(kù)概念模型的主要工具。(1)E-R圖的基本成分E-R圖中包含實(shí)體、聯(lián)系與屬性三種基本成份?,F(xiàn)分述如下:l 實(shí)體 即現(xiàn)實(shí)世界中存在的“人”或“物”。例如工廠、工人、產(chǎn)品、零件、訂貨單,都是實(shí)體的例子。在數(shù)據(jù)庫(kù)中實(shí)體常用來(lái)表示某類數(shù)據(jù)的集合,其范圍可大可小,例如工人可表示一個(gè)車間的工人,也可

26、表示一個(gè)工廠的工人。l 表示實(shí)體間存在的關(guān)系。例如,廠長(zhǎng)領(lǐng)導(dǎo)工廠,工廠雇用工人,工人生產(chǎn)產(chǎn)品,產(chǎn)品使用零件。這里的“領(lǐng)導(dǎo)”、“雇用”、“生產(chǎn)”與“使用”都代表實(shí)體之間的聯(lián)系。聯(lián)系又可分為一對(duì)一(1:1)、一對(duì)多(1:M)、多對(duì)多(M:N)等類型。廠長(zhǎng)與工廠是一對(duì)一的聯(lián)系,工廠與工人是一對(duì)多的聯(lián)系,工人與產(chǎn)品是多對(duì)多的聯(lián)系,產(chǎn)品與零件也屬于多對(duì)多的聯(lián)系。l 屬性 表示實(shí)體或聯(lián)系的某種特征。例如,零件可能有編號(hào)、名稱、庫(kù)存量、價(jià)格等屬性;汽車可能有牌號(hào)、型號(hào)、車主姓名等屬性。值得注意的是聯(lián)系也可以有屬性。如:某種產(chǎn)品使用某種零件的“數(shù)量”,它既非產(chǎn)品的屬性(如果該產(chǎn)品不止使用一種零件),也不能算零

27、件的屬性(因?yàn)橥环N零件可能用在不同的產(chǎn)品上),只能是產(chǎn)品和零件均相關(guān)的“使用”屬性。當(dāng)然,并不是所有聯(lián)系都必須有屬性。(2)E-R圖在E-R圖中,實(shí)體、聯(lián)系與屬性分別用矩形框、菱形框和橢圓框(或圓框)來(lái)表示。如下圖示例所示:其中圖1給出了實(shí)體之間的聯(lián)系,圖2給出了多個(gè)實(shí)體之間的聯(lián)系,圖3 給出了實(shí)體和聯(lián)系的屬性?,F(xiàn)實(shí)世界中的任何數(shù)據(jù)集合都可以用E-R圖來(lái)表示。修理單零件使用產(chǎn)品廠長(zhǎng)生產(chǎn)工人產(chǎn)品1 1 MM雇用領(lǐng)導(dǎo)修理1 MNN修理工工廠汽車工人工廠汽 車零 件車主姓名牌照號(hào) 型號(hào)價(jià) 格庫(kù)存量名 稱工 廠使用零件產(chǎn)品數(shù) 量在數(shù)據(jù)庫(kù)設(shè)計(jì)中,E-R圖常用來(lái)表示概念模型,有時(shí)亦稱為E-R模型。它直觀

28、易懂,也是設(shè)計(jì)人員和用戶之間進(jìn)行溝通的有效工具。2用E-R圖描述概念模型下面以汽車修理管理信息系統(tǒng)為例,說(shuō)明用E-R方法來(lái)建立概念模型的具體步驟。第一步:確定E-R模型應(yīng)含的實(shí)體。如前面所指出的,每一實(shí)體可用來(lái)代表一類數(shù)據(jù)的集合。所以在本例中,可以暫定修理廠原來(lái)使用的4種帳冊(cè)為模型的第一批實(shí)體,并分別取名為“汽車”、“修理工”、“修理單”與“零件”。第二步:建立對(duì)應(yīng)于系統(tǒng)單項(xiàng)應(yīng)用的局部E-R模型。這一步的目的是在實(shí)體之間建立所需的聯(lián)系。通常的作法是根據(jù)對(duì)系統(tǒng)的功能分析首先選出一至數(shù)項(xiàng)有代表性的單項(xiàng)應(yīng)用,建立起相應(yīng)的局部E-R模型。然后在此基礎(chǔ)上逐漸擴(kuò)充,直到在所有實(shí)體之間均建立起應(yīng)有的聯(lián)系。就

29、本例來(lái)說(shuō),在需求中“開(kāi)修車發(fā)票”是一項(xiàng)有代表性的應(yīng)用。計(jì)算修理費(fèi)要用到修理工的“小時(shí)工資”和修理單的“修理小時(shí)”,計(jì)算零件費(fèi)用時(shí)要用到修理單的“零件用量”和零件的“價(jià)格”,而發(fā)票中的“車主名”和“地址”都要用到汽車的信息。一項(xiàng)應(yīng)用涉及到所有4個(gè)實(shí)體中的數(shù)據(jù)。下圖給出了“開(kāi)修車發(fā)票”這一單項(xiàng)應(yīng)用的局部E-R模型。為簡(jiǎn)明起見(jiàn),其中每一實(shí)體只畫出了在單項(xiàng)應(yīng)用中用到的屬性。修 理汽 車修理工地址牌號(hào)車 主 名工號(hào)小時(shí)工資使 用修理單零 件零件號(hào)價(jià)格工號(hào)編號(hào)牌號(hào)零件用量修理小時(shí)修理項(xiàng)目零件 號(hào)第三步:將局部E-R模型綜合為系統(tǒng)的總體E-R模型。如下圖:生產(chǎn)廠型號(hào)牌號(hào)電話地址姓名工號(hào)修理小時(shí)工號(hào)編號(hào)牌號(hào)修

30、理單車 主 名進(jìn)廠日期小時(shí)工資出生日期地址電話汽 車修 理修理工零件號(hào)送修日期零件費(fèi)使 用修理費(fèi)零件名零 件完工日期總 計(jì)最低庫(kù) 存量訂貨量庫(kù)存量數(shù)量?jī)r(jià)格成本修理項(xiàng)目請(qǐng)注意:l 圖中的所有實(shí)體全都使用了的屬性集合;l 鑒于一張修理單可能耗用多種零件,“零件用量”不能算作修理單的屬性。所以綜合時(shí)從修理單的屬性中刪去了“零件號(hào)”與“零件用量”,用加在聯(lián)系“使用”上的屬性“數(shù)量”來(lái)替代。第四步:改進(jìn)總體E-R模型。通過(guò)綜合得到的初始模型常常存在不完善的地方,需要進(jìn)行改進(jìn)。一個(gè)完善的概念模型應(yīng)該具有最小的數(shù)據(jù)冗余。所以這一步的主要目的就是減少冗余,盡可能避免數(shù)據(jù)的重復(fù)存儲(chǔ)。按照這一目標(biāo),本例的初始模型

31、可作如下改進(jìn):l 刪去修理單中的3屬性“零件費(fèi)”、“修理費(fèi)”和“總計(jì)”。這是因?yàn)檫@3 個(gè)屬性數(shù)據(jù)均可從其它數(shù)據(jù)計(jì)算得出。通常把這類數(shù)據(jù)稱為“衍生數(shù)據(jù)”或“可導(dǎo)出數(shù)據(jù)”以區(qū)別于不能從推導(dǎo)得到的“基本數(shù)據(jù)”。把它們刪去可以減少冗余。l 將實(shí)體“汽車”分解為“汽車”和“車主”兩個(gè)實(shí)體。這是因?yàn)槠嚨膶傩约袑?shí)際上含有汽車與車主兩個(gè)方面的信息。如果一個(gè)車主送修了多輛汽車,則車主名及其地址與電話就會(huì)多次重復(fù)存貯,造成數(shù)據(jù)冗余。分開(kāi)后的兩個(gè)實(shí)體可以是:汽車:含屬性牌號(hào)、型號(hào)和生產(chǎn)廠車主:含屬性車主名、地址和電話經(jīng)過(guò)上述改進(jìn),就可以得到本例最終的概念模型。如下圖車 主 名牌號(hào)修 理汽 車汽 車價(jià)格成本零件名

32、零件號(hào)訂貨量最低庫(kù) 存量庫(kù)存量數(shù)量小時(shí)工資進(jìn)廠日期電話地址姓名工號(hào)修理小時(shí)修理項(xiàng)目工號(hào)編號(hào)牌號(hào)出生日期修理單使 用零 件修 理修理工型號(hào)生產(chǎn)廠電話地址送修日期完工日期數(shù)據(jù)庫(kù)的特點(diǎn)之一是數(shù)據(jù)的結(jié)構(gòu)化,即不論一個(gè)數(shù)據(jù)庫(kù)包含多少?gòu)?fù)雜的數(shù)據(jù),它們?cè)谡w上仍服從于一定的結(jié)構(gòu)形式。上圖所示的概念模型,清楚地表明了各個(gè)實(shí)體是怎樣通過(guò)多種形式的聯(lián)系組合在一起的。這反過(guò)來(lái)也表明,用E-R圖來(lái)描述數(shù)據(jù)間存在著的復(fù)雜聯(lián)系的數(shù)據(jù)庫(kù)系統(tǒng),的確是很有效的。3數(shù)據(jù)庫(kù)的實(shí)現(xiàn)設(shè)計(jì)實(shí)現(xiàn)設(shè)計(jì)的任務(wù)是確定數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)。前已提到,數(shù)據(jù)庫(kù)可區(qū)分為關(guān)系、層次和網(wǎng)狀等模型。大多數(shù)微機(jī)DBMS只支持關(guān)系數(shù)據(jù)模型,所以,我們只討論怎樣把概念

33、模型轉(zhuǎn)換為數(shù)據(jù)庫(kù)的關(guān)系模式。關(guān)系規(guī)范化理論是建立關(guān)系模式的指導(dǎo)理論。而模式分解則是優(yōu)化關(guān)系模式時(shí)最常用的一種方法。現(xiàn)結(jié)合上例,分別對(duì)這些理論與方法作簡(jiǎn)要介紹。31 E-R模型向關(guān)系模式的轉(zhuǎn)換在關(guān)系型數(shù)據(jù)庫(kù)中每一數(shù)據(jù)庫(kù)文件表示為一個(gè)關(guān)系。人E-R模型轉(zhuǎn)換為關(guān)系模式,就是將E-R圖中的所有實(shí)體和聯(lián)系都改用關(guān)系來(lái)表示。下面仍以汽車修理管理信息系統(tǒng)為例,說(shuō)明實(shí)現(xiàn)這種的具體步驟。(1) 把每一實(shí)體轉(zhuǎn)換為一個(gè)關(guān)系首先分析實(shí)體的屬性集,從中找出關(guān)系的主鍵,然后用關(guān)系式來(lái)表示實(shí)體。上圖中的5個(gè)實(shí)體可分別轉(zhuǎn)換為下列的5個(gè)關(guān)系。在這些關(guān)系表示式中,下方劃線的屬性表示主鍵。從主鍵出發(fā)的箭頭表示主鍵將決定其它屬性的值

34、,或者說(shuō)其它屬性對(duì)主鍵存在著依賴關(guān)系。實(shí)體名:修理工對(duì)應(yīng)關(guān)系:修理工(工號(hào),姓名,地址,電話,出生年月,進(jìn)廠日期,小時(shí)工資)實(shí)體名:汽車對(duì)應(yīng)關(guān)系:汽車(牌號(hào),型號(hào),生產(chǎn)廠)實(shí)體名:修理單對(duì)應(yīng)的關(guān)系:修理單(編號(hào),牌號(hào),工號(hào),修理項(xiàng)目,修理小時(shí),送修日期,完工日期)實(shí)體名:零件對(duì)應(yīng)的關(guān)系:零件庫(kù)存表:(零件號(hào),零件名,成本,價(jià)格,庫(kù)存量,最小庫(kù)存量,訂貨量)實(shí)體名:車主對(duì)應(yīng)的關(guān)系:車主(車主名,地址,電話)(2) 把每一聯(lián)系也轉(zhuǎn)換為關(guān)系聯(lián)系的情況比較復(fù)雜。例如在E-R模型中,有的聯(lián)系不帶屬性,有的聯(lián)系可能帶一個(gè)或者多個(gè)屬性。在轉(zhuǎn)換成關(guān)系時(shí),在關(guān)系的屬性集中一般應(yīng)包括聯(lián)系本身的屬性;由它所聯(lián)系的各

35、個(gè)實(shí)體的主鍵。以上圖中的三個(gè)聯(lián)系為例,可分別按下述的步驟進(jìn)行轉(zhuǎn)換:聯(lián)系名:使用所聯(lián)系的實(shí)體及其主鍵:修理單(主鍵:編號(hào)),零件(主鍵:零件號(hào))對(duì)應(yīng)的關(guān)系:零件用量表(編號(hào)、零件號(hào),數(shù)量)聯(lián)系名:屬于所聯(lián)系的實(shí)體及其主鍵:汽車(主鍵:牌號(hào)),車主(車主名)對(duì)應(yīng)的關(guān)系:汽車歸屬表(車主名,牌號(hào))一個(gè)車主可能僅送修一輛汽車,也可能送修多輛汽車。有了汽車歸屬表,便可知道哪輛汽車是哪一車主送修的,或某一車主共計(jì)送修了哪幾輛汽車。由于“屬于”本身不帶屬性,所以對(duì)應(yīng)的關(guān)系將僅含兩個(gè)屬性-車主名與牌號(hào)。它們構(gòu)成新關(guān)系的元組,同時(shí)也是新關(guān)系的主鍵。這種由整個(gè)元組構(gòu)成的主鍵,在有些文獻(xiàn)中稱為“全鍵”(all ke

36、y)。聯(lián)系名:修理所聯(lián)系的實(shí)體及其主鍵:修理單(主鍵:編號(hào)),汽車(主鍵:牌號(hào)), 修理工(主鍵:工號(hào))對(duì)應(yīng)的關(guān)系:修理(編號(hào),牌號(hào),工號(hào),修理項(xiàng)目,修理小時(shí),送修日期,完工日期)上述關(guān)系中式中的后面4項(xiàng)都是“修理”本身的屬性。顯然,這一關(guān)系與前面由實(shí)體“修理單”轉(zhuǎn)換得到的關(guān)系是重復(fù)的,只需保留一個(gè)就可以了。綜上可知,從5個(gè)實(shí)體可導(dǎo)出5個(gè)關(guān)系,3個(gè)聯(lián)系可導(dǎo)出3個(gè)關(guān)系,去掉重復(fù)的一個(gè),關(guān)系的總數(shù)為5+3-1=7個(gè)(3) 轉(zhuǎn)換結(jié)果的改進(jìn)上述的結(jié)果仍有改進(jìn)的余地。拿“汽車歸屬表”來(lái)說(shuō),它唯一的作用是建立“汽車”與“車主”的聯(lián)系。如果在“汽車”中附加“車主”的主鍵“車主名”或者在“車主”中附加“汽車”的主鍵“牌號(hào)”都能代替“汽車歸屬表”的作用。造成以上差別的原因是車主與汽車間存在著一對(duì)多(1:M)的聯(lián)系。一個(gè)車主可能送修多輛汽車。把送修汽車的牌號(hào)附加到“車主”中,則送修M輛汽車的車主,其全部屬性就會(huì)重復(fù)出現(xiàn)M次。由此可見(jiàn),對(duì)于存在1:M聯(lián)系的兩個(gè)實(shí)體,應(yīng)將處于“1”端的實(shí)體(本例中為車主)的主屬性附加到處于“M”端的實(shí)體(本例中為汽車)的屬性集中,而不是相反。一般地說(shuō),對(duì)于類似上述情

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論