
Visual FoxPro(數(shù)據(jù)庫開發(fā)軟件)
詳情介紹
Visual FoxPro是Microsoft公司推出的數(shù)據(jù)庫開發(fā)軟件,用戶可用它來開發(fā)數(shù)據(jù)庫,既簡(jiǎn)單又方便,它不僅可簡(jiǎn)化數(shù)據(jù)庫管理,而且還可使應(yīng)用程序的開發(fā)流程更為的合理,通過Visual FoxPro 用戶可使組織數(shù)據(jù)、定義數(shù)據(jù)庫規(guī)則和建立應(yīng)用程序等工作變得簡(jiǎn)單易行,且用戶還可利用可視化的設(shè)計(jì)工具和向?qū)砜焖賱?chuàng)建表單、查詢和打印報(bào)表。
與其他同類型的軟件相比,Visual FoxPro 的操作更為的快捷與簡(jiǎn)單,它為用戶提供了菜單操作、命令操作和設(shè)計(jì)器操作三種方式,這三個(gè)都能為用戶實(shí)現(xiàn)同樣的效果,但菜單操作是其中最簡(jiǎn)單,也是最適合新手的操作方式,用戶只需選擇菜單項(xiàng)和定義對(duì)話框中的參數(shù)就可以完成對(duì)數(shù)據(jù)庫的處理功能和Visual FoxPro 的狀態(tài)設(shè)置,同時(shí)用戶還可利用設(shè)計(jì)器創(chuàng)建數(shù)據(jù)庫處理的相應(yīng)文件,該方式采用“所見即所得”的工作方式,可大大降低數(shù)據(jù)庫操作的難度,可以這么說只要用戶有了菜單操作和設(shè)計(jì)器工具即可直接進(jìn)入數(shù)據(jù)處理。
另外,Visual FoxPro 還為用戶提供了一個(gè)集成化的系統(tǒng)開發(fā)環(huán)境,該環(huán)境支持過程式編程技術(shù),而且在語言方面也作出了強(qiáng)大的擴(kuò)充,并支持面向?qū)ο罂梢暬幊碳夹g(shù),及強(qiáng)大的可視化程序設(shè)計(jì)工具。
1.在您的Visual FoxPro配置文件CONFIG.FPW 中,您可以包含需要的SET命令。在CONFIG.FPW 文件中,SET命令的語法是 command=value。例如,如果您想在CONFIG.FPW中設(shè)置默認(rèn)目錄,則可以使用如下命令:DEFAULT=C:\VFP
2.若想改變不能使用SET命令的設(shè)置,您可以在“工具”菜單中選擇“選項(xiàng)”命令。在“選項(xiàng)”對(duì)話框中,您可以改變?nèi)缦略O(shè)置:界面選項(xiàng)-數(shù)據(jù)輸入和編程選項(xiàng)-文本編輯選項(xiàng)-表選項(xiàng)-遠(yuǎn)程數(shù)據(jù)訪問選項(xiàng)-目錄、路徑和文件位置選項(xiàng)-表單設(shè)計(jì)器選項(xiàng)-項(xiàng)目管理器選項(xiàng)-可視類庫和OLE控制選項(xiàng)-日期、時(shí)間格式和數(shù)字格式選項(xiàng)
二、改變Visual FoxPro主窗口的標(biāo)題
1.在您的配置文件CONFIG.FPW中添加TITLE命令,請(qǐng)使用如下語法:TITLE=MyTitle
2.如果您有啟動(dòng)程序,您可以使用如下命令:_SCREEN.Caption=MyTitle
三、在表單上創(chuàng)建數(shù)組屬性
在“表單”菜單中選擇“新屬性”命令,然后輸入數(shù)組名和維數(shù)
1.可以是一對(duì)一、一對(duì)多、多對(duì)多的關(guān)系。在一般情況下,它們是一對(duì)一的關(guān)系:即一張?jiān)紗螕?jù)對(duì)應(yīng)且只對(duì)應(yīng)一個(gè)實(shí)體
2.在特殊情況下,它們可能是一對(duì)多或多對(duì)一的關(guān)系,即一張?jiān)紗巫C對(duì)應(yīng)多個(gè)實(shí)體,或多張?jiān)紗巫C對(duì)應(yīng)一個(gè)實(shí)體
3.這里的實(shí)體可以理解為基本表。明確這種對(duì)應(yīng)關(guān)系后,對(duì)我們?cè)O(shè)計(jì)錄入界面大有好處:
〖例1〗:一份員工履歷資料,在人力資源信息系統(tǒng)中,就對(duì)應(yīng)三個(gè)基本表:?jiǎn)T工基本情況表、社會(huì)關(guān)系表、工作簡(jiǎn)歷表。
這就是“一張?jiān)紗巫C對(duì)應(yīng)多個(gè)實(shí)體”的典型例子
二、主鍵與外鍵
1.一般而言,一個(gè)實(shí)體不能既無主鍵又無外鍵。在E—R 圖中, 處于葉子部位的實(shí)體, 可以定義主鍵,也可以不定義主鍵
2.(因?yàn)樗鼰o子孫), 但必須要有外鍵(因?yàn)樗懈赣H)
3.主鍵與外鍵的設(shè)計(jì),在全局?jǐn)?shù)據(jù)庫的設(shè)計(jì)中,占有重要地位。當(dāng)全局?jǐn)?shù)據(jù)庫的設(shè)計(jì)完成以后,有個(gè)美國數(shù)據(jù)庫設(shè)計(jì)專家說:“鍵,到處都是鍵,除了鍵之外,什么也沒有”,這就是他的數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn)之談,也反映了他對(duì)信息系統(tǒng)核心(數(shù)據(jù)模型)的高度抽象思想。因?yàn)椋褐麈I是實(shí)體的高度抽象,主鍵與外鍵的配對(duì),表示實(shí)體之間的連接
三、基本表的性質(zhì)
基本表與中間表、臨時(shí)表不同,因?yàn)樗哂腥缦滤膫€(gè)特性:
(1) 原子性?;颈碇械淖侄问遣豢稍俜纸獾?br /> (2) 原始性。基本表中的記錄是原始數(shù)據(jù)(基礎(chǔ)數(shù)據(jù))的記錄
(3) 演繹性。由基本表與代碼表中的數(shù)據(jù),可以派生出所有的輸出數(shù)據(jù)
(4) 穩(wěn)定性。基本表的結(jié)構(gòu)是相對(duì)穩(wěn)定的,表中的記錄是要長期保存的
理解基本表的性質(zhì)后,在設(shè)計(jì)數(shù)據(jù)庫時(shí),就能將基本表與中間表、臨時(shí)表區(qū)分開來
四、范式標(biāo)準(zhǔn)
1.基本表及其字段之間的關(guān)系, 應(yīng)盡量滿足第三范式。但是,滿足第三范式的數(shù)據(jù)庫設(shè)計(jì),往往不是最好的設(shè)計(jì)
2.為了提高數(shù)據(jù)庫的運(yùn)行效率,常常需要降低范式標(biāo)準(zhǔn):適當(dāng)增加冗余,達(dá)到以空間換時(shí)間的目的
3.〖例2〗:有一張存放商品的基本表,如表1所示?!敖痤~”這個(gè)字段的存在,表明該表的設(shè)計(jì)不滿足第三范式,因?yàn)椤敖痤~”可以由“單價(jià)”乘以“數(shù)量”得到,說明“金額”是冗余字段。但是,增加“金額”這個(gè)冗余字段,可以提高查詢統(tǒng)計(jì)的速度,這就是以空間換時(shí)間的作法。在Rose 2002中,規(guī)定列有兩種類型:數(shù)據(jù)列和計(jì)算列?!敖痤~”這樣的列被稱為“計(jì)算列”,而“單價(jià)”和“數(shù)量”這樣的列被稱為“數(shù)據(jù)列”。
表1 商品表的表結(jié)構(gòu)
商品名稱 商品型號(hào) 單價(jià) 數(shù)量 金額
電視機(jī) 29吋 2,500 40 100,000
五、通俗地理解三個(gè)范式
通俗地理解三個(gè)范式,對(duì)于數(shù)據(jù)庫設(shè)計(jì)大有好處。在數(shù)據(jù)庫設(shè)計(jì)中,為了更好地應(yīng)用三個(gè)范式,就必須通俗地理解三個(gè)范式(通俗地理解是夠用的理解,并不是最科學(xué)最準(zhǔn)確的理解):
1.第一范式:1NF是對(duì)屬性的原子性約束,要求屬性具有原子性,不可再分解
2.第二范式:2NF是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即實(shí)體的惟一性
3.第三范式:3NF是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余
沒有冗余的數(shù)據(jù)庫設(shè)計(jì)可以做到。但是,沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時(shí)為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是:在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時(shí)考慮。降低范式就是增加字段,允許冗余
六、要善于識(shí)別與正確處理多對(duì)多的關(guān)系
若兩個(gè)實(shí)體之間存在多對(duì)多的關(guān)系,則應(yīng)消除這種關(guān)系。消除的辦法是,在兩者之間增加第三個(gè)實(shí)體。這樣,原來一個(gè)多對(duì)多的關(guān)系,現(xiàn)在變?yōu)閮蓚€(gè)一對(duì)多的關(guān)系。要將原來兩個(gè)實(shí)體的屬性合理地分配到三個(gè)實(shí)體中去。這里的第三個(gè)實(shí)體,實(shí)質(zhì)上是一個(gè)較復(fù)雜的關(guān)系,它對(duì)應(yīng)一張基本表。一般來講,數(shù)據(jù)庫設(shè)計(jì)工具不能識(shí)別多對(duì)多的關(guān)系,但能處理多對(duì)多的關(guān)系
〖例3〗:在“圖書館信息系統(tǒng)”中,“圖書”是一個(gè)實(shí)體,“讀者”也是一個(gè)實(shí)體。這兩個(gè)實(shí)體之間的關(guān)系,是一個(gè)典型的多對(duì)多關(guān)系:一本圖書在不同時(shí)間可以被多個(gè)讀者借閱,一個(gè)讀者又可以借多本圖書。為此,要在二者之間增加第三個(gè)實(shí)體,該實(shí)體取名為“借還書”,它的屬性為:借還時(shí)間、借還標(biāo)志(0表示借書,1表示還書),另外,還應(yīng)該有兩個(gè)外鍵(“圖書”的主鍵,“讀者”的主鍵),使它能與“圖書”和“讀者”連接
七、主鍵PK的取值方法
PK是供程序員使用的表間連接工具,可以是一無物理意義的數(shù)字串, 由程序自動(dòng)加1來實(shí)現(xiàn)。也可以是有物理意義的字段名或字段名的組合。不過前者比后者好。當(dāng)PK是字段名的組合時(shí),建議字段的個(gè)數(shù)不要太多,多了不但索引占用空間大,而且速度也慢
八、正確認(rèn)識(shí)數(shù)據(jù)冗余
主鍵與外鍵在多表中的重復(fù)出現(xiàn), 不屬于數(shù)據(jù)冗余,這個(gè)概念必須清楚,事實(shí)上有許多人還不清楚。非鍵字段的重復(fù)出現(xiàn), 才是數(shù)據(jù)冗余!而且是一種低級(jí)冗余,即重復(fù)性的冗余。高級(jí)冗余不是字段的重復(fù)出現(xiàn),而是字段的派生出現(xiàn)。
〖例4〗:商品中的“單價(jià)、數(shù)量、金額”三個(gè)字段,“金額”就是由“單價(jià)”乘以“數(shù)量”派生出來的,它就是冗余,而且是一種高級(jí)冗余。冗余的目的是為了提高處理速度。只有低級(jí)冗余才會(huì)增加數(shù)據(jù)的不一致性,因?yàn)橥粩?shù)據(jù),可能從不同時(shí)間、地點(diǎn)、角色上多次錄入。因此,我們提倡高級(jí)冗余(派生性冗余),反對(duì)低級(jí)冗余(重復(fù)性冗余)
九、E--R圖沒有標(biāo)準(zhǔn)答案
信息系統(tǒng)的E--R圖沒有標(biāo)準(zhǔn)答案,因?yàn)樗脑O(shè)計(jì)與畫法不是惟一的,只要它覆蓋了系統(tǒng)需求的業(yè)務(wù)范圍和功能內(nèi)容,就是可行的。反之要修改E--R圖。盡管它沒有惟一的標(biāo)準(zhǔn)答案,并不意味著可以隨意設(shè)計(jì)。好的E—R圖的標(biāo)準(zhǔn)是:結(jié)構(gòu)清晰、關(guān)聯(lián)簡(jiǎn)潔、實(shí)體個(gè)數(shù)適中、屬性分配合理、沒有低級(jí)冗余
十、視圖技術(shù)在數(shù)據(jù)庫設(shè)計(jì)中很有用
1.與基本表、代碼表、中間表不同,視圖是一種虛表,它依賴數(shù)據(jù)源的實(shí)表而存在。視圖是供程序員使用數(shù)據(jù)庫的一個(gè)窗口,是基表數(shù)據(jù)綜合的一種形式, 是數(shù)據(jù)處理的一種方法,是用戶數(shù)據(jù)保密的一種手段。為了進(jìn)行復(fù)雜處理、提高運(yùn)算速度和節(jié)省存儲(chǔ)空間, 視圖的定義深度一般不得超過三層。 若三層視圖仍不夠用, 則應(yīng)在視圖上定義臨時(shí)表,在臨時(shí)表上再定義視圖。這樣反復(fù)交迭定義, 視圖的深度就不受限制了。
2.對(duì)于某些與國家政治、經(jīng)濟(jì)、技術(shù)、軍事和安全利益有關(guān)的信息系統(tǒng),視圖的作用更加重要。這些系統(tǒng)的基本表完成物理設(shè)計(jì)之后,立即在基本表上建立第一層視圖,這層視圖的個(gè)數(shù)和結(jié)構(gòu),與基本表的個(gè)數(shù)和結(jié)構(gòu)是完全相同。并且規(guī)定,所有的程序員,一律只準(zhǔn)在視圖上操作。只有數(shù)據(jù)庫管理員,帶著多個(gè)人員共同掌握的“安全鑰匙”,才能直接在基本表上操作。請(qǐng)讀者想想:這是為什么?
十一、中間表、報(bào)表和臨時(shí)表
中間表是存放統(tǒng)計(jì)數(shù)據(jù)的表,它是為數(shù)據(jù)倉庫、輸出報(bào)表或查詢結(jié)果而設(shè)計(jì)的,有時(shí)它沒有主鍵與外鍵(數(shù)據(jù)倉庫除外)。臨時(shí)表是程序員個(gè)人設(shè)計(jì)的,存放臨時(shí)記錄,為個(gè)人所用。基表和中間表由DBA維護(hù),臨時(shí)表由程序員自己用程序自動(dòng)維護(hù)。
十二、完整性約束表現(xiàn)在三個(gè)方面
域的完整性:用Check來實(shí)現(xiàn)約束,在數(shù)據(jù)庫設(shè)計(jì)工具中,對(duì)字段的取值范圍進(jìn)行定義時(shí),有一個(gè)Check按鈕,通過它定義字段的值城。參照完整性:用PK、FK、表級(jí)觸發(fā)器來實(shí)現(xiàn)。用戶定義完整性:它是一些業(yè)務(wù)規(guī)則,用存儲(chǔ)過程和觸發(fā)器來實(shí)現(xiàn)。
十三、防止數(shù)據(jù)庫設(shè)計(jì)打補(bǔ)丁的方法是“三少原則”
(1) 一個(gè)數(shù)據(jù)庫中表的個(gè)數(shù)越少越好。只有表的個(gè)數(shù)少了,才能說明系統(tǒng)的E--R圖少而精,去掉了重復(fù)的多余的實(shí)體,形成了對(duì)客觀世界的高度抽象,進(jìn)行了系統(tǒng)的數(shù)據(jù)集成,防止了打補(bǔ)丁式的設(shè)計(jì);
(2) 一個(gè)表中組合主鍵的字段個(gè)數(shù)越少越好。因?yàn)橹麈I的作用,一是建主鍵索引,二是做為子表的外鍵,所以組合主鍵的字段個(gè)數(shù)少了,不僅節(jié)省了運(yùn)行時(shí)間,而且節(jié)省了索引存儲(chǔ)空間;
(3) 一個(gè)表中的字段個(gè)數(shù)越少越好。只有字段的個(gè)數(shù)少了,才能說明在系統(tǒng)中不存在數(shù)據(jù)重復(fù),且很少有數(shù)據(jù)冗余,更重要的是督促讀者學(xué)會(huì)“列變行”,這樣就防止了將子表中的字段拉入到主表中去,在主表中留下許多空余的字段。所謂“列變行”,就是將主表中的一部分內(nèi)容拉出去,另外單獨(dú)建一個(gè)子表。這個(gè)方法很簡(jiǎn)單,有的人就是不習(xí)慣、不采納、不執(zhí)行。數(shù)據(jù)庫設(shè)計(jì)的實(shí)用原則是:在數(shù)據(jù)冗余和處理速度之間找到合適的平衡點(diǎn)。“三少”是一個(gè)整體概念,綜合觀點(diǎn),不能孤立某一個(gè)原則。該原則是相對(duì)的,不是絕對(duì)的?!叭唷痹瓌t肯定是錯(cuò)誤的。試想:若覆蓋系統(tǒng)同樣的功能,一百個(gè)實(shí)體(共一千個(gè)屬性) 的E--R圖,肯定比二百個(gè)實(shí)體(共二千個(gè)屬性) 的E--R圖,要好得多。提倡“三少”原則,是叫讀者學(xué)會(huì)利用數(shù)據(jù)庫設(shè)計(jì)技術(shù)進(jìn)行系統(tǒng)的數(shù)據(jù)集成。數(shù)據(jù)集成的步驟是將文件系統(tǒng)集成為應(yīng)用數(shù)據(jù)庫,將應(yīng)用數(shù)據(jù)庫集成為主題數(shù)據(jù)庫,將主題數(shù)據(jù)庫集成為全局綜合數(shù)據(jù)庫。集成的程度越高,數(shù)據(jù)共享性就越強(qiáng),信息孤島現(xiàn)象就越少,整個(gè)企業(yè)信息系統(tǒng)的全局E—R圖中實(shí)體的個(gè)數(shù)、主鍵的個(gè)數(shù)、屬性的個(gè)數(shù)就會(huì)越少。
提倡“三少”原則的目的,是防止讀者利用打補(bǔ)丁技術(shù),不斷地對(duì)數(shù)據(jù)庫進(jìn)行增刪改,使企業(yè)數(shù)據(jù)庫變成了隨意設(shè)計(jì)數(shù)據(jù)庫表的“垃圾堆”,或數(shù)據(jù)庫表的“大雜院”,最后造成數(shù)據(jù)庫中的基本表、代碼表、中間表、臨時(shí)表雜亂無章,不計(jì)其數(shù),導(dǎo)致企事業(yè)單位的信息系統(tǒng)無法維護(hù)而癱瘓?!叭唷痹瓌t任何人都可以做到,該原則是“打補(bǔ)丁方法”設(shè)計(jì)數(shù)據(jù)庫的歪理學(xué)說?!叭佟痹瓌t是少而精的原則,它要求有較高的數(shù)據(jù)庫設(shè)計(jì)技巧與藝術(shù),不是任何人都能做到的,因?yàn)樵撛瓌t是杜絕用“打補(bǔ)丁方法”設(shè)計(jì)數(shù)據(jù)庫的理論依據(jù)。
十四、 提高數(shù)據(jù)庫運(yùn)行效率的辦法
在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫系統(tǒng)的運(yùn)行效率的辦法是:
(1) 在數(shù)據(jù)庫物理設(shè)計(jì)時(shí),降低范式,增加冗余, 少用觸發(fā)器, 多用存儲(chǔ)過程。
(2) 當(dāng)計(jì)算非常復(fù)雜、而且記錄條數(shù)非常巨大時(shí)(例如一千萬條),復(fù)雜計(jì)算要先在數(shù)據(jù)庫外面,以文件系統(tǒng)方式用C++語言計(jì)算處理完成之后,最后才入庫追加到表中去。這是電信計(jì)費(fèi)系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn)。
(3) 發(fā)現(xiàn)某個(gè)表的記錄太多,例如超過一千萬條,則要對(duì)該表進(jìn)行水平分割。水平分割的做法是,以該表主鍵PK的某個(gè)值為界線,將該表的記錄水平分割為兩個(gè)表。若發(fā)現(xiàn)某個(gè)表的字段太多,例如超過八十個(gè),則垂直分割該表,將原來的一個(gè)表分解為兩個(gè)表。
(4) 對(duì)數(shù)據(jù)庫管理系統(tǒng)DBMS進(jìn)行系統(tǒng)優(yōu)化,即優(yōu)化各種系統(tǒng)參數(shù),如緩沖區(qū)個(gè)數(shù)。
(5) 在使用面向數(shù)據(jù)的SQL語言進(jìn)行程序設(shè)計(jì)時(shí),盡量采取優(yōu)化算法。
總之,要提高數(shù)據(jù)庫的運(yùn)行效率,必須從數(shù)據(jù)庫系統(tǒng)級(jí)優(yōu)化、數(shù)據(jù)庫設(shè)計(jì)級(jí)優(yōu)化、程序?qū)崿F(xiàn)級(jí)優(yōu)化,這三個(gè)層次上同時(shí)下功夫。
在Visual FoxPro 中可以借助“項(xiàng)目管理器”創(chuàng)建和集中管理應(yīng)用程序中的任何元素;可以訪問所有向?qū)?、生成器、工具欄和其他易于使用的工?br /> 二、提高應(yīng)用程序開發(fā)的效率
Visual FoxPro 增加了面向?qū)ο蟮恼Z言和方式,借助Visual FoxPro 的對(duì)象模型,可以充分使用面向?qū)ο蟪绦蛟O(shè)計(jì)的所有功能
三、互操作性和支持Internet
Visual FoxPro 支持具有對(duì)象的鏈接與嵌入(OLE)拖放,可以在Visual FoxPro 和其他應(yīng)用程序之間,或在Visual FoxPro 應(yīng)用程序內(nèi)部移動(dòng)數(shù)據(jù)
四、充分利用已有數(shù)據(jù)
Visual FoxPro 為升級(jí)數(shù)據(jù)庫提供了一個(gè)方便實(shí)用的轉(zhuǎn)換器工具,可以將早期版本中的數(shù)據(jù)移植過來使用;對(duì)于電子表格或文本文件中的數(shù)據(jù),也可以方便的實(shí)現(xiàn)數(shù)據(jù)共享
五、全新的操作方式
在操作方式上提供了菜單操作、命令操作和設(shè)計(jì)器操作三種方式,它們都能達(dá)到相同的效果:
1.菜單操作是最簡(jiǎn)單的一種,用戶只須選擇菜單欄中的菜單項(xiàng)和定義對(duì)話框中的參數(shù)就可以完成對(duì)數(shù)據(jù)庫的處理功能和Visual FoxPro 的狀態(tài)設(shè)置
2.通過設(shè)計(jì)器創(chuàng)建數(shù)據(jù)庫處理的相應(yīng)文件,這是可視化的工作方式,所見格式即所得,大大降低了數(shù)據(jù)庫操作的難度
3.對(duì)于最終用戶來說,有了菜單操作和設(shè)計(jì)器工具,可以直接進(jìn)行數(shù)據(jù)處理
六、新的操作
它的語句、函數(shù)和語法規(guī)則與Xbase(如dBASE、FoxBase、FoxPro)語言基本上是兼容的,而且功能更加強(qiáng)大
七、新的關(guān)系數(shù)據(jù)庫系統(tǒng)
新一代小型數(shù)據(jù)庫管理系統(tǒng)的杰出代表,它以強(qiáng)大的性能、完整而又豐富的工具、極高的處理速度、友好的界面以及完備的兼容性等特點(diǎn),備受廣大用戶的歡迎
八、集成化的系統(tǒng)開發(fā)環(huán)境
它不僅支持過程式編程技術(shù),而且在語言方面作了強(qiáng)大的擴(kuò)充,支持面向?qū)ο罂梢暬幊碳夹g(shù),并擁有功能強(qiáng)大的可視化程序設(shè)計(jì)工具,目前,Visual FoxPro 是用戶收集信息、查詢數(shù)據(jù)、創(chuàng)建集成數(shù)據(jù)庫系統(tǒng)、進(jìn)行實(shí)用系統(tǒng)開發(fā)較為理想的工具軟件
3、成功解決了計(jì)算機(jī)2000年的問題
4、增強(qiáng)了Internet技術(shù)和WWW數(shù)據(jù)庫的設(shè)計(jì)
5、ctiveX 和向?qū)?、生成器及控件等集成化工?br /> 6、新引入了網(wǎng)絡(luò)圖象文件格式:gif和jpeg
一、成立數(shù)據(jù)小組
大型數(shù)據(jù)庫數(shù)據(jù)元素多,在設(shè)計(jì)上有必要成立專門的數(shù)據(jù)小組。由于數(shù)據(jù)庫設(shè)計(jì)者不一定是使用者,對(duì)系統(tǒng)設(shè)計(jì)中的數(shù)據(jù)元素不可能考慮周全,數(shù)據(jù)庫設(shè)計(jì)出來后,往往難以找到所需的庫表,因此數(shù)據(jù)小組最好由熟悉業(yè)務(wù)的項(xiàng)目骨干組成。
數(shù)據(jù)小組的職能并非是設(shè)計(jì)數(shù)據(jù)庫,而是通過需求分析,在參考其他相似系統(tǒng)的基礎(chǔ)上,提取系統(tǒng)的基本數(shù)據(jù)元素,擔(dān)負(fù)對(duì)數(shù)據(jù)庫的審核。審核內(nèi)容包括審核新的數(shù)據(jù)庫元素是否完全、能否實(shí)現(xiàn)全部業(yè)務(wù)需求;對(duì)舊數(shù)據(jù)庫(如果存在舊系統(tǒng))的分析及數(shù)據(jù)轉(zhuǎn)換;數(shù)據(jù)庫設(shè)計(jì)的審核、控制及必要調(diào)整。
二、設(shè)計(jì)原則
1.規(guī)范命名。所有的庫名、表名、域名必須遵循統(tǒng)一的命名規(guī)則,并進(jìn)行必要說明,以方便設(shè)計(jì)、維護(hù)、查詢。
2.控制字段的引用。在設(shè)計(jì)時(shí),可以選擇適當(dāng)?shù)臄?shù)據(jù)庫設(shè)計(jì)管理工具,以方便開發(fā)人員的分布式設(shè)計(jì)和數(shù)據(jù)小組的集中審核管理。采用統(tǒng)一的命名規(guī)則,如果設(shè)計(jì)的字段已經(jīng)存在,可直接引用;否則,應(yīng)重新設(shè)計(jì)。
3.庫表重復(fù)控制。在設(shè)計(jì)過程中,如果發(fā)現(xiàn)大部分字段都已存在,開發(fā)人員應(yīng)懷疑所設(shè)計(jì)的庫表是否已存在。通過對(duì)字段所在庫表及相應(yīng)設(shè)計(jì)人員的查詢,可以確認(rèn)庫表是否確實(shí)重復(fù)。
4.并發(fā)控制。設(shè)計(jì)中應(yīng)進(jìn)行并發(fā)控制,即對(duì)于同一個(gè)庫表,在同一時(shí)間只有一個(gè)人有控制權(quán),其他人只能進(jìn)行查詢。
5.必要的討論。數(shù)據(jù)庫設(shè)計(jì)完成后,數(shù)據(jù)小組應(yīng)與相關(guān)人員進(jìn)行討論,通過討論來熟悉數(shù)據(jù)庫,從而對(duì)設(shè)計(jì)中存在的問題進(jìn)行控制或從中獲取數(shù)據(jù)庫設(shè)計(jì)的必要信息。
6.數(shù)據(jù)小組的審核。庫表的定版、修改最終都要通過數(shù)據(jù)小組的審核,以保證符合必要的要求。
7.頭文件處理。每次數(shù)據(jù)修改后,數(shù)據(jù)小組要對(duì)相應(yīng)的頭文件進(jìn)行修改(可由管理軟件自動(dòng)完成),并通知相關(guān)的開發(fā)人員,以便進(jìn)行相應(yīng)的程序修改。
三、設(shè)計(jì)技巧
1.分類拆分?jǐn)?shù)據(jù)量大的表。對(duì)于經(jīng)常使用的表(如某些參數(shù)表或代碼對(duì)照表),由于其使用頻率很高,要盡量減少表中的記錄數(shù)量。例如,銀行的戶主賬表原來設(shè)計(jì)成一張表,雖然可以方便程序的設(shè)計(jì)與維護(hù),但經(jīng)過分析發(fā)現(xiàn),由于數(shù)據(jù)量太大,會(huì)影響數(shù)據(jù)的迅速定位。如果將戶主賬表分別設(shè)計(jì)為活期戶主賬、定期戶主賬及對(duì)公戶主賬等,則可以大大提高查詢效率。
2.索引設(shè)計(jì)。對(duì)于大的數(shù)據(jù)庫表,合理的索引能夠提高整個(gè)數(shù)據(jù)庫的操作效率。在索引設(shè)計(jì)中,索引字段應(yīng)挑選重復(fù)值較少的字段;在對(duì)建有復(fù)合索引的字段進(jìn)行檢索時(shí),應(yīng)注意按照復(fù)合索引字段建立的順序進(jìn)行。例如,如果對(duì)一個(gè)5萬多條記錄的流水表以日期和流水號(hào)為序建立復(fù)合索引,由于在該表中日期的重復(fù)值接近整個(gè)表的記錄數(shù),用流水號(hào)進(jìn)行查詢所用的時(shí)間接近3秒;而如果以流水號(hào)為索引字段建立索引進(jìn)行相同的查詢,所用時(shí)間不到1秒。因此在大型數(shù)據(jù)庫設(shè)計(jì)中,只有進(jìn)行合理的索引字段選擇,才能有效提高整個(gè)數(shù)據(jù)庫的操作效率。
3.數(shù)據(jù)操作的優(yōu)化。在大型數(shù)據(jù)庫中,如何提高數(shù)據(jù)操作效率值得關(guān)注。例如,每在數(shù)據(jù)庫流水表中增加一筆業(yè)務(wù),就必須從流水控制表中取出流水號(hào),并將其流水號(hào)的數(shù)值加一。正常情況下,單筆操作的反應(yīng)速度尚屬正常,但當(dāng)用它進(jìn)行批量業(yè)務(wù)處理時(shí),速度會(huì)明顯減慢。經(jīng)過分析發(fā)現(xiàn),每次對(duì)流水控制表中的流水號(hào)數(shù)值加一時(shí)都要鎖定該表,而該表卻是整個(gè)系統(tǒng)操作的核心,有可能在操作時(shí)被其他進(jìn)程鎖定,因而使整個(gè)事務(wù)操作速度變慢。對(duì)這一問題的解決的辦法是,根據(jù)批量業(yè)務(wù)的總筆數(shù)批量申請(qǐng)流水號(hào),并對(duì)流水控制表進(jìn)行一次更新,即可提高批量業(yè)務(wù)處理的速度。另一個(gè)例子是對(duì)插表的優(yōu)化。對(duì)于大批量的業(yè)務(wù)處理,如果在插入數(shù)據(jù)庫表時(shí)用普通的Insert語句,速度會(huì)很慢。其原因在于,每次插表都要進(jìn)行一次I/O操作,花費(fèi)較長的時(shí)間。改進(jìn)后,可以用Put語句等緩沖區(qū)形式等滿頁后再進(jìn)行I/O操作,從而提高效率。對(duì)大的數(shù)據(jù)庫表進(jìn)行刪除時(shí),一般會(huì)直接用Delete語句,這個(gè)語句雖然可以進(jìn)行小表操作,但對(duì)大表卻會(huì)因帶來大事務(wù)而導(dǎo)致刪除速度很慢甚至失敗。解決的方法是去掉事務(wù),但更有效的辦法是先進(jìn)行Drop操作再進(jìn)行重建。
Visual FoxPro 現(xiàn)在認(rèn)為數(shù)據(jù)庫是表的容器,而不將單個(gè)的表看作數(shù)據(jù)庫。Visual FoxPro 數(shù)據(jù)庫 (.DBC) 使得“數(shù)據(jù)庫”菜單上的選項(xiàng)過時(shí)。因?yàn)椤斑\(yùn)行”菜單中的選項(xiàng)被去掉或被放在其他菜單上,所以 Visual FoxPro 去掉了“運(yùn)行”菜單
二、如何找到 Visual FoxPro 系統(tǒng)工具欄列表?
在“查看”菜單中選擇“工具欄”命令,您可以看到可用的系統(tǒng)工具欄列表。在“工具欄”對(duì)話框中選擇一個(gè)工具欄,然后單擊“定制”按鈕,您可以定制一個(gè)工具欄
三、當(dāng)關(guān)閉項(xiàng)目管理器窗口,使之成為工具欄后,如何恢復(fù)原來的窗口?
用鼠標(biāo)單擊選項(xiàng)卡上矩形區(qū)域。將項(xiàng)目管理器拖到 Visual FoxPro 主窗口,然后釋放
四、單擊鼠標(biāo)右鍵后,為何會(huì)出現(xiàn)一個(gè)菜單?
單擊鼠標(biāo)右鍵可以彈出一個(gè)對(duì)環(huán)境敏感的快捷菜單。也就是說,如果鼠標(biāo)指在一個(gè)對(duì)象上,單擊右鍵會(huì)彈出一個(gè)菜單,它包含能用來操作該對(duì)象的選項(xiàng)
五、打開多個(gè)窗口和工具欄時(shí),怎樣才能避免雜亂?
您有如下幾個(gè)選擇:您可以在屏幕的上部和邊緣停放工具欄。您可以按下 CTRL+F1 激活每個(gè)窗口,找到想要的窗口。您可以在“窗口”菜單中使用窗口列表,選擇想激活的窗口。您可以重新放置和調(diào)整各個(gè)窗口
六、當(dāng)創(chuàng)建一個(gè)控制的子類時(shí),想為按鈕的單擊事件添加代碼,還想執(zhí)行父類的代碼。怎辦?
在單擊事件中,在添加任何新代碼之前添加 objectname::click。這樣,Visual FoxPro 就執(zhí)行父類的單擊事件,接下來運(yùn)行您添加的代碼
七、有一個(gè)按鈕位于表單上,當(dāng)創(chuàng)建一個(gè)基于按鈕的類時(shí),怎樣引用表單屬性?
您可以使用 THISFORM、THIS.PARENT 或 THISFORMSET 對(duì)象引用。例如: ThisForm.Caption="MYCAPTION"
八、定義一個(gè)類之后,怎樣擊活或訪問對(duì)象?
基于類可以創(chuàng)建對(duì)象。類就象房子的藍(lán)圖或者電話的電路圖,藍(lán)圖和電路圖簡(jiǎn)單地勾勒出房子和電話的特點(diǎn)和功能。您不能激活類,必須使用 CREATEOBJECT( ) 命令從一個(gè)類創(chuàng)建對(duì)象,然后可以顯示對(duì)象。有關(guān)詳細(xì)信息,請(qǐng)參閱“幫助”中的 CREATEOBJECT( ) 主題
與其他同類型的軟件相比,Visual FoxPro 的操作更為的快捷與簡(jiǎn)單,它為用戶提供了菜單操作、命令操作和設(shè)計(jì)器操作三種方式,這三個(gè)都能為用戶實(shí)現(xiàn)同樣的效果,但菜單操作是其中最簡(jiǎn)單,也是最適合新手的操作方式,用戶只需選擇菜單項(xiàng)和定義對(duì)話框中的參數(shù)就可以完成對(duì)數(shù)據(jù)庫的處理功能和Visual FoxPro 的狀態(tài)設(shè)置,同時(shí)用戶還可利用設(shè)計(jì)器創(chuàng)建數(shù)據(jù)庫處理的相應(yīng)文件,該方式采用“所見即所得”的工作方式,可大大降低數(shù)據(jù)庫操作的難度,可以這么說只要用戶有了菜單操作和設(shè)計(jì)器工具即可直接進(jìn)入數(shù)據(jù)處理。
另外,Visual FoxPro 還為用戶提供了一個(gè)集成化的系統(tǒng)開發(fā)環(huán)境,該環(huán)境支持過程式編程技術(shù),而且在語言方面也作出了強(qiáng)大的擴(kuò)充,并支持面向?qū)ο罂梢暬幊碳夹g(shù),及強(qiáng)大的可視化程序設(shè)計(jì)工具。

Visual FoxPro使用教程
一、在Visual FoxPro環(huán)境中設(shè)置所需的默認(rèn)值1.在您的Visual FoxPro配置文件CONFIG.FPW 中,您可以包含需要的SET命令。在CONFIG.FPW 文件中,SET命令的語法是 command=value。例如,如果您想在CONFIG.FPW中設(shè)置默認(rèn)目錄,則可以使用如下命令:DEFAULT=C:\VFP
2.若想改變不能使用SET命令的設(shè)置,您可以在“工具”菜單中選擇“選項(xiàng)”命令。在“選項(xiàng)”對(duì)話框中,您可以改變?nèi)缦略O(shè)置:界面選項(xiàng)-數(shù)據(jù)輸入和編程選項(xiàng)-文本編輯選項(xiàng)-表選項(xiàng)-遠(yuǎn)程數(shù)據(jù)訪問選項(xiàng)-目錄、路徑和文件位置選項(xiàng)-表單設(shè)計(jì)器選項(xiàng)-項(xiàng)目管理器選項(xiàng)-可視類庫和OLE控制選項(xiàng)-日期、時(shí)間格式和數(shù)字格式選項(xiàng)
二、改變Visual FoxPro主窗口的標(biāo)題
1.在您的配置文件CONFIG.FPW中添加TITLE命令,請(qǐng)使用如下語法:TITLE=MyTitle
2.如果您有啟動(dòng)程序,您可以使用如下命令:_SCREEN.Caption=MyTitle
三、在表單上創(chuàng)建數(shù)組屬性
在“表單”菜單中選擇“新屬性”命令,然后輸入數(shù)組名和維數(shù)
數(shù)據(jù)庫設(shè)計(jì)十四個(gè)技巧
一、原始單據(jù)與實(shí)體之間的關(guān)系1.可以是一對(duì)一、一對(duì)多、多對(duì)多的關(guān)系。在一般情況下,它們是一對(duì)一的關(guān)系:即一張?jiān)紗螕?jù)對(duì)應(yīng)且只對(duì)應(yīng)一個(gè)實(shí)體
2.在特殊情況下,它們可能是一對(duì)多或多對(duì)一的關(guān)系,即一張?jiān)紗巫C對(duì)應(yīng)多個(gè)實(shí)體,或多張?jiān)紗巫C對(duì)應(yīng)一個(gè)實(shí)體
3.這里的實(shí)體可以理解為基本表。明確這種對(duì)應(yīng)關(guān)系后,對(duì)我們?cè)O(shè)計(jì)錄入界面大有好處:
〖例1〗:一份員工履歷資料,在人力資源信息系統(tǒng)中,就對(duì)應(yīng)三個(gè)基本表:?jiǎn)T工基本情況表、社會(huì)關(guān)系表、工作簡(jiǎn)歷表。
這就是“一張?jiān)紗巫C對(duì)應(yīng)多個(gè)實(shí)體”的典型例子
二、主鍵與外鍵
1.一般而言,一個(gè)實(shí)體不能既無主鍵又無外鍵。在E—R 圖中, 處于葉子部位的實(shí)體, 可以定義主鍵,也可以不定義主鍵
2.(因?yàn)樗鼰o子孫), 但必須要有外鍵(因?yàn)樗懈赣H)
3.主鍵與外鍵的設(shè)計(jì),在全局?jǐn)?shù)據(jù)庫的設(shè)計(jì)中,占有重要地位。當(dāng)全局?jǐn)?shù)據(jù)庫的設(shè)計(jì)完成以后,有個(gè)美國數(shù)據(jù)庫設(shè)計(jì)專家說:“鍵,到處都是鍵,除了鍵之外,什么也沒有”,這就是他的數(shù)據(jù)庫設(shè)計(jì)經(jīng)驗(yàn)之談,也反映了他對(duì)信息系統(tǒng)核心(數(shù)據(jù)模型)的高度抽象思想。因?yàn)椋褐麈I是實(shí)體的高度抽象,主鍵與外鍵的配對(duì),表示實(shí)體之間的連接
三、基本表的性質(zhì)
基本表與中間表、臨時(shí)表不同,因?yàn)樗哂腥缦滤膫€(gè)特性:
(1) 原子性?;颈碇械淖侄问遣豢稍俜纸獾?br /> (2) 原始性。基本表中的記錄是原始數(shù)據(jù)(基礎(chǔ)數(shù)據(jù))的記錄
(3) 演繹性。由基本表與代碼表中的數(shù)據(jù),可以派生出所有的輸出數(shù)據(jù)
(4) 穩(wěn)定性。基本表的結(jié)構(gòu)是相對(duì)穩(wěn)定的,表中的記錄是要長期保存的
理解基本表的性質(zhì)后,在設(shè)計(jì)數(shù)據(jù)庫時(shí),就能將基本表與中間表、臨時(shí)表區(qū)分開來
四、范式標(biāo)準(zhǔn)
1.基本表及其字段之間的關(guān)系, 應(yīng)盡量滿足第三范式。但是,滿足第三范式的數(shù)據(jù)庫設(shè)計(jì),往往不是最好的設(shè)計(jì)
2.為了提高數(shù)據(jù)庫的運(yùn)行效率,常常需要降低范式標(biāo)準(zhǔn):適當(dāng)增加冗余,達(dá)到以空間換時(shí)間的目的
3.〖例2〗:有一張存放商品的基本表,如表1所示?!敖痤~”這個(gè)字段的存在,表明該表的設(shè)計(jì)不滿足第三范式,因?yàn)椤敖痤~”可以由“單價(jià)”乘以“數(shù)量”得到,說明“金額”是冗余字段。但是,增加“金額”這個(gè)冗余字段,可以提高查詢統(tǒng)計(jì)的速度,這就是以空間換時(shí)間的作法。在Rose 2002中,規(guī)定列有兩種類型:數(shù)據(jù)列和計(jì)算列?!敖痤~”這樣的列被稱為“計(jì)算列”,而“單價(jià)”和“數(shù)量”這樣的列被稱為“數(shù)據(jù)列”。
表1 商品表的表結(jié)構(gòu)
商品名稱 商品型號(hào) 單價(jià) 數(shù)量 金額
電視機(jī) 29吋 2,500 40 100,000
五、通俗地理解三個(gè)范式
通俗地理解三個(gè)范式,對(duì)于數(shù)據(jù)庫設(shè)計(jì)大有好處。在數(shù)據(jù)庫設(shè)計(jì)中,為了更好地應(yīng)用三個(gè)范式,就必須通俗地理解三個(gè)范式(通俗地理解是夠用的理解,并不是最科學(xué)最準(zhǔn)確的理解):
1.第一范式:1NF是對(duì)屬性的原子性約束,要求屬性具有原子性,不可再分解
2.第二范式:2NF是對(duì)記錄的惟一性約束,要求記錄有惟一標(biāo)識(shí),即實(shí)體的惟一性
3.第三范式:3NF是對(duì)字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余
沒有冗余的數(shù)據(jù)庫設(shè)計(jì)可以做到。但是,沒有冗余的數(shù)據(jù)庫未必是最好的數(shù)據(jù)庫,有時(shí)為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是:在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時(shí)考慮。降低范式就是增加字段,允許冗余
六、要善于識(shí)別與正確處理多對(duì)多的關(guān)系
若兩個(gè)實(shí)體之間存在多對(duì)多的關(guān)系,則應(yīng)消除這種關(guān)系。消除的辦法是,在兩者之間增加第三個(gè)實(shí)體。這樣,原來一個(gè)多對(duì)多的關(guān)系,現(xiàn)在變?yōu)閮蓚€(gè)一對(duì)多的關(guān)系。要將原來兩個(gè)實(shí)體的屬性合理地分配到三個(gè)實(shí)體中去。這里的第三個(gè)實(shí)體,實(shí)質(zhì)上是一個(gè)較復(fù)雜的關(guān)系,它對(duì)應(yīng)一張基本表。一般來講,數(shù)據(jù)庫設(shè)計(jì)工具不能識(shí)別多對(duì)多的關(guān)系,但能處理多對(duì)多的關(guān)系
〖例3〗:在“圖書館信息系統(tǒng)”中,“圖書”是一個(gè)實(shí)體,“讀者”也是一個(gè)實(shí)體。這兩個(gè)實(shí)體之間的關(guān)系,是一個(gè)典型的多對(duì)多關(guān)系:一本圖書在不同時(shí)間可以被多個(gè)讀者借閱,一個(gè)讀者又可以借多本圖書。為此,要在二者之間增加第三個(gè)實(shí)體,該實(shí)體取名為“借還書”,它的屬性為:借還時(shí)間、借還標(biāo)志(0表示借書,1表示還書),另外,還應(yīng)該有兩個(gè)外鍵(“圖書”的主鍵,“讀者”的主鍵),使它能與“圖書”和“讀者”連接
七、主鍵PK的取值方法
PK是供程序員使用的表間連接工具,可以是一無物理意義的數(shù)字串, 由程序自動(dòng)加1來實(shí)現(xiàn)。也可以是有物理意義的字段名或字段名的組合。不過前者比后者好。當(dāng)PK是字段名的組合時(shí),建議字段的個(gè)數(shù)不要太多,多了不但索引占用空間大,而且速度也慢
八、正確認(rèn)識(shí)數(shù)據(jù)冗余
主鍵與外鍵在多表中的重復(fù)出現(xiàn), 不屬于數(shù)據(jù)冗余,這個(gè)概念必須清楚,事實(shí)上有許多人還不清楚。非鍵字段的重復(fù)出現(xiàn), 才是數(shù)據(jù)冗余!而且是一種低級(jí)冗余,即重復(fù)性的冗余。高級(jí)冗余不是字段的重復(fù)出現(xiàn),而是字段的派生出現(xiàn)。
〖例4〗:商品中的“單價(jià)、數(shù)量、金額”三個(gè)字段,“金額”就是由“單價(jià)”乘以“數(shù)量”派生出來的,它就是冗余,而且是一種高級(jí)冗余。冗余的目的是為了提高處理速度。只有低級(jí)冗余才會(huì)增加數(shù)據(jù)的不一致性,因?yàn)橥粩?shù)據(jù),可能從不同時(shí)間、地點(diǎn)、角色上多次錄入。因此,我們提倡高級(jí)冗余(派生性冗余),反對(duì)低級(jí)冗余(重復(fù)性冗余)
九、E--R圖沒有標(biāo)準(zhǔn)答案
信息系統(tǒng)的E--R圖沒有標(biāo)準(zhǔn)答案,因?yàn)樗脑O(shè)計(jì)與畫法不是惟一的,只要它覆蓋了系統(tǒng)需求的業(yè)務(wù)范圍和功能內(nèi)容,就是可行的。反之要修改E--R圖。盡管它沒有惟一的標(biāo)準(zhǔn)答案,并不意味著可以隨意設(shè)計(jì)。好的E—R圖的標(biāo)準(zhǔn)是:結(jié)構(gòu)清晰、關(guān)聯(lián)簡(jiǎn)潔、實(shí)體個(gè)數(shù)適中、屬性分配合理、沒有低級(jí)冗余
十、視圖技術(shù)在數(shù)據(jù)庫設(shè)計(jì)中很有用
1.與基本表、代碼表、中間表不同,視圖是一種虛表,它依賴數(shù)據(jù)源的實(shí)表而存在。視圖是供程序員使用數(shù)據(jù)庫的一個(gè)窗口,是基表數(shù)據(jù)綜合的一種形式, 是數(shù)據(jù)處理的一種方法,是用戶數(shù)據(jù)保密的一種手段。為了進(jìn)行復(fù)雜處理、提高運(yùn)算速度和節(jié)省存儲(chǔ)空間, 視圖的定義深度一般不得超過三層。 若三層視圖仍不夠用, 則應(yīng)在視圖上定義臨時(shí)表,在臨時(shí)表上再定義視圖。這樣反復(fù)交迭定義, 視圖的深度就不受限制了。
2.對(duì)于某些與國家政治、經(jīng)濟(jì)、技術(shù)、軍事和安全利益有關(guān)的信息系統(tǒng),視圖的作用更加重要。這些系統(tǒng)的基本表完成物理設(shè)計(jì)之后,立即在基本表上建立第一層視圖,這層視圖的個(gè)數(shù)和結(jié)構(gòu),與基本表的個(gè)數(shù)和結(jié)構(gòu)是完全相同。并且規(guī)定,所有的程序員,一律只準(zhǔn)在視圖上操作。只有數(shù)據(jù)庫管理員,帶著多個(gè)人員共同掌握的“安全鑰匙”,才能直接在基本表上操作。請(qǐng)讀者想想:這是為什么?
十一、中間表、報(bào)表和臨時(shí)表
中間表是存放統(tǒng)計(jì)數(shù)據(jù)的表,它是為數(shù)據(jù)倉庫、輸出報(bào)表或查詢結(jié)果而設(shè)計(jì)的,有時(shí)它沒有主鍵與外鍵(數(shù)據(jù)倉庫除外)。臨時(shí)表是程序員個(gè)人設(shè)計(jì)的,存放臨時(shí)記錄,為個(gè)人所用。基表和中間表由DBA維護(hù),臨時(shí)表由程序員自己用程序自動(dòng)維護(hù)。
十二、完整性約束表現(xiàn)在三個(gè)方面
域的完整性:用Check來實(shí)現(xiàn)約束,在數(shù)據(jù)庫設(shè)計(jì)工具中,對(duì)字段的取值范圍進(jìn)行定義時(shí),有一個(gè)Check按鈕,通過它定義字段的值城。參照完整性:用PK、FK、表級(jí)觸發(fā)器來實(shí)現(xiàn)。用戶定義完整性:它是一些業(yè)務(wù)規(guī)則,用存儲(chǔ)過程和觸發(fā)器來實(shí)現(xiàn)。
十三、防止數(shù)據(jù)庫設(shè)計(jì)打補(bǔ)丁的方法是“三少原則”
(1) 一個(gè)數(shù)據(jù)庫中表的個(gè)數(shù)越少越好。只有表的個(gè)數(shù)少了,才能說明系統(tǒng)的E--R圖少而精,去掉了重復(fù)的多余的實(shí)體,形成了對(duì)客觀世界的高度抽象,進(jìn)行了系統(tǒng)的數(shù)據(jù)集成,防止了打補(bǔ)丁式的設(shè)計(jì);
(2) 一個(gè)表中組合主鍵的字段個(gè)數(shù)越少越好。因?yàn)橹麈I的作用,一是建主鍵索引,二是做為子表的外鍵,所以組合主鍵的字段個(gè)數(shù)少了,不僅節(jié)省了運(yùn)行時(shí)間,而且節(jié)省了索引存儲(chǔ)空間;
(3) 一個(gè)表中的字段個(gè)數(shù)越少越好。只有字段的個(gè)數(shù)少了,才能說明在系統(tǒng)中不存在數(shù)據(jù)重復(fù),且很少有數(shù)據(jù)冗余,更重要的是督促讀者學(xué)會(huì)“列變行”,這樣就防止了將子表中的字段拉入到主表中去,在主表中留下許多空余的字段。所謂“列變行”,就是將主表中的一部分內(nèi)容拉出去,另外單獨(dú)建一個(gè)子表。這個(gè)方法很簡(jiǎn)單,有的人就是不習(xí)慣、不采納、不執(zhí)行。數(shù)據(jù)庫設(shè)計(jì)的實(shí)用原則是:在數(shù)據(jù)冗余和處理速度之間找到合適的平衡點(diǎn)。“三少”是一個(gè)整體概念,綜合觀點(diǎn),不能孤立某一個(gè)原則。該原則是相對(duì)的,不是絕對(duì)的?!叭唷痹瓌t肯定是錯(cuò)誤的。試想:若覆蓋系統(tǒng)同樣的功能,一百個(gè)實(shí)體(共一千個(gè)屬性) 的E--R圖,肯定比二百個(gè)實(shí)體(共二千個(gè)屬性) 的E--R圖,要好得多。提倡“三少”原則,是叫讀者學(xué)會(huì)利用數(shù)據(jù)庫設(shè)計(jì)技術(shù)進(jìn)行系統(tǒng)的數(shù)據(jù)集成。數(shù)據(jù)集成的步驟是將文件系統(tǒng)集成為應(yīng)用數(shù)據(jù)庫,將應(yīng)用數(shù)據(jù)庫集成為主題數(shù)據(jù)庫,將主題數(shù)據(jù)庫集成為全局綜合數(shù)據(jù)庫。集成的程度越高,數(shù)據(jù)共享性就越強(qiáng),信息孤島現(xiàn)象就越少,整個(gè)企業(yè)信息系統(tǒng)的全局E—R圖中實(shí)體的個(gè)數(shù)、主鍵的個(gè)數(shù)、屬性的個(gè)數(shù)就會(huì)越少。
提倡“三少”原則的目的,是防止讀者利用打補(bǔ)丁技術(shù),不斷地對(duì)數(shù)據(jù)庫進(jìn)行增刪改,使企業(yè)數(shù)據(jù)庫變成了隨意設(shè)計(jì)數(shù)據(jù)庫表的“垃圾堆”,或數(shù)據(jù)庫表的“大雜院”,最后造成數(shù)據(jù)庫中的基本表、代碼表、中間表、臨時(shí)表雜亂無章,不計(jì)其數(shù),導(dǎo)致企事業(yè)單位的信息系統(tǒng)無法維護(hù)而癱瘓?!叭唷痹瓌t任何人都可以做到,該原則是“打補(bǔ)丁方法”設(shè)計(jì)數(shù)據(jù)庫的歪理學(xué)說?!叭佟痹瓌t是少而精的原則,它要求有較高的數(shù)據(jù)庫設(shè)計(jì)技巧與藝術(shù),不是任何人都能做到的,因?yàn)樵撛瓌t是杜絕用“打補(bǔ)丁方法”設(shè)計(jì)數(shù)據(jù)庫的理論依據(jù)。
十四、 提高數(shù)據(jù)庫運(yùn)行效率的辦法
在給定的系統(tǒng)硬件和系統(tǒng)軟件條件下,提高數(shù)據(jù)庫系統(tǒng)的運(yùn)行效率的辦法是:
(1) 在數(shù)據(jù)庫物理設(shè)計(jì)時(shí),降低范式,增加冗余, 少用觸發(fā)器, 多用存儲(chǔ)過程。
(2) 當(dāng)計(jì)算非常復(fù)雜、而且記錄條數(shù)非常巨大時(shí)(例如一千萬條),復(fù)雜計(jì)算要先在數(shù)據(jù)庫外面,以文件系統(tǒng)方式用C++語言計(jì)算處理完成之后,最后才入庫追加到表中去。這是電信計(jì)費(fèi)系統(tǒng)設(shè)計(jì)的經(jīng)驗(yàn)。
(3) 發(fā)現(xiàn)某個(gè)表的記錄太多,例如超過一千萬條,則要對(duì)該表進(jìn)行水平分割。水平分割的做法是,以該表主鍵PK的某個(gè)值為界線,將該表的記錄水平分割為兩個(gè)表。若發(fā)現(xiàn)某個(gè)表的字段太多,例如超過八十個(gè),則垂直分割該表,將原來的一個(gè)表分解為兩個(gè)表。
(4) 對(duì)數(shù)據(jù)庫管理系統(tǒng)DBMS進(jìn)行系統(tǒng)優(yōu)化,即優(yōu)化各種系統(tǒng)參數(shù),如緩沖區(qū)個(gè)數(shù)。
(5) 在使用面向數(shù)據(jù)的SQL語言進(jìn)行程序設(shè)計(jì)時(shí),盡量采取優(yōu)化算法。
總之,要提高數(shù)據(jù)庫的運(yùn)行效率,必須從數(shù)據(jù)庫系統(tǒng)級(jí)優(yōu)化、數(shù)據(jù)庫設(shè)計(jì)級(jí)優(yōu)化、程序?qū)崿F(xiàn)級(jí)優(yōu)化,這三個(gè)層次上同時(shí)下功夫。
軟件功能
一、對(duì)項(xiàng)目及數(shù)據(jù)庫控制的增強(qiáng)在Visual FoxPro 中可以借助“項(xiàng)目管理器”創(chuàng)建和集中管理應(yīng)用程序中的任何元素;可以訪問所有向?qū)?、生成器、工具欄和其他易于使用的工?br /> 二、提高應(yīng)用程序開發(fā)的效率
Visual FoxPro 增加了面向?qū)ο蟮恼Z言和方式,借助Visual FoxPro 的對(duì)象模型,可以充分使用面向?qū)ο蟪绦蛟O(shè)計(jì)的所有功能
三、互操作性和支持Internet
Visual FoxPro 支持具有對(duì)象的鏈接與嵌入(OLE)拖放,可以在Visual FoxPro 和其他應(yīng)用程序之間,或在Visual FoxPro 應(yīng)用程序內(nèi)部移動(dòng)數(shù)據(jù)
四、充分利用已有數(shù)據(jù)
Visual FoxPro 為升級(jí)數(shù)據(jù)庫提供了一個(gè)方便實(shí)用的轉(zhuǎn)換器工具,可以將早期版本中的數(shù)據(jù)移植過來使用;對(duì)于電子表格或文本文件中的數(shù)據(jù),也可以方便的實(shí)現(xiàn)數(shù)據(jù)共享
五、全新的操作方式
在操作方式上提供了菜單操作、命令操作和設(shè)計(jì)器操作三種方式,它們都能達(dá)到相同的效果:
1.菜單操作是最簡(jiǎn)單的一種,用戶只須選擇菜單欄中的菜單項(xiàng)和定義對(duì)話框中的參數(shù)就可以完成對(duì)數(shù)據(jù)庫的處理功能和Visual FoxPro 的狀態(tài)設(shè)置
2.通過設(shè)計(jì)器創(chuàng)建數(shù)據(jù)庫處理的相應(yīng)文件,這是可視化的工作方式,所見格式即所得,大大降低了數(shù)據(jù)庫操作的難度
3.對(duì)于最終用戶來說,有了菜單操作和設(shè)計(jì)器工具,可以直接進(jìn)行數(shù)據(jù)處理
六、新的操作
它的語句、函數(shù)和語法規(guī)則與Xbase(如dBASE、FoxBase、FoxPro)語言基本上是兼容的,而且功能更加強(qiáng)大
七、新的關(guān)系數(shù)據(jù)庫系統(tǒng)
新一代小型數(shù)據(jù)庫管理系統(tǒng)的杰出代表,它以強(qiáng)大的性能、完整而又豐富的工具、極高的處理速度、友好的界面以及完備的兼容性等特點(diǎn),備受廣大用戶的歡迎
八、集成化的系統(tǒng)開發(fā)環(huán)境
它不僅支持過程式編程技術(shù),而且在語言方面作了強(qiáng)大的擴(kuò)充,支持面向?qū)ο罂梢暬幊碳夹g(shù),并擁有功能強(qiáng)大的可視化程序設(shè)計(jì)工具,目前,Visual FoxPro 是用戶收集信息、查詢數(shù)據(jù)、創(chuàng)建集成數(shù)據(jù)庫系統(tǒng)、進(jìn)行實(shí)用系統(tǒng)開發(fā)較為理想的工具軟件
軟件特性
1、提供多種可視化編程工具,最突出的是面向?qū)ο缶幊?br /> 2、在表的設(shè)計(jì)方面,增添了表的字段和控件直接結(jié)合的設(shè)置3、成功解決了計(jì)算機(jī)2000年的問題
4、增強(qiáng)了Internet技術(shù)和WWW數(shù)據(jù)庫的設(shè)計(jì)
5、ctiveX 和向?qū)?、生成器及控件等集成化工?br /> 6、新引入了網(wǎng)絡(luò)圖象文件格式:gif和jpeg
大型數(shù)據(jù)庫的設(shè)計(jì)原則與開發(fā)技巧
隨著計(jì)算機(jī)技術(shù)越來越廣泛地應(yīng)用于國民經(jīng)濟(jì)的各個(gè)領(lǐng)域,在計(jì)算機(jī)硬件不斷微型化的同時(shí),應(yīng)用系統(tǒng)向著復(fù)雜化、大型化的方向發(fā)展。數(shù)據(jù)庫是整個(gè)系統(tǒng)的核心,它的設(shè)計(jì)直接關(guān)系系統(tǒng)執(zhí)行的效率和系統(tǒng)的穩(wěn)定性。因此在軟件系統(tǒng)開發(fā)中,數(shù)據(jù)庫設(shè)計(jì)應(yīng)遵循必要的數(shù)據(jù)庫范式理論,以減少冗余、保證數(shù)據(jù)的完整性與正確性。只有在合適的數(shù)據(jù)庫產(chǎn)品上設(shè)計(jì)出合理的數(shù)據(jù)庫模型,才能降低整個(gè)系統(tǒng)的編程和維護(hù)難度,提高系統(tǒng)的實(shí)際運(yùn)行效率。雖然對(duì)于小項(xiàng)目或中等規(guī)模的項(xiàng)目 開發(fā)人員可以很容易地利用范式理論設(shè)計(jì)出一套符合要求的數(shù)據(jù)庫,但對(duì)于一個(gè)包含大型數(shù)據(jù)庫的軟件項(xiàng)目,就必須有一套完整的設(shè)計(jì)原則與技巧一、成立數(shù)據(jù)小組
大型數(shù)據(jù)庫數(shù)據(jù)元素多,在設(shè)計(jì)上有必要成立專門的數(shù)據(jù)小組。由于數(shù)據(jù)庫設(shè)計(jì)者不一定是使用者,對(duì)系統(tǒng)設(shè)計(jì)中的數(shù)據(jù)元素不可能考慮周全,數(shù)據(jù)庫設(shè)計(jì)出來后,往往難以找到所需的庫表,因此數(shù)據(jù)小組最好由熟悉業(yè)務(wù)的項(xiàng)目骨干組成。
數(shù)據(jù)小組的職能并非是設(shè)計(jì)數(shù)據(jù)庫,而是通過需求分析,在參考其他相似系統(tǒng)的基礎(chǔ)上,提取系統(tǒng)的基本數(shù)據(jù)元素,擔(dān)負(fù)對(duì)數(shù)據(jù)庫的審核。審核內(nèi)容包括審核新的數(shù)據(jù)庫元素是否完全、能否實(shí)現(xiàn)全部業(yè)務(wù)需求;對(duì)舊數(shù)據(jù)庫(如果存在舊系統(tǒng))的分析及數(shù)據(jù)轉(zhuǎn)換;數(shù)據(jù)庫設(shè)計(jì)的審核、控制及必要調(diào)整。
二、設(shè)計(jì)原則
1.規(guī)范命名。所有的庫名、表名、域名必須遵循統(tǒng)一的命名規(guī)則,并進(jìn)行必要說明,以方便設(shè)計(jì)、維護(hù)、查詢。
2.控制字段的引用。在設(shè)計(jì)時(shí),可以選擇適當(dāng)?shù)臄?shù)據(jù)庫設(shè)計(jì)管理工具,以方便開發(fā)人員的分布式設(shè)計(jì)和數(shù)據(jù)小組的集中審核管理。采用統(tǒng)一的命名規(guī)則,如果設(shè)計(jì)的字段已經(jīng)存在,可直接引用;否則,應(yīng)重新設(shè)計(jì)。
3.庫表重復(fù)控制。在設(shè)計(jì)過程中,如果發(fā)現(xiàn)大部分字段都已存在,開發(fā)人員應(yīng)懷疑所設(shè)計(jì)的庫表是否已存在。通過對(duì)字段所在庫表及相應(yīng)設(shè)計(jì)人員的查詢,可以確認(rèn)庫表是否確實(shí)重復(fù)。
4.并發(fā)控制。設(shè)計(jì)中應(yīng)進(jìn)行并發(fā)控制,即對(duì)于同一個(gè)庫表,在同一時(shí)間只有一個(gè)人有控制權(quán),其他人只能進(jìn)行查詢。
5.必要的討論。數(shù)據(jù)庫設(shè)計(jì)完成后,數(shù)據(jù)小組應(yīng)與相關(guān)人員進(jìn)行討論,通過討論來熟悉數(shù)據(jù)庫,從而對(duì)設(shè)計(jì)中存在的問題進(jìn)行控制或從中獲取數(shù)據(jù)庫設(shè)計(jì)的必要信息。
6.數(shù)據(jù)小組的審核。庫表的定版、修改最終都要通過數(shù)據(jù)小組的審核,以保證符合必要的要求。
7.頭文件處理。每次數(shù)據(jù)修改后,數(shù)據(jù)小組要對(duì)相應(yīng)的頭文件進(jìn)行修改(可由管理軟件自動(dòng)完成),并通知相關(guān)的開發(fā)人員,以便進(jìn)行相應(yīng)的程序修改。
三、設(shè)計(jì)技巧
1.分類拆分?jǐn)?shù)據(jù)量大的表。對(duì)于經(jīng)常使用的表(如某些參數(shù)表或代碼對(duì)照表),由于其使用頻率很高,要盡量減少表中的記錄數(shù)量。例如,銀行的戶主賬表原來設(shè)計(jì)成一張表,雖然可以方便程序的設(shè)計(jì)與維護(hù),但經(jīng)過分析發(fā)現(xiàn),由于數(shù)據(jù)量太大,會(huì)影響數(shù)據(jù)的迅速定位。如果將戶主賬表分別設(shè)計(jì)為活期戶主賬、定期戶主賬及對(duì)公戶主賬等,則可以大大提高查詢效率。
2.索引設(shè)計(jì)。對(duì)于大的數(shù)據(jù)庫表,合理的索引能夠提高整個(gè)數(shù)據(jù)庫的操作效率。在索引設(shè)計(jì)中,索引字段應(yīng)挑選重復(fù)值較少的字段;在對(duì)建有復(fù)合索引的字段進(jìn)行檢索時(shí),應(yīng)注意按照復(fù)合索引字段建立的順序進(jìn)行。例如,如果對(duì)一個(gè)5萬多條記錄的流水表以日期和流水號(hào)為序建立復(fù)合索引,由于在該表中日期的重復(fù)值接近整個(gè)表的記錄數(shù),用流水號(hào)進(jìn)行查詢所用的時(shí)間接近3秒;而如果以流水號(hào)為索引字段建立索引進(jìn)行相同的查詢,所用時(shí)間不到1秒。因此在大型數(shù)據(jù)庫設(shè)計(jì)中,只有進(jìn)行合理的索引字段選擇,才能有效提高整個(gè)數(shù)據(jù)庫的操作效率。
3.數(shù)據(jù)操作的優(yōu)化。在大型數(shù)據(jù)庫中,如何提高數(shù)據(jù)操作效率值得關(guān)注。例如,每在數(shù)據(jù)庫流水表中增加一筆業(yè)務(wù),就必須從流水控制表中取出流水號(hào),并將其流水號(hào)的數(shù)值加一。正常情況下,單筆操作的反應(yīng)速度尚屬正常,但當(dāng)用它進(jìn)行批量業(yè)務(wù)處理時(shí),速度會(huì)明顯減慢。經(jīng)過分析發(fā)現(xiàn),每次對(duì)流水控制表中的流水號(hào)數(shù)值加一時(shí)都要鎖定該表,而該表卻是整個(gè)系統(tǒng)操作的核心,有可能在操作時(shí)被其他進(jìn)程鎖定,因而使整個(gè)事務(wù)操作速度變慢。對(duì)這一問題的解決的辦法是,根據(jù)批量業(yè)務(wù)的總筆數(shù)批量申請(qǐng)流水號(hào),并對(duì)流水控制表進(jìn)行一次更新,即可提高批量業(yè)務(wù)處理的速度。另一個(gè)例子是對(duì)插表的優(yōu)化。對(duì)于大批量的業(yè)務(wù)處理,如果在插入數(shù)據(jù)庫表時(shí)用普通的Insert語句,速度會(huì)很慢。其原因在于,每次插表都要進(jìn)行一次I/O操作,花費(fèi)較長的時(shí)間。改進(jìn)后,可以用Put語句等緩沖區(qū)形式等滿頁后再進(jìn)行I/O操作,從而提高效率。對(duì)大的數(shù)據(jù)庫表進(jìn)行刪除時(shí),一般會(huì)直接用Delete語句,這個(gè)語句雖然可以進(jìn)行小表操作,但對(duì)大表卻會(huì)因帶來大事務(wù)而導(dǎo)致刪除速度很慢甚至失敗。解決的方法是去掉事務(wù),但更有效的辦法是先進(jìn)行Drop操作再進(jìn)行重建。
Visual FoxPro 常見問題解答
一、“數(shù)據(jù)庫”和“運(yùn)行”菜單在哪里?Visual FoxPro 現(xiàn)在認(rèn)為數(shù)據(jù)庫是表的容器,而不將單個(gè)的表看作數(shù)據(jù)庫。Visual FoxPro 數(shù)據(jù)庫 (.DBC) 使得“數(shù)據(jù)庫”菜單上的選項(xiàng)過時(shí)。因?yàn)椤斑\(yùn)行”菜單中的選項(xiàng)被去掉或被放在其他菜單上,所以 Visual FoxPro 去掉了“運(yùn)行”菜單
二、如何找到 Visual FoxPro 系統(tǒng)工具欄列表?
在“查看”菜單中選擇“工具欄”命令,您可以看到可用的系統(tǒng)工具欄列表。在“工具欄”對(duì)話框中選擇一個(gè)工具欄,然后單擊“定制”按鈕,您可以定制一個(gè)工具欄
三、當(dāng)關(guān)閉項(xiàng)目管理器窗口,使之成為工具欄后,如何恢復(fù)原來的窗口?
用鼠標(biāo)單擊選項(xiàng)卡上矩形區(qū)域。將項(xiàng)目管理器拖到 Visual FoxPro 主窗口,然后釋放
四、單擊鼠標(biāo)右鍵后,為何會(huì)出現(xiàn)一個(gè)菜單?
單擊鼠標(biāo)右鍵可以彈出一個(gè)對(duì)環(huán)境敏感的快捷菜單。也就是說,如果鼠標(biāo)指在一個(gè)對(duì)象上,單擊右鍵會(huì)彈出一個(gè)菜單,它包含能用來操作該對(duì)象的選項(xiàng)
五、打開多個(gè)窗口和工具欄時(shí),怎樣才能避免雜亂?
您有如下幾個(gè)選擇:您可以在屏幕的上部和邊緣停放工具欄。您可以按下 CTRL+F1 激活每個(gè)窗口,找到想要的窗口。您可以在“窗口”菜單中使用窗口列表,選擇想激活的窗口。您可以重新放置和調(diào)整各個(gè)窗口
六、當(dāng)創(chuàng)建一個(gè)控制的子類時(shí),想為按鈕的單擊事件添加代碼,還想執(zhí)行父類的代碼。怎辦?
在單擊事件中,在添加任何新代碼之前添加 objectname::click。這樣,Visual FoxPro 就執(zhí)行父類的單擊事件,接下來運(yùn)行您添加的代碼
七、有一個(gè)按鈕位于表單上,當(dāng)創(chuàng)建一個(gè)基于按鈕的類時(shí),怎樣引用表單屬性?
您可以使用 THISFORM、THIS.PARENT 或 THISFORMSET 對(duì)象引用。例如: ThisForm.Caption="MYCAPTION"
八、定義一個(gè)類之后,怎樣擊活或訪問對(duì)象?
基于類可以創(chuàng)建對(duì)象。類就象房子的藍(lán)圖或者電話的電路圖,藍(lán)圖和電路圖簡(jiǎn)單地勾勒出房子和電話的特點(diǎn)和功能。您不能激活類,必須使用 CREATEOBJECT( ) 命令從一個(gè)類創(chuàng)建對(duì)象,然后可以顯示對(duì)象。有關(guān)詳細(xì)信息,請(qǐng)參閱“幫助”中的 CREATEOBJECT( ) 主題
其他版本
-
visual foxpro 7.0 數(shù)據(jù)庫類 / 18.88M
下載地址
- 電腦版
Visual FoxPro(數(shù)據(jù)庫開發(fā)軟件) v6.0
- 本地下載通道:
- 浙江電信下載
- 北京聯(lián)通下載
- 江蘇電信下載
- 廣東電信下載
同類軟件
Advanced ETL Processor(數(shù)據(jù)庫瀏覽器) v6.4.5.20官方版
Firebird Maestro(火鳥數(shù)據(jù)庫) v24.2官方版
Benthic Software Golden(數(shù)據(jù)庫管理工具) v7.3官方版
Studio 3T(數(shù)據(jù)管理工具) v2023.9.2官方版
PowerDesigner v16.5.0.3982
Universal SQL Editor(數(shù)據(jù)庫工具) v1.80
mariadb(數(shù)據(jù)庫管理系統(tǒng)) v11.1.2
mysql for visual studio v.2.0.5官方版
網(wǎng)友評(píng)論
共0條評(píng)論(您的評(píng)論需要經(jīng)過審核才能顯示)