數據加載中……
          數據庫設計經驗談(4) (轉)
          Microsoft Visual FoxPro 報表技巧

            如果你正在使用 Microsoft Visual FoxPro,你可以用對用戶友好的字段名來代替編號的名稱:比如用 Customer Name 代替 txtCNaM。這樣,當你用向導程序 [Wizards,臺灣人稱為‘精靈’] 創建表單和報表時,其名字會讓那些不是程序員的人更容易閱讀。

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

            增加一個字段表示所在記錄是否在業務中不再活躍挺有用的。不管是客戶、員工還是其他什么人,這樣做都能有助于再運行查詢的時候過濾活躍或者不活躍狀態。同時還消除了新用戶在采用數據時所面臨的一些問題,比如,某些記錄可能不再為他們所用,再刪除的時候可以起到一定的防范作用。

          使用角色實體定義屬于某類別的列[字段]

            在需要對屬于特定類別或者具有特定角色的事物做定義時,可以用角色實體來創建特定的時間關聯關系,從而可以實現自我文檔化。

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

            還有個替代辦法就是改變 PERSON 記錄來反映新頭銜的變化,不過這樣一來在時間上無法跟蹤個人所處位置的具體時間。

          采用常用實體命名機構數據

            組織數據的最簡單辦法就是采用常用名字,比如:PERSON、ORGANIZATION、ADDRESS 和 PHONE 等等。當你把這些常用的一般名字組合起來或者創建特定的相應副實體時,你就得到了自己用的特殊版本。開始的時候采用一般術語的主要原因在于所有的具體用戶都能對抽象事物具體化。

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

            采用一般抽象術語來標識“事物”的類別可以讓你在關聯數據以滿足業務要求方面獲得巨大的靈活性,同時這樣做還可以顯著降低數據存儲所需的冗余量。

          用戶來自世界各地

            在設計用到網絡或者具有其他國際特性的數據庫時,一定要記住大多數國家都有不同的字段格式,比如郵政編碼等,有些國家,比如新西蘭就沒有郵政編碼一說。

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

            如果你發現自己在重復輸入數據,請創建新表和新的關系。

            每個表中都應該添加的 3 個有用的字段

            * dRecordCreationDate,在 VB 下默認是 Now(),而在 SQL Server 下默認為 GETDATE()
            * sRecordCreator,在 SQL Server 下默認為 NOT NULL DEFAULT USER
            * nRecordVersion,記錄的版本標記;有助于準確說明記錄中出現 null 數據或者丟失數據的原因

          對地址和電話采用多個字段

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

            過分標準化可要小心,這樣做可能會導致性能上出現問題。雖然地址和電話表分離通常可以達到最佳狀態,但是如果需要經常訪問這類信息,或許在其父表中存放“首選”信息(比如 Customer 等)更為妥當些。非標準化和加速訪問之間的妥協是有一定意義的。

          使用多個名稱字段

            我覺得很吃驚,許多人在數據庫里就給 name 留一個字段。我覺得只有剛入門的開發人員才會這么做,但實際上網上這種做法非常普遍。我建議應該把姓氏和名字當作兩個字段來處理,然后在查詢的時候再把他們組合起來。

            我最常用的是在同一表中創建一個計算列[字段],通過它可以自動地連接標準化后的字段,這樣數據變動的時候它也跟著變。不過,這樣做在采用建模軟件時得很機靈才行。總之,采用連接字段的方式可以有效的隔離用戶應用和開發人員界面。

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

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

          posted on 2007-09-06 14:02 當扎瓦 閱讀(166) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 中江县| 永德县| 宝坻区| 大安市| 搜索| 巫山县| 桑日县| 吉隆县| 冀州市| 大田县| 寿宁县| 阳谷县| 宜昌市| 偃师市| 博爱县| 鄢陵县| 洞头县| 额尔古纳市| 宣武区| 吉隆县| 遵义县| 沂水县| 桐庐县| 清苑县| 汉沽区| 南涧| 民县| 楚雄市| 克什克腾旗| 关岭| 渑池县| 鄂托克前旗| 石泉县| 富锦市| 大理市| 都兰县| 嘉善县| 普陀区| 海伦市| 民县| 遂昌县|