邏輯資料庫設計
步驟1:建立並檢查er模型
在分析階段。將確定一系列的使用者檢視。根據交迭的數量,為了便於管理可能需要合併一些檢視。這個步驟地目的是為了每個這樣的檢視(可能是合併的)構建乙個公司(或者是公司的一部分)的邏輯資料模型。
步驟1.1:標識實體
標識和文件化公司檢視中的主要的實體。
步驟1.2:標識關係
標識已經確定的實體間存在的主要關係,確定關係的多樣性約束。文件化關係,必要時使用er模型。
步驟1.3:標識實體或關係的有關屬性
將屬性與合適的實體和關係聯絡起來,表示簡單/復合的屬性、單值/多值的屬性和派生的屬性,文件化屬性。
步驟1.4:確定屬性域
確定er模型中的屬性的域,文件化屬性域。
步驟1.5:確定候選鍵、主鍵和備用鍵屬性
為每個實體確定候選鍵,如果有多於乙個的候選鍵,則選擇其中的乙個作為主鍵,其他的作為備用鍵。對每個實體的候選鍵、主鍵和備用鍵進行存檔。
步驟1.6:特化/泛化實體(可選步驟)
如果合適的話,標識超類和子類實體。
步驟1.7:檢查模型的資料冗餘
檢查er模型確保沒有冗餘,特別要反覆檢查1:1關係並刪除冗餘關係。
步驟1.8:檢查模型是否支援使用者事務
確保er模型支援使用者所需的檢視事務。
步驟1.9:與使用者一起檢查模型
步驟2:將er模型對映為表
將er模型對映為一組表,並檢查表的結構。
步驟2.1:對映表
在這一步驟中,我們為步驟1建立的er模型建立基本表來描繪實體、關係、屬性和約束。表結構是從er模型描述的資訊中派生出來的。這些資訊包括資料字典和其他描述模型的文件。同樣,要為在給er模型建立表的過程中產生的新的主鍵和候選鍵建立文件。
建立表的基本規則如下: l
為每個實體建立乙個包括這個實體的所有簡單屬性的表。 l
可用主鍵/外來鍵機制來描述每個關係。為了確定外來鍵,必須在關係中標識父實體和子實體。父實體把它的乙個主鍵放置到子實體中,作為外來鍵。下表給出了從er模型建立表的規則。
如何將實體、關係和多值屬性表達為表的總結
實體/關係/屬性
表達為表
強實體或弱實體
建立包含所有簡單屬性的表
1:*二元關係
將「一」端實體的主鍵複製到表達「多」端實體的表中,關係中的任何屬性也複製到「多」端的表中
1:*遞迴關係
「一」端的實體和「多」端 的實體是一樣的,代表實體的表有主鍵的另乙個拷貝,這個拷貝是被重新命名的,並且有關係的其他屬性
1:1二元關係:
兩端都是強制參與
將實體組合成一張表
一端是強制參與
將有可選參與的實體的主鍵複製到表達有強制參與的實體的表中,關係的任何屬性也被複製到表達有強制參與的實體的表中
兩端都是可選參與
沒有更多的資訊,將乙個實體的主鍵拷貝到另乙個實體中。但如果資訊是可獲得的,則將更具有強制參與的實體作為子實體
*:*二元關係/複雜關係
建立表達關係的表,此表中包含任何與關係有關的屬性,將每個父實體中的主鍵複製到新錶中作為外來鍵
多值屬性
建立乙個表達多值屬性的表,並將父實體的主鍵複製到新錶中作為外來鍵 l
對每個超類/子類關係,可以定義超類作為父實體而子類為子實體。關於如何最好地描述這樣的關係為乙個表或多個表,有各種不同的方法。對最合適方法的選擇基於在超類/子類關係中的參與約束和無連線的約束,下表給出了如何從er模型對映表的總結。
表示基於參與和無連線約束的超類/子類關係的可選的選項
參與約束
無連線約束
需要的表
強制非無連線約束(and)
一張錶可選
非無連線約束(and)
兩張表:乙個表用於超類,另一張表用於所有的子類
強制無連線約束(or)
多張表:每個表用於超類/子類的組合
可選無連線約束(or)
多張表:一張表用於超類,其他的用於每個子類
步驟2.2:用規範化方法檢查表結構
這個步驟的目的是檢查在步驟2.1中建立的每個表的列的分組。可以用規範化的規則檢查每個表的組成。每個表最少應該是第三正規化(3nf)的。
步驟2.3:檢查表是否支援使用者事務
在這個步驟中,我們要確定表是否支援檢視所需要的事務。檢視需要的事務可以從使用者需求說明書確定。
步驟2.4:檢查業務規則
檢查邏輯資料庫設計中表達的所有業務規則。這些約束包括:指明需要的資料、屬性域約束、實體完整性、多樣性、參照完整性和其他業務規則。對所有的整體性約束進行存檔。
步驟2.5:與使用者討論邏輯資料模型
確保邏輯資料模型是公司(或者是公司一部分)所需資料的真實的模型化描述。
步驟2.6:構建並檢查全域性邏輯資料模型
合併單個的區域性邏輯資料模型為乙個完整的全域性邏輯資料模型,以描述公司(或是公司的一部分)的資料要求。 步驟
2.6.1
:合併區域性邏輯資料模型為全域性模型
合併單個的區域性邏輯資料模型為乙個完整的全域性邏輯資料模型。這個步驟的一些基本的任務如下: l
回顧實體/表的名字和內容以及它們的主鍵。 l
回顧關係/外來鍵的名字和內容。 l
從區域性資料模型合併實體/表。 l
包含(不是合併)對每個區域性資料模型唯一的實體/表。 l
從區域性邏輯資料模型中合併關係。 l
包含(不是合併)在每個區域性邏輯資料模型中唯一的關係。 l
從區域性資料模型合併關係/外來鍵。 l
包含(不是合併)對每個區域性資料模型唯一關係/外來鍵。 l
檢查漏掉的實體/表和關係/外來鍵。 l
檢查外來鍵。 l
檢查業務規則。 l
畫出全域性er/表圖。 l
更新文件。 步驟
2.6.2
:檢查全域性邏輯資料模型
這個步驟的作用與步驟2.3和2.4相同,也是用規範化檢查為全域性資料模型建立的表的結構,然後檢查這些表能否支援所有的使用者事務。 步驟
2.6.3
:檢查未來的可變性
確定在可預見的將來是否存在有意義的變化並估計全域性資料模型是否能適應這些變化。 步驟
2.6.4
:與使用者討論全域性資料模型
確保我們建立的全域性資料模型是公司(或者是公司的一部分)需要的資料的真實描述。
物理資料庫設計
步驟3:為目標資料庫管理系統轉換全域性邏輯資料模型
從邏輯資料模型中產生乙個基本表的工作集。
步驟3.1:設計基本表
決定如何在目標資料庫管理系統中表述在邏輯資料模型中建立的基本表。為表的設計建立文件。
步驟3.2:設計派生資料的表示
考慮如何表達派生資料。需做出的選擇是在每次需要時計算派生列還是引入冗餘列來在表中儲存派生資料。將派生資料的設計存檔。
步驟3.3:設計其他業務規則
為目標dbms設計其他的業務規則,將對其他業務規則的設計存檔。
步驟4:選擇檔案組織方式和索引
決定要用來儲存基本表的檔案組織方式,也就是說,表和記錄在輔存中的訪問方式。考慮增加索引來提高效能。
步驟4.1:分析事務
理解在資料庫中執行的事務的功能並分析重要的事務。
步驟4.2:選擇檔案組織方式
為每個基本表確定乙個有效的檔案組織方式。
步驟4.3:選擇索引
確定增加索引是否會提高系統的整體效能。
步驟5:設計使用者檢視
設計在需求收集和分析階段標識的使用者檢視。
步驟6:設計安全性機制
為資料庫實現設計安全機制,這些安全性機制是在需要收集和分析階段由使用者指定的。將對安全性機制的設計存檔。
步驟7:引入受控冗餘的考慮
確定引入受控的冗餘以降低規範化規則是否會提高系統的整體功能。考慮重複的列或者連線一些表可以獲得提高效能的目的。尤其是考慮合併一對一(1:1)關係,在一對多(1:*)的關係中重複非鍵列來減少連線,在一對多(1:*)的關係中重複外來鍵列來減少連線,在多對多(*:*)關係中用重複列來減少連線,可以引入重複的組,建立摘要表和分割槽表。
步驟8:監視和呼叫執行的系統
監控執行的系統並提高系統效能來改進不合適的設計決定或者反映變化的需求
邏輯設計方法學 6 多時鐘設計技術
在進行乙個含多個時鐘的設計時,在 和綜合過程中需要遵循一定的準則,這樣會帶來很大的好處。通用的準則如下 xilinx的開發工具vivado有 project mode 和 non project mode 在 non project mode 中,我們經常使用指令碼進行開發。同樣在 的時候,也會編寫...
邏輯設計方法學 5 控制時鐘偏移
整個晶元中時鐘訊號到達時間的差異成為時鐘偏移,即clock skew。在時序設計的時候,滿足暫存器的建立時間和保持時間的要求是最基本的設計原則。在相鄰的暫存器之間的資料傳輸延遲,與時鐘偏移應該滿足一定的關係,在本節中,我們來詳細地討論其關係。通過圖1來看相鄰暫存器之間傳輸的時候的資料延遲和時鐘偏移,...
邏輯設計方法學 7 跨時鐘域
如果多個時鐘都起源於同一時鐘,並且它們的香味和頻率關係是已知的,那麼這些時鐘可以看成是跨同步時鐘域的時鐘。按照相位和頻率的關係,可以將這些時鐘分成以下型別 假定兩個時鐘之間的相位和時鐘抖動相同,並假定他們之間的路徑已經按同樣的時鐘延遲和偏移引數進行了平衡。除此之外,還假設這兩個時鐘起始處的相位差為零...