<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 55  文章 - 187  trackbacks - 0
    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(12)

    隨筆分類

    隨筆檔案

    groovy

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    數(shù)據(jù)庫設計5步驟

    
     1.確定entities及relationships

    a)設計宏觀行為。你用此數(shù)據(jù)庫來做什么?比如,希望管理雇員的信息。

    b)確定entities。對于一系列的行為,確定所管理信息所涉及到的主題范圍。這將變成table。比如,雇用員工,指定具體部門,確定技能等級。

    c)確定relationships。看著行為,確定tables之間有何種關系。比如,在部門與雇員之間存在一種關系。給這種關系命名。

    d)細化行為。你從宏觀行為開始,現(xiàn)在仔細檢查這些行為,看有哪些行為能轉為微觀行為。比如,管理雇員的信息可細化為:
    ● 增加新員工
    ● 修改存在員工信息
    ● 刪除調走的員工

    e)確定業(yè)務規(guī)則。看著你的業(yè)務規(guī)則,確定你要采取哪種。比如,可能有這樣一種規(guī)則,一個部門有且只能有一個部門領導。這些規(guī)則將被設計到數(shù)據(jù)庫的結構中。

    范例:

    ACME是一個小公司,在5個地方都設有辦事處。當前,有75名員工。公司準備快速擴大規(guī)模,劃分了9個部門,每個部門都有其領導。
    為有助于尋求新的員工,人事部門規(guī)劃了68種技能,為將來人事管理作好準備。員工被招進時,每一種技能的專業(yè)等級都被確定。

    定義宏觀行為
    一些ACME公司的宏觀行為包括:
    ● 招聘員工
    ● 解雇員工
    ● 管理員工個人信息
    ● 管理公司所需的技能信息
    ● 管理哪位員工有哪些技能
    ● 管理部門信息
    ● 管理辦事處信息

    確定entities及relationships
    我們可以確定要存放信息的主題領域(表)及其關系,并創(chuàng)建一個基于宏觀行為及描述的圖表。
    我們用方框來代表table,用菱形代表relationship。我們可以確定哪些relationship是一對多,一對一,及多對多。
    這是一個E-R草圖,以后會細化。

    image

    細化宏觀行為
    以下微觀行為基于上面宏觀行為而形成:
    ● 增加或刪除一個員工
    ● 增加或刪除一個辦事處
    ● 列出一個部門中的所有員工
    ● 增加一項技能
    ● 增加一個員工的一項技能
    ● 確定一個員工的技能
    ● 確定一個員工每項技能的等級
    ● 確定所有擁有相同等級的某項技能的員工
    ● 修改員工的技能等級

    這些微觀行為可用來確定需要哪些table或relationship。

    確定業(yè)務規(guī)則
    業(yè)務規(guī)則常用于確定一對多,一對一,及多對多關系。
    相關的業(yè)務規(guī)則可能有:
    ● 現(xiàn)在有5個辦事處;最多允許擴展到10個。
    ● 員工可以改變部門或辦事處
    ● 每個部門有一個部門領導
    ● 每個辦事處至多有3個電話號碼
    ● 每個電話號碼有一個或多個擴展
    ● 員工被招進時,每一種技能的專業(yè)等級都被確定。
    ● 每位員工擁有3到20個技能
    ● 某位員工可能被安排在一個辦事處,也可能不安排辦事處。

    2.確定所需數(shù)據(jù)

    要確定所需數(shù)據(jù):
    1. 確定支持數(shù)據(jù)
    2. 列出所要跟蹤的所有數(shù)據(jù)。描述table(主題)的數(shù)據(jù)回答這些問題:誰,什么,哪里,何時,以及為什么
    3. 為每個table建立數(shù)據(jù)
    4. 列出每個table目前看起來合適的可用數(shù)據(jù)
    5. 為每個relationship設置數(shù)據(jù)
    6. 如果有,為每個relationship列出適用的數(shù)據(jù)

    確定支持數(shù)據(jù)

    你所確定的支持數(shù)據(jù)將會成為table中的字段名。比如,下列數(shù)據(jù)將適用于表Employee,表Skill,表Expert In。

    image

    如果將這些數(shù)據(jù)畫成圖表,就像:

    image

    需要注意:
    ● 在確定支持數(shù)據(jù)時,請一定要參考你之前所確定的宏觀行為,以清楚如何利用這些數(shù)據(jù)。
    ● 比如,如果你知道你需要所有員工的按姓氏排序的列表,確保你將支持數(shù)據(jù)分解為名字與姓氏,這比簡單地提供一個名字會更好。
    ● 你所選擇的名稱最好保持一致性。這將更易于維護數(shù)據(jù)庫,也更易于閱讀所輸出的報表。
    ● 比如,如果你在某些地方用了一個縮寫名稱Emp_status,你就不應該在另外一個地方使用全名(Empolyee_ID)。相反,這些名稱應當是Emp_status及Emp_id。
    ● 數(shù)據(jù)是否與正確的table相對應無關緊要,你可以根據(jù)自己的喜好來定。在下節(jié)中,你會通過測試對此作出判斷。

    3.標準化數(shù)據(jù)

    標準化是你用以消除數(shù)據(jù)冗余及確保數(shù)據(jù)與正確的table或relationship相關聯(lián)的一系列測試。共有5個測試。本節(jié)中,我們將討論經常使用的3個。
    關于標準化測試的更多信息,請參考有關數(shù)據(jù)庫設計的書籍。

    標準化格式
    標準化格式是標準化數(shù)據(jù)的常用測試方式。你的數(shù)據(jù)通過第一遍測試后,就被認為是達到第一標準化格式;通過第二遍測試,達到第二標準化格式;通過第三遍測試,達到第三標準化格式。

    如何標準格式:
    1. 列出數(shù)據(jù)
    2. 為每個表確定至少一個鍵。每個表必須有一個主鍵。
    3. 確定relationships的鍵。relationships的鍵是連接兩個表的鍵。
    4. 檢查支持數(shù)據(jù)列表中的計算數(shù)據(jù)。計算數(shù)據(jù)通常不保存在數(shù)據(jù)庫中。
    5. 將數(shù)據(jù)放在第一遍的標準化格式中:
    6. 從tables及relationships除去重復的數(shù)據(jù)。
    7. 以你所除去數(shù)據(jù)創(chuàng)建一個或更多的tables及relationships。
    8. 將數(shù)據(jù)放在第二遍的標準化格式中:
    9. 用多于一個以上的鍵確定tables及relationships。
    10. 除去只依賴于鍵一部分的數(shù)據(jù)。
    11. 以你所除去數(shù)據(jù)創(chuàng)建一個或更多的tables及relationships。
    12. 將數(shù)據(jù)放在第三遍的標準化格式中:
    13. 除去那些依賴于tables或relationships中其他數(shù)據(jù),并且不是鍵的數(shù)據(jù)。
    14. 以你所除去數(shù)據(jù)創(chuàng)建一個或更多的tables及relationships。

    數(shù)據(jù)與鍵
    在你開始標準化(測試數(shù)據(jù))前,簡單地列出數(shù)據(jù),并為每張表確定一個唯一的主鍵。這個鍵可以由一個字段或幾個字段(連鎖鍵)組成。

    主鍵是一張表中唯一區(qū)分各行的一組字段。Employee表的主鍵是Employee ID字段。Works In relationship中的主鍵包括Office Code及Employee ID字段。給數(shù)據(jù)庫中每一relationship給出一個鍵,從其所連接的每一個table中抽取其鍵產生。
    image

    將數(shù)據(jù)放在第一遍的標準化格式中
    ● 除去重復的組
    ● 要測試第一遍標準化格式,除去重復的組,并將它們放進他們各自的一張表中。
    ● 在下面的例子中,Phone Number可以重復。(一個工作人員可以有多于一個的電話號碼。)將重復的組除去,創(chuàng)建一個名為Telephone的新表。在Telephone與Office創(chuàng)建一個名為Associated With的relationship。

    將數(shù)據(jù)放在第二遍的標準化格式中
    ● 除去那些不依賴于整個鍵的數(shù)據(jù)。
    ● 只看那些有一個以上鍵的tables及relationships。要測試第二遍標準化格式,除去那些不依賴于整個鍵的任何數(shù)據(jù)(組成鍵的所有字段)。
    ● 在此例中,原Employee表有一個由兩個字段組成的鍵。一些數(shù)據(jù)不依賴于整個鍵;例如,department name只依賴于其中一個鍵(Department ID)。因此,Department ID,其他Employee數(shù)據(jù)并不依賴于它,應移至一個名為Department的新表中,并為Employee及Department建立一個名為Assigned To的relationship。
    image

    將數(shù)據(jù)放在第三遍的標準化格式中
    ● 除去那些不直接依賴于鍵的數(shù)據(jù)。
    ● 要測試第三遍標準化格式,除去那些不是直接依賴于鍵,而是依賴于其他數(shù)據(jù)的數(shù)據(jù)。
    ● 在此例中,原Employee表有依賴于其鍵(Employee ID)的數(shù)據(jù)。然而,office location及office phone依賴于其他字段,即Office Code。它們不直接依賴于Employee ID鍵。將這組數(shù)據(jù),包括Office Code,移至一個名為Office的新表中,并為Employee及Office建立一個名為Works In的relationship。

    image



    4.考量關系

    當你完成標準化進程后,你的設計已經差不多完成了。你所需要做的,就是考量關系。

    考量帶有數(shù)據(jù)的關系
    你的一些relationship可能集含有數(shù)據(jù)。這經常發(fā)生在多對多的關系中。

    image

    遇到這種情況,將relationship轉化為一個table。relationship的鍵依舊成為table中的鍵。

    考量沒有數(shù)據(jù)的關系
    要實現(xiàn)沒有數(shù)據(jù)的關系,你需要定義外部鍵。外部鍵是含有另外一個表中主鍵的一個或多個字段。外部鍵使你能同時連接多表數(shù)據(jù)。

    有一些基本原則能幫助你決定將這些鍵放在哪里:

    一對多 在一對多關系中,“一”中的主鍵放在“多”中。此例中,外部鍵放在Employee表中。

    image

    一對一 在一對一關系中,外部鍵可以放進任一表中。如果必須要放在某一邊,而不能放在另一邊,應該放在必須的一邊。此例中,外部鍵(Head ID)在Department表中,因為這是必需的。

    image

    多對多 在多對多關系中,用兩個外部鍵來創(chuàng)建一個新表。已存的舊表通過這個新表來發(fā)生聯(lián)系。
    image


    5.檢驗設計

    在你完成設計之前,你需要確保它滿足你的需要。檢查你在一開始時所定義的行為,確認你可以獲取行為所需要的所有數(shù)據(jù):
    ● 你能找到一個路徑來等到你所需要的所有信息嗎?
    ● 設計是否滿足了你的需要?
    ● 所有需要的數(shù)據(jù)都可用嗎?
    如果你對以上的問題都回答是,你已經差不多完成設計了。

    最終設計
    最終設計看起來就像這樣:

    image


    設計數(shù)據(jù)庫的表屬性
    數(shù)據(jù)庫設計需要確定有什么表,每張表有什么字段。此節(jié)討論如何指定各字段的屬性。

    對于每一字段,你必須決定字段名,數(shù)據(jù)類型及大小,是否允許NULL值,以及你是否希望數(shù)據(jù)庫限制字段中所允許的值。

    選擇字段名
    字段名可以是字母、數(shù)字或符號的任意組合。然而,如果字段名包括了字母、數(shù)字或下劃線、或并不以字母打頭,或者它是個關鍵字(詳見關鍵字表),那么當使用字段名稱時,必須用雙引號括起來。

    為字段選擇數(shù)據(jù)類型
    SQL Anywhere支持的數(shù)據(jù)類型包括:
    整數(shù)(int, integer, smallint)
    小數(shù)(decimal, numeric)
    浮點數(shù)(float, double)
    字符型(char, varchar, long varchar)
    二進制數(shù)據(jù)類型(binary, long binary)
    日期/時間類型(date, time, timestamp)
    用戶自定義類型

    關于數(shù)據(jù)類型的內容,請參見“SQL Anywhere數(shù)據(jù)類型”一節(jié)。字段的數(shù)據(jù)類型影響字段的最大尺寸。例如,如果你指定SMALLINT,此字段可以容納32,767的整數(shù)。INTEGER可以容納2,147,483,647的整數(shù)。對CHAR來講,字段的最大值必須指定。

    長二進制的數(shù)據(jù)類型可用來在數(shù)據(jù)庫中保存例如圖像(如位圖)或者文字編輯文檔。這些類型的信息通常被稱為二進制大型對象,或者BLOBS。

    關于每一數(shù)據(jù)類型的完整描述,見“SQL Anywhere數(shù)據(jù)類型”。

    NULL與NOT NULL

    如果一個字段值是必填的,你就將此字段定義為NOT NULL。否則,字段值可以為NULL值,即可以有空值。SQL中的默認值是允許空值;你應該顯示地將字段定義為NOT NULL,除非你有好理由將其設為允許空值。

    關于NULL值的完整描述,請見“NULL value”。有關其對比用法,見“Search conditions”。

    選擇約束

    盡管字段的數(shù)據(jù)類型限制了能存在字段中的數(shù)據(jù)(例如,只能存數(shù)字或日期),你或許希望更進一步來約束其允許值。

    你可以通過指定一個“CHECK”約束來限制任意字段的值。你可以使用能在WHERE子句中出現(xiàn)的任何有效條件來約束被允許的值,盡管大多數(shù)CHECK約束使用BETWEEN或IN條件。

    更多信息

    有關有效條件的更多信息,見“Search conditions”。有關如何為表及字段指定約束,見“Ensuring Data Integrity”。

    例子
    例子數(shù)據(jù)庫中有一個名為department的表,字段是dept_id, dept_name, dept_head_id。其定義如下:
    image

    注意每一字段都被指定為“not null”。這種情況下,表中每一記錄的所有字段的數(shù)據(jù)都必填。

    選擇主鍵及外部鍵
    主鍵是唯一識別表中每一項記錄的字段。如何你的表已經正確標準化,主鍵應當成為數(shù)據(jù)庫設計的一部分。
    外部鍵是包含另一表中主鍵值的一個或一組字段。外部鍵關系在數(shù)據(jù)庫中建立了一對一及一對多關系。如果你的設計已經正確標準化,外部鍵應當成為數(shù)據(jù)庫設計的一部分。
    posted on 2008-01-24 10:07 大衛(wèi) 閱讀(88650) 評論(48)  編輯  收藏 所屬分類: 經驗

    FeedBack:
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2008-09-23 09:43 陳勇
    寫的真棒,真希望能有機會多向你學習  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2008-10-20 09:49 whb
    找了好久,原來是在你這兒,謝謝了  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2008-11-23 22:29 冷風
    哥們,寫的真好,路過,借鑒了  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2008-12-15 08:26 
    OK  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2008-12-27 21:48 tangjx
    謝謝了  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2009-02-14 15:46 king
    淺顯易懂,借鑒了!謝謝  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2009-03-03 13:37 胖胖
    還欠點火候...  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-03-18 13:34 sd
    sd  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2009-04-08 11:57 追夢
    真的很棒啊!!謝謝!學習了!
      回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-04-10 15:26 粉菜鳥
    O(∩_∩)O謝謝  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-04-25 20:02 goodboy
    太喜歡了。
    謝謝  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-05-04 16:38 flyjiangs
    好東西,學習下。  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-05-24 19:45 殤雪
    謝謝了,雖然不是很懂。但還是很有啟發(fā)的!  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2009-07-12 00:02 Cheney
    幫我的忙了...  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-10-23 13:59 gaosnan
    承教了,謝謝!  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2009-11-13 23:14 嘿嘿
    承教了  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2009-12-03 11:27 feng
    寫的很好,不過對一個初學者來說,在理解上有一定難度
      回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-12-06 15:10 zaccheus
    寫得很high  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2009-12-16 11:09 rubin2k
    淺顯易懂,寫的很好  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-01-18 15:35 冰涼
    寫的不錯  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2010-03-18 16:37 123
    為什么圖片看不到  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-03-26 14:31 222
    看不到圖  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-04-27 21:58 冠軍
    謝謝你!
      回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-04-30 08:54 地方法
    這只是書面談兵,實際操作有很多你沒說。。  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-05-10 20:41 ...
    @胖胖
      回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-06-01 17:33 軟件數(shù)據(jù)庫
    真的不錯 想向你學習的,希望繼續(xù)學習的  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-06-11 20:24 工號
    路過,寫的很不錯,借鑒一下啊  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-09-08 11:40 Pily
    我要向樓主多學習了  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2010-09-17 11:00 123
    我才學了兩節(jié)課,完全看不懂  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-10-09 15:13 曹志耀
    梵蒂岡  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2010-10-29 10:43 me
    haohao  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2010-12-03 11:44 小林
    我也看不到圖,誰能給發(fā)下acongzuibang@163.com
    先謝謝了  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2010-12-22 10:16 tt
    沒圖?  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2011-05-23 19:31 travller
    怎么感覺和我上學時學的不大一樣呢。。。
    沒這么復雜吧,不是又固定的步驟么。。。。。。  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2011-09-01 15:19 carrot
    為啥看不到圖片???
    不過還是頂下···  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2011-09-05 10:17 正要寫此類文檔人
    如果有一個詳細實例就更好了。  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2011-12-30 11:41 程序員之家
    不錯頂你一下啊   回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2012-03-27 15:21 gad
    如果有實例那就更好了。  回復  更多評論
      
    # fuck 2012-09-27 11:03 fuck
    fuck fuck fuck !!!!!!!!!!!!!!!!!!!!!  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2012-12-26 14:48 hello
    @陳勇
    寫的真好  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2013-03-26 08:50 gr
    ty43  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2013-06-27 14:01 lala
    mark  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2013-06-27 14:02 lala
    @lala
    mark  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2013-06-27 14:04 lala
    test  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2013-07-08 11:27 beejin
    原文在哪???因為沒圖,效果大打折扣耶。3q。  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏)[未登錄] 2013-11-19 23:31 wxyjuly
    內容寫得不錯,可惜圖片掛了。  回復  更多評論
      
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2013-12-26 14:47 原文地址
    # re: 數(shù)據(jù)庫設計5步驟(收藏) 2014-01-02 16:54 莫慢慢
    差  回復  更多評論
      
    主站蜘蛛池模板: 免费大片黄手机在线观看| 亚洲精品你懂的在线观看| 黄色a三级免费看| 亚洲精品无码久久久影院相关影片| 中文字幕天天躁日日躁狠狠躁免费| 亚洲人成色777777老人头| 亚洲一区二区三区自拍公司| 100000免费啪啪18免进| 免费精品国产自产拍在线观看| 亚洲∧v久久久无码精品| 日本一区二区三区日本免费| 最新国产乱人伦偷精品免费网站| 中文无码亚洲精品字幕| 亚洲色大成网站WWW久久九九| 永久免费毛片在线播放| 两个人的视频www免费| 亚洲国产精品无码中文lv| 亚洲丝袜美腿视频| 国产成人精品亚洲精品| 一个人免费观看在线视频www| 国产精品免费一区二区三区 | eeuss免费天堂影院| 91亚洲自偷在线观看国产馆| 亚洲伊人成无码综合网| 一二三四免费观看在线视频中文版| 福利免费在线观看| MM1313亚洲精品无码久久| 亚洲精品线在线观看| 久久久久亚洲AV成人网人人软件 | 国产aⅴ无码专区亚洲av| 国产成人3p视频免费观看 | 大地资源二在线观看免费高清 | 无码国产精品一区二区免费| a毛片久久免费观看| 窝窝影视午夜看片免费| 中文字幕在线观看亚洲日韩| 精品亚洲成AV人在线观看| 亚洲色无码一区二区三区| 又色又污又黄无遮挡的免费视| A在线观看免费网站大全| 人妻丰满熟妇无码区免费|