數據庫經(jīng)驗與技巧《華夏印刷培訓招聘網(wǎng)》 轉載

3年前 (2021-07-25)閱讀551回復0
山東印刷廠(chǎng)
山東印刷廠(chǎng)
  • 管理員
  • 發(fā)消息
  • 注冊排名941
  • 經(jīng)驗值70
  • 級別管理員
  • 主題14
  • 回復0
樓主
印刷廠(chǎng)直印加工●彩頁(yè)1000張只需要69元●名片5元每盒-更多產(chǎn)品印刷報價(jià)?聯(lián)系電話(huà):138-1621-1622(微信同號)

一個(gè)成功的管理系統培訓材料印刷,是由:[50% 的業(yè)務(wù) + 50% 的軟件] 所組成,

  而 50% 的成功軟件又有 [25% 的數據庫 + 25% 的程序] 所組成,數據庫設計的好壞是一個(gè)關(guān)鍵培訓材料印刷。

  如果把企業(yè)的數據比做生命所必需的血液,那么數據庫的設計就是應用中最重要的一部分培訓材料印刷。

  有關(guān)數據庫設計的材料汗牛充棟,大學(xué)學(xué)位課程里也有專(zhuān)門(mén)的講述培訓材料印刷。

  不過(guò),就如我們反復強調的那樣,再好的老師也比不過(guò)經(jīng)驗的教誨培訓材料印刷。

  所以我歸納歷年來(lái)所走的彎路及體會(huì ),并在網(wǎng)上找了些對數據庫設計頗有造詣的專(zhuān)業(yè)人士給大家傳授一些設計數據庫的技巧和經(jīng)驗培訓材料印刷。

  精選了其中的 60 個(gè)最佳技巧培訓材料印刷,并把這些技巧編寫(xiě)成了本文,為了方便索引其內容劃分為 5 個(gè)部分:

  第 1 部分 - 設計數據庫之前

  這一部分羅列了 12 個(gè)基本技巧,包括命名規范和明確業(yè)務(wù)需求等培訓材料印刷。

  第 2 部分 - 設計數據庫表

  總共 24 個(gè)指南性技巧,涵蓋表內字段設計以及應該避免的常見(jiàn)問(wèn)題等培訓材料印刷。

  第 3 部分 - 選擇鍵

  怎么選擇鍵呢?這里有 10 個(gè)技巧專(zhuān)門(mén)涉及系統生成的主鍵的正確用法,還有何 時(shí)以及如何索引字段以獲得最佳性能等培訓材料印刷。

  第 4 部分 - 保證數據完整性

  討論如何保持數據庫的清晰和健壯,如何把有害數據降低到最小程度培訓材料印刷。

  第 5 部分 - 各種小技巧

  不包括在以上 4 個(gè)部分中的其他技巧,五花八門(mén),有了它們希望你的數據庫開(kāi)發(fā)工作會(huì )更輕松一些培訓材料印刷。

  第 1 部分 - 設計數據庫之前

  考察現有環(huán)境

  在設計一個(gè)新數據庫時(shí),你不但應該仔細研究業(yè)務(wù)需求而且還要考察現有的系統培訓材料印刷。大多數數據庫項目都不是從頭開(kāi)始建立的;通常,機構內總會(huì )存在用來(lái)滿(mǎn)足特定需求的現有系統(可能沒(méi)有實(shí)現自動(dòng)計算)。顯然,現有系統并不完美,否則你就不必再建立新系統了。但是對舊系統的研究可以讓你發(fā)現一些可能會(huì )忽略的細微問(wèn)題。一般來(lái)說(shuō),考察現有系統對你絕對有好處。

  定義標準的對象命名規范

  一定要定義數據庫對象的命名規范培訓材料印刷。對數據庫表來(lái)說(shuō),從項目一開(kāi)始就要確定表名是采用復數還是單數形式。此外還要給表的別名定義簡(jiǎn)單規則(比方說(shuō),如果表名是一個(gè)單詞,別名就取單詞的前 4 個(gè)字母;如果表名是兩個(gè)單詞,就各取兩個(gè)單詞的前兩個(gè)字母組成 4 個(gè)字母長(cháng)的別名;如果表的名字由 3 個(gè)單詞組成,你不妨從頭兩個(gè)單詞中各取一個(gè)然后從最后一個(gè)單詞中再取出兩個(gè)字母,結果還是組成 4 字母長(cháng)的別名,其余依次類(lèi)推)對工作用表來(lái)說(shuō),表名可以加上前綴 WORK_ 后面附上采用該表的應用程序的名字。表內的列[字段]要針對鍵采用一整套設計規則。比如,如果鍵是數字類(lèi)型,你可以用 _N 作為后綴;如果是字符類(lèi)型則可以采用 _C 后綴。對列[字段]名應該采用標準的前綴和后綴。再如,假如你的表里有好多"money"字段,你不妨給每個(gè)列[字段]增加一個(gè) _M 后綴。還有,日期列[字段]最好以 D_ 作為名字打頭。

  檢查表名、報表名和查詢(xún)名之間的命名規范培訓材料印刷。你可能會(huì )很快就被這些不同的數據庫要素的名稱(chēng)搞糊涂了。假如你堅持統一地命名這些數據庫的不同組成部分,至少你應該在這些對象名字的開(kāi)頭用 Table、Query 或者 Report 等前綴加以區別。

  如果采用了 Microsoft Access,你可以用 qry、rpt、tbl 和 mod 等符號來(lái)標識對象(比如 tbl_Employees)培訓材料印刷。我在和 SQL Server 打交道的時(shí)候還用過(guò) tbl 來(lái)索引表,但我用 sp_company (現在用 sp_feft_)標識存儲過(guò)程,因為在有的時(shí)候如果我發(fā)現了更好的處理辦法往往會(huì )保存好幾個(gè)拷貝。我在實(shí)現 SQL Server 2000 時(shí)用 udf_ (或者類(lèi)似的標記)標識我編寫(xiě)的函數。

  工欲善其事, 必先利其器

  采用理想的數據庫設計工具,比如:SyBase 公司的 PowerDesign,她支持 PB、VB、Delphe 等語(yǔ)言,通過(guò) ODBC 可以連接市面上流行的 30 多個(gè)數據庫,包括 dBase、FoxPro、VFP、SQL Server 等,今后有機會(huì )我將著(zhù)重介紹 PowerDesign 的使用培訓材料印刷。

  獲取數據模式資源手冊

  正在尋求示例模式的人可以閱讀《數據模式資源手冊》一書(shū),該書(shū)由 Len Silverston、W. H. Inmon 和 Kent Graziano 編寫(xiě),是一本值得擁有的最佳數據建模圖書(shū)培訓材料印刷。該書(shū)包括的章節涵蓋多種數據領(lǐng)域,比如人員、機構和工作效能等。

  其他的你還可以參考:薩師煊 王珊著(zhù) 數據庫系統概論

  暢想未來(lái)培訓材料印刷,但不可忘了過(guò)去的教訓

  我發(fā)現詢(xún)問(wèn)用戶(hù)如何看待未來(lái)需求變化非常有用培訓材料印刷。這樣做可以達到兩個(gè)目的:首先,你可以清楚地了解應用設計在哪個(gè)地方應該更具靈活性以及如何避免性能瓶頸;其次,你知道發(fā)生事先沒(méi)有確定的需求變更時(shí)用戶(hù)將和你一樣感到吃驚。

  一定要記住過(guò)去的經(jīng)驗教訓!我們開(kāi)發(fā)人員還應該通過(guò)分享自己的體會(huì )和經(jīng)驗互相幫助培訓材料印刷。即使用戶(hù)認為他們再也不需要什么支持了,我們也應該對他們進(jìn)行這方面的教育,我們都曾經(jīng)面臨過(guò)這樣的時(shí)刻"當初要是這么做了該多好.."。

  在物理實(shí)踐之前進(jìn)行邏輯設計

  在深入物理設計之前要先進(jìn)行邏輯設計培訓材料印刷。隨著(zhù)大量的 CASE 工具不斷涌現出來(lái),你的設計也可以達到相當高的邏輯水準,你通??梢詮恼w上更好地了解數據庫設計所需要的方方面面。

  了解你的業(yè)務(wù)

  在你百分百地確定系統從客戶(hù)角度滿(mǎn)足其需求之前不要在你的 ER(實(shí)體關(guān)系)模式中加入哪怕一個(gè)數據表(怎么,你還沒(méi)有模式?那請你參看技巧 9)培訓材料印刷。了解你的企業(yè)業(yè)務(wù)可以在以后的開(kāi)發(fā)階段節約大量的時(shí)間。一旦你明確了業(yè)務(wù)需求,你就可以自己做出許多決策了。

  一旦你認為你已經(jīng)明確了業(yè)務(wù)內容,你最好同客戶(hù)進(jìn)行一次系統的交流培訓材料印刷。采用客戶(hù)的術(shù)語(yǔ)并且向他們解釋你所想到的和你所聽(tīng)到的。同時(shí)還應該用可能、將會(huì )和必須等詞匯表達出系統的關(guān)系基數。這樣你就可以讓你的客戶(hù)糾正你自己的理解然后做好下一步的 ER 設計。

  創(chuàng )建數據字典和 ER 圖表

  一定要花點(diǎn)時(shí)間創(chuàng )建 ER 圖表和數據字典培訓材料印刷。其中至少應該包含每個(gè)字段的數據類(lèi)型和在每個(gè)表內的主外鍵。創(chuàng )建 ER 圖表和數據字典確實(shí)有點(diǎn)費時(shí)但對其他開(kāi)發(fā)人員要了解整個(gè)設計卻是完全必要的。越早創(chuàng )建越能有助于避免今后面臨的可能混亂,從而可以讓任何了解數據庫的人都明確如何從數據庫中獲得數據。

  有一份諸如 ER 圖表等最新文檔其重要性如何強調都不過(guò)分,這對表明表之間關(guān)系很有用,而數據字典則說(shuō)明了每個(gè)字段的用途以及任何可能存在的別名培訓材料印刷。對 SQL 表達式的文檔化來(lái)說(shuō)這是完全必要的。

  創(chuàng )建模式

  一張圖表勝過(guò)千言萬(wàn)語(yǔ):開(kāi)發(fā)人員不僅要閱讀和實(shí)現它,而且還要用它來(lái)幫助自己和用戶(hù)對話(huà)培訓材料印刷。模式有助于提高協(xié)作效能,這樣在先期的數據庫設計中幾乎不可能出現大的問(wèn)題。模式不必弄的很復雜;甚至可以簡(jiǎn)單到手寫(xiě)在一張紙上就可以了。只是要保證其上的邏輯關(guān)系今后能產(chǎn)生效益。

  從輸入輸出下手

  在定義數據庫表和字段需求(輸入)時(shí),首先應檢查現有的或者已經(jīng)設計出的報表、查詢(xún)和視圖(輸出)以決定為了支持這些輸出哪些是必要的表和字段培訓材料印刷。舉個(gè)簡(jiǎn)單的例子:假如客戶(hù)需要一個(gè)報表按照郵政編碼排序、分段和求和,你要保證其中包括了單獨的郵政編碼字段而不要把郵政編碼糅進(jìn)地址字段里。

  報表技巧

  要了解用戶(hù)通常是如何報告數據的:批處理還是在線(xiàn)提交報表?時(shí)間間隔是每天、每周、每月、每個(gè)季度還是每年?如果需要的話(huà)還可以考慮創(chuàng )建總結表培訓材料印刷。系統生成的主鍵在報表中很難管理。用戶(hù)在具有系統生成主鍵的表內用副鍵進(jìn)行檢索往往會(huì )返回許多重復數據。這樣的檢索性能比較低而且容易引起混亂。

  理解客戶(hù)需求

  看起來(lái)這應該是顯而易見(jiàn)的事,但需求就是來(lái)自客戶(hù)(這里要從內部和外部客戶(hù)的角度考慮)培訓材料印刷。不要依賴(lài)用戶(hù)寫(xiě)下來(lái)的需求,真正的需求在客戶(hù)的腦袋里。你要讓客戶(hù)解釋其需求,而且隨著(zhù)開(kāi)發(fā)的繼續,還要經(jīng)常詢(xún)問(wèn)客戶(hù)保證其需求仍然在開(kāi)發(fā)的目的之中。一個(gè)不變的真理是:"只有我看見(jiàn)了我才知道我想要的是什么"必然會(huì )導致大量的返工,因為數據庫沒(méi)有達到客戶(hù)從來(lái)沒(méi)有寫(xiě)下來(lái)的需求標準。而更糟的是你對他們需求的解釋只屬于你自己,而且可能是完全錯誤的。

  第 2 部分 - 設計表和字段

  檢查各種變化

  我在設計數據庫的時(shí)候會(huì )考慮到哪些數據字段將來(lái)可能會(huì )發(fā)生變更培訓材料印刷。比方說(shuō),姓氏就是如此(注意是西方人的姓氏,比如女性結婚后從夫姓等)。所以,在建立系統存儲客戶(hù)信息時(shí),我傾向于在單獨的一個(gè)數據表里存儲姓氏字段,而且還附加起始日和終止日等字段,這樣就可以跟蹤這一數據條目的變化。

  采用有意義的字段名

  有一回我參加開(kāi)發(fā)過(guò)一個(gè)項目,其中有從其他程序員那里繼承的程序,那個(gè)程序員喜歡用屏幕上顯示數據指示用語(yǔ)命名字段,這也不賴(lài),但不幸的是,她還喜歡用一些奇怪的命名法,其命名采用了匈牙利命名和控制序號的組合形式,比如 cbo1、txt2、txt2_b 等等培訓材料印刷。

  除非你在使用只面向你的縮寫(xiě)字段名的系統,否則請盡可能地把字段描述的清楚些培訓材料印刷。當然,也別做過(guò)頭了,比如 Customer_Shipping_Address_Street_Line_1,雖然很富有說(shuō)明性,但沒(méi)人愿意鍵入這么長(cháng)的名字,具體尺度就在你的把握中。

  采用前綴命名

  如果多個(gè)表里有好多同一類(lèi)型的字段(比如 FirstName),你不妨用特定表的前綴(比如 CusLastName)來(lái)幫助你標識字段培訓材料印刷。

  時(shí)效性數據應包括"最近更新日期/時(shí)間"字段培訓材料印刷。時(shí)間標記對查找數據問(wèn)題的原因、按日期重新處理/重載數據和清除舊數據特別有用。

  標準化和數據驅動(dòng)

  數據的標準化不僅方便了自己而且也方便了其他人培訓材料印刷。比方說(shuō),假如你的用戶(hù)界面要訪(fǎng)問(wèn)外部數據源(文件、XML 文檔、其他數據庫等),你不妨把相應的連接和路徑信息存儲在用戶(hù)界面支持表里。還有,如果用戶(hù)界面執行工作流之類(lèi)的任務(wù)(發(fā)送郵件、打印信箋、修改記錄狀態(tài)等),那么產(chǎn)生工作流的數據也可以存放在數據庫里。預先安排總需要付出努力,但如果這些過(guò)程采用數據驅動(dòng)而非硬編碼的方式,那么策略變更和維護都會(huì )方便得多。事實(shí)上,如果過(guò)程是數據驅動(dòng)的,你就可以把相當大的責任推給用戶(hù),由用戶(hù)來(lái)維護自己的工作流過(guò)程。

  標準化不能過(guò)頭

  對那些不熟悉標準化一詞(normalization)的人而言,標準化可以保證表內的字段都是最基礎的要素,而這一措施有助于消除數據庫中的數據冗余培訓材料印刷。標準化有好幾種形式,但 Third Normal Form(3NF)通常被認為在性能、擴展性和數據完整性方面達到了最好平衡。簡(jiǎn)單來(lái)說(shuō),3NF 規定:

  * 表內的每一個(gè)值都只能被表達一次培訓材料印刷。

  * 表內的每一行都應該被唯一的標識(有唯一鍵)培訓材料印刷。

  * 表內不應該存儲依賴(lài)于其他鍵的非鍵信息培訓材料印刷。

  遵守 3NF 標準的數據庫具有以下特點(diǎn):有一組表專(zhuān)門(mén)存放通過(guò)鍵連接起來(lái)的關(guān)聯(lián)數據培訓材料印刷。比方說(shuō),某個(gè)存放客戶(hù)及其有關(guān)定單的 3NF 數據庫就可能有兩個(gè)表:Customer 和 Order。Order 表不包含定單關(guān)聯(lián)客戶(hù)的任何信息,但表內會(huì )存放一個(gè)鍵值,該鍵指向 Customer 表里包含該客戶(hù)信息的那一行。

  更高層次的標準化也有,但更標準是否就一定更好呢?答案是不一定培訓材料印刷。事實(shí)上,對某些項目來(lái)說(shuō),甚至就連 3NF 都可能給數據庫引入太高的復雜性。

  為了效率的緣故,對表不進(jìn)行標準化有時(shí)也是必要的,這樣的例子很多培訓材料印刷。曾經(jīng)有個(gè)開(kāi)發(fā)餐飲分析軟件的活就是用非標準化表把查詢(xún)時(shí)間從平均 40 秒降低到了兩秒左右。雖然我不得不這么做,但我絕不把數據表的非標準化當作當然的設計理念。而具體的操作不過(guò)是一種派生。所以如果表出了問(wèn)題重新產(chǎn)生非標準化的表是完全可能的。

  不活躍或者不采用的指示符

  增加一個(gè)字段表示所在記錄是否在業(yè)務(wù)中不再活躍挺有用的培訓材料印刷。不管是客戶(hù)、員工還是其他什么人,這樣做都能有助于再運行查詢(xún)的時(shí)候過(guò)濾活躍或者不活躍狀態(tài)。同時(shí)還消除了新用戶(hù)在采用數據時(shí)所面臨的一些問(wèn)題,比如,某些記錄可能不再為他們所用,再刪除的時(shí)候可以起到一定的防范作用。

  使用角色實(shí)體定義屬于某類(lèi)別的列[字段]

  在需要對屬于特定類(lèi)別或者具有特定角色的事物做定義時(shí),可以用角色實(shí)體來(lái)創(chuàng )建特定的時(shí)間關(guān)聯(lián)關(guān)系,從而可以實(shí)現自我文檔化培訓材料印刷。

  這里的含義不是讓 PERSON 實(shí)體帶有 Title 字段,而是說(shuō),為什么不用 PERSON 實(shí)體和 PERSON_TYPE 實(shí)體來(lái)描述人員呢?比方說(shuō),當 John Smith, Engineer 提升為 John Smith, Director 乃至最后爬到 John Smith, CIO 的高位,而所有你要做的不過(guò)是改變兩個(gè)表 PERSON 和 PERSON_TYPE 之間關(guān)系的鍵值,同時(shí)增加一個(gè)日期/時(shí)間字段來(lái)知道變化是何時(shí)發(fā)生的培訓材料印刷。這樣,你的 PERSON_TYPE 表就包含了所有 PERSON 的可能類(lèi)型,比如 Associate、Engineer、Director、CIO 或者 CEO 等。

  還有個(gè)替代辦法就是改變 PERSON 記錄來(lái)反映新頭銜的變化,不過(guò)這樣一來(lái)在時(shí)間上無(wú)法跟蹤個(gè)人所處位置的具體時(shí)間培訓材料印刷。

  采用常用實(shí)體命名機構數據

  組織數據的最簡(jiǎn)單辦法就是采用常用名字,比如:PERSON、ORGANIZATION、ADDRESS 和 PHONE 等等培訓材料印刷。當你把這些常用的一般名字組合起來(lái)或者創(chuàng )建特定的相應副實(shí)體時(shí),你就得到了自己用的特殊版本。開(kāi)始的時(shí)候采用一般術(shù)語(yǔ)的主要原因在于所有的具體用戶(hù)都能對抽象事物具體化。

  有了這些抽象表示,你就可以在第 2 級標識中采用自己的特殊名稱(chēng),比如,PERSON 可能是 Employee、Spouse、Patient、Client、Customer、Vendor 或者 Teacher 等培訓材料印刷。同樣的,ORGANIZATION 也可能是 MyCompany、MyDepartment、Competitor、Hospital、Warehouse、Government 等。最后 ADDRESS 可以具體為 Site、Location、Home、Work、Client、Vendor、Corporate 和 FieldOffice 等。

  采用一般抽象術(shù)語(yǔ)來(lái)標識"事物"的類(lèi)別可以讓你在關(guān)聯(lián)數據以滿(mǎn)足業(yè)務(wù)要求方面獲得巨大的靈活性,同時(shí)這樣做還可以顯著(zhù)降低數據存儲所需的冗余量培訓材料印刷。

  用戶(hù)來(lái)自世界各地

  在設計用到網(wǎng)絡(luò )或者具有其他國際特性的數據庫時(shí),一定要記住大多數國家都有不同的字段格式,比如郵政編碼等,有些國家,比如新西蘭就沒(méi)有郵政編碼一說(shuō)培訓材料印刷。

  數據重復需要采用分立的數據表

  如果你發(fā)現自己在重復輸入數據,請創(chuàng )建新表和新的關(guān)系培訓材料印刷。

  每個(gè)表中都應該添加的 3 個(gè)有用的字段

  * dRecordCreationDate培訓材料印刷,在 VB 下默認是 Now(),而在 SQL Server 下默認為 GETDATE()

  * sRecordCreator培訓材料印刷,在 SQL Server 下默認為 NOT NULL DEFAULT USER

  * nRecordVersion培訓材料印刷,記錄的版本標記;有助于準確說(shuō)明記錄中出現 null 數據或者丟失數據的原因

  對地址和電話(huà)采用多個(gè)字段

  描述街道地址就短短一行記錄是不夠的培訓材料印刷。Address_Line1、Address_Line2 和 Address_Line3 可以提供更大的靈活性。還有,電話(huà)號碼和郵件地址最好擁有自己的數據表,其間具有自身的類(lèi)型和標記類(lèi)別。

  過(guò)分標準化可要小心,這樣做可能會(huì )導致性能上出現問(wèn)題培訓材料印刷。雖然地址和電話(huà)表分離通??梢赃_到最佳狀態(tài),但是如果需要經(jīng)常訪(fǎng)問(wèn)這類(lèi)信息,或許在其父表中存放"首選"信息(比如 Customer 等)更為妥當些。非標準化和加速訪(fǎng)問(wèn)之間的妥協(xié)是有一定意義的。

  使用多個(gè)名稱(chēng)字段

  我覺(jué)得很吃驚,許多人在數據庫里就給 name 留一個(gè)字段培訓材料印刷。我覺(jué)得只有剛入門(mén)的開(kāi)發(fā)人員才會(huì )這么做,但實(shí)際上網(wǎng)上這種做法非常普遍。我建議應該把姓氏和名字當作兩個(gè)字段來(lái)處理,然后在查詢(xún)的時(shí)候再把他們組合起來(lái)。

  我最常用的是在同一表中創(chuàng )建一個(gè)計算列[字段],通過(guò)它可以自動(dòng)地連接標準化后的字段,這樣數據變動(dòng)的時(shí)候它也跟著(zhù)變培訓材料印刷。不過(guò),這樣做在采用建模軟件時(shí)得很機靈才行。總之,采用連接字段的方式可以有效的隔離用戶(hù)應用和開(kāi)發(fā)人員界面。

  提防大小寫(xiě)混用的對象名和特殊字符

  過(guò)去最令我惱火的事情之一就是數據庫里有大小寫(xiě)混用的對象名,比如 CustomerData培訓材料印刷。這一問(wèn)題從 Access 到 Oracle 數據庫都存在。我不喜歡采用這種大小寫(xiě)混用的對象命名方法,結果還不得不手工修改名字。想想看,這種數據庫/應用程序能混到采用更強大數據庫的那一天嗎?采用全部大寫(xiě)而且包含下劃符的名字具有更好的可讀性(CUSTOMER_DATA),絕對不要在對象名的字符之間留空格。

  小心保留詞

  要保證你的字段名沒(méi)有和保留詞、數據庫系統或者常用訪(fǎng)問(wèn)方法沖突,比如,最近我編寫(xiě)的一個(gè) ODBC 連接程序里有個(gè)表,其中就用了 DESC 作為說(shuō)明字段名培訓材料印刷。后果可想而知!DESC 是 DESCENDING 縮寫(xiě)后的保留詞。表里的一個(gè) SELECT * 語(yǔ)句倒是能用,但我得到的卻是一大堆毫無(wú)用處的信息。

  保持字段名和類(lèi)型的一致性

  在命名字段并為其指定數據類(lèi)型的時(shí)候一定要保證一致性培訓材料印刷。假如字段在某個(gè)表中叫做"agreement_number",你就別在另一個(gè)表里把名字改成"ref1"。假如數據類(lèi)型在一個(gè)表里是整數,那在另一個(gè)表里可就別變成字符型了。記住,你干完自己的活了,其他人還要用你的數據庫呢。

  仔細選擇數字類(lèi)型

  在 SQL 中使用 smallint 和 tinyint 類(lèi)型要特別小心,比如,假如你想看看月銷(xiāo)售總額,你的總額字段類(lèi)型是 smallint,那么,如果總額超過(guò)了 $32,767 你就不能進(jìn)行計算操作了培訓材料印刷。

  刪除標記

  在表中包含一個(gè)"刪除標記"字段,這樣就可以把行標記為刪除培訓材料印刷。在關(guān)系數據庫里不要單獨刪除某一行;最好采用清除數據程序而且要仔細維護索引整體性。

  避免使用觸發(fā)器觸發(fā)器的功能通??梢杂闷渌绞綄?shí)現培訓材料印刷。在調試程序時(shí)觸發(fā)器可能成為干擾。假如你確實(shí)需要采用觸發(fā)器,你最好集中對它文檔化。

  包含版本機制

  建議你在數據庫中引入版本控制機制來(lái)確定使用中的數據庫的版本培訓材料印刷。無(wú)論如何你都要實(shí)現這一要求。時(shí)間一長(cháng),用戶(hù)的需求總是會(huì )改變的。最終可能會(huì )要求修改數據庫結構。雖然你可以通過(guò)檢查新字段或者索引來(lái)確定數據庫結構的版本,但我發(fā)現把版本信息直接存放到數據庫中不更為方便嗎?。

  給文本字段留足余量

  ID 類(lèi)型的文本字段,比如客戶(hù) ID 或定單號等等都應該設置得比一般想象更大,因為時(shí)間不長(cháng)你多半就會(huì )因為要添加額外的字符而難堪不已培訓材料印刷。比方說(shuō),假設你的客戶(hù) ID 為 10 位數長(cháng)。那你應該把數據庫表字段的長(cháng)度設為 12 或者 13 個(gè)字符長(cháng)。這算浪費空間嗎?是有一點(diǎn),但也沒(méi)你想象的那么多:一個(gè)字段加長(cháng) 3 個(gè)字符在有 1 百萬(wàn)條記錄,再加上一點(diǎn)索引的情況下才不過(guò)讓整個(gè)數據庫多占據 3MB 的空間。但這額外占據的空間卻無(wú)需將來(lái)重構整個(gè)數據庫就可以實(shí)現數據庫規模的增長(cháng)了。身份證的號碼從 15 位變成 18 位就是最好和最慘痛的例子。

  列[字段]命名技巧

  我們發(fā)現,假如你給每個(gè)表的列[字段]名都采用統一的前綴,那么在編寫(xiě) SQL 表達式的時(shí)候會(huì )得到大大的簡(jiǎn)化培訓材料印刷。這樣做也確實(shí)有缺點(diǎn),比如破壞了自動(dòng)表連接工具的作用,后者把公共列[字段]名同某些數據庫聯(lián)系起來(lái),不過(guò)就連這些工具有時(shí)不也連接錯誤嘛。舉個(gè)簡(jiǎn)單的例子,假設有兩個(gè)表:

  Customer 和 Order培訓材料印刷。Customer 表的前綴是 cu_,所以該表內的子段名如下:cu_name_id、cu_surname、cu_initials 和cu_address 等。Order 表的前綴是 or_,所以子段名是:

  or_order_id、or_cust_name_id、or_quantity 和 or_deion 等培訓材料印刷。

  這樣從數據庫中選出全部數據的 SQL 語(yǔ)句可以寫(xiě)成如下所示:

  Select * From Customer, Order Where cu_surname = "MYNAME" ;

  and cu_name_id = or_cust_name_id and or_quantity = 1

  在沒(méi)有這些前綴的情況下則寫(xiě)成這個(gè)樣子(用別名來(lái)區分):

  Select * From Customer, Order Where Customer.surname = "MYNAME" ;

  and Customer.name_id = Order.cust_name_id and Order.quantity = 1

  第 1 個(gè) SQL 語(yǔ)句沒(méi)少鍵入多少字符培訓材料印刷。但如果查詢(xún)涉及到 5 個(gè)表乃至更多的列[字段]你就知道這個(gè)技巧多有用了。

021yin.com

0
0
收藏0
回帖

數據庫經(jīng)驗與技巧《華夏印刷培訓招聘網(wǎng)》 轉載 期待您的回復!

取消
載入表情清單……
載入顏色清單……
插入網(wǎng)絡(luò )圖片

取消確定

圖片上傳中
編輯器信息
提示信息