◆黃 旭 圣文順 李 會(huì)
(南京工業(yè)大學(xué)浦江學(xué)院 江蘇 211222)
在計(jì)算機(jī)軟件開(kāi)發(fā)過(guò)程中,數(shù)據(jù)庫(kù)的設(shè)計(jì)起著尤為重要的作用。以一座高樓大廈為例,一個(gè)不夠堅(jiān)實(shí)可靠地基,絕不能撐起高聳入云的大廈。數(shù)據(jù)庫(kù)設(shè)計(jì)亦是如此。不良的數(shù)據(jù)庫(kù)也不能支撐完美的計(jì)算機(jī)軟件。在數(shù)據(jù)庫(kù)設(shè)計(jì)中往往會(huì)引發(fā)以下幾種問(wèn)題:
(1)與要求不符;
(2)喪失數(shù)據(jù)的完整性;(3)數(shù)據(jù)冗余;
(4)可擴(kuò)展性差;
(5)表與表之間耦合性大。
在計(jì)算機(jī)軟件技術(shù)的支持下數(shù)據(jù)庫(kù)運(yùn)行具備較高的可行性,我們可以著手對(duì)數(shù)據(jù)庫(kù)軟件進(jìn)行開(kāi)發(fā)計(jì)劃的設(shè)計(jì),例如對(duì)數(shù)據(jù)庫(kù)所需的字段,表結(jié)構(gòu)以及數(shù)據(jù)庫(kù)系統(tǒng)的開(kāi)發(fā)員對(duì)及人員構(gòu)成、任務(wù)分配和整個(gè)項(xiàng)目的進(jìn)度、驗(yàn)收標(biāo)準(zhǔn)、驗(yàn)收時(shí)間等進(jìn)行全面的、系統(tǒng)的計(jì)劃。在這個(gè)過(guò)程中,我們一定要基于客戶的數(shù)據(jù)庫(kù)體驗(yàn)為標(biāo)準(zhǔn),進(jìn)而提升數(shù)據(jù)庫(kù)的簡(jiǎn)易度。
數(shù)據(jù)庫(kù)設(shè)計(jì)是計(jì)算機(jī)軟件設(shè)計(jì)的核心部分。在設(shè)計(jì)數(shù)據(jù)庫(kù)時(shí),由于開(kāi)發(fā)人員的不同,因此對(duì)軟件的定義也不同,理解的角度也不同,再加上工程師的知識(shí)水平不同等因素,會(huì)導(dǎo)致數(shù)據(jù)庫(kù)設(shè)計(jì)不能滿足計(jì)算機(jī)軟件的需求。在開(kāi)發(fā)軟件的過(guò)程中,有的設(shè)計(jì)師注重計(jì)算機(jī)軟件的前端設(shè)計(jì)和功能模塊設(shè)計(jì),在一定程度上忽視了數(shù)據(jù)庫(kù)設(shè)計(jì)的重要性,沒(méi)有對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)進(jìn)行綜合行分析。這一疏忽,日后會(huì)導(dǎo)致數(shù)據(jù)庫(kù)使用性能不高,容易出現(xiàn)故障,擴(kuò)展性差等問(wèn)題。這些問(wèn)題的出現(xiàn)無(wú)疑是對(duì)計(jì)算機(jī)軟件應(yīng)用程序致命性的打擊,甚至?xí)斐烧麄€(gè)軟件系統(tǒng)的崩潰。同時(shí)增加了后期的維護(hù)頻率,浪費(fèi)了人力、物力、財(cái)力。
例如,在《學(xué)生學(xué)籍信息管理系統(tǒng)》中,使用存儲(chǔ)過(guò)程來(lái)編碼刪除操作,不僅提高了數(shù)據(jù)庫(kù)的執(zhí)行速度,還減少開(kāi)發(fā)時(shí)的工作量。刪除代碼如下:
create procedure tbAcademy_delete
@AcademyId int, --學(xué)院編號(hào)
@Flag int output --設(shè)置輸出參數(shù)flag
as
begin
declare @RowCount int --定義變量 數(shù)據(jù)庫(kù)中行數(shù)的總數(shù)
set @RowCount = 0 --設(shè)初始值為0
select @RowCount = @RowCount + COUNT(*)
from tbCourseInfo
where AcademyId = @AcademyId
select @RowCount = @RowCount + COUNT(*)
from tbTeacherInfo
where AcademyId = @AcademyId
if @RowCount = 0
begin
delete dbo.tbAcademyInfo
where AcademyId = @AcademyId
set @Flag = 0
end
else
begin
set @Flag = 1
end
end
良好的數(shù)據(jù)庫(kù)對(duì)計(jì)算機(jī)軟件的穩(wěn)定運(yùn)行起著極為重要的作用,因此數(shù)據(jù)庫(kù)設(shè)計(jì)人員在對(duì)某一軟件進(jìn)行設(shè)計(jì)之前,要制定出詳細(xì)且周密的計(jì)劃。可以從以下幾個(gè)方面入手:
(1)對(duì)市場(chǎng)上的客戶需求進(jìn)行調(diào)查確保軟件能滿足客戶的需求;
(2)進(jìn)行問(wèn)卷調(diào)查,站在客戶的角度思考,多與其溝通,確保軟件的設(shè)計(jì)不走歪路;
(3)預(yù)留一定的可擴(kuò)展空間,為日后的業(yè)務(wù)提供擴(kuò)展功能,也防止意外事件的發(fā)生。
為了避免不必要的錯(cuò)誤發(fā)生,在實(shí)際開(kāi)發(fā)過(guò)程中,需要與既定的計(jì)劃保持一致??梢詮囊韵聨讉€(gè)方面考慮:
(1)在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中,明確每一個(gè)設(shè)計(jì)的用途,因?yàn)槊恳粡埍?,每一條字段在軟件設(shè)計(jì)中都有著不可獲缺的作用;
(2)將數(shù)據(jù)庫(kù)設(shè)計(jì)中的對(duì)應(yīng)的某項(xiàng)功能,實(shí)現(xiàn)與計(jì)算機(jī)軟件的功能的對(duì)接;
(3)在建立表的關(guān)系時(shí),要考慮到與應(yīng)用程序一致,把握好整體與局部的關(guān)系,為減少將來(lái)程序出現(xiàn)意外。
立足于整體的角度,全局統(tǒng)觀計(jì)算機(jī)軟件,考慮其使用效率,可以有效地防止軟件使用過(guò)程中的冗余和不足。由于計(jì)算機(jī)的空間是有限的,因此我們?cè)诳疾焓褂眯屎蟛趴梢葬槍?duì)不同的軟件給予相應(yīng)的存儲(chǔ)空間,在進(jìn)行相應(yīng)的設(shè)計(jì)。另外設(shè)計(jì)表時(shí)還要追求高內(nèi)聚,低耦合。例如在設(shè)計(jì)表時(shí),有多張有著復(fù)雜關(guān)系的表,我們可以使用第三張表來(lái)關(guān)聯(lián)和維護(hù)兩張表之間的關(guān)系,降低表之間的耦合度。
為了確保計(jì)算機(jī)軟件的正常使用,我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)時(shí)要遵守一定的設(shè)計(jì)原則。在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中要綜合考慮業(yè)務(wù)需求,明確每一功能的用途。此外,我們還應(yīng)該樹(shù)立長(zhǎng)遠(yuǎn)的意識(shí),預(yù)留一定的空間,為以后擴(kuò)展業(yè)務(wù)所用。