1數(shù)據(jù)結(jié)構(gòu)設(shè)計_第1頁
1數(shù)據(jù)結(jié)構(gòu)設(shè)計_第2頁
1數(shù)據(jù)結(jié)構(gòu)設(shè)計_第3頁
1數(shù)據(jù)結(jié)構(gòu)設(shè)計_第4頁
1數(shù)據(jù)結(jié)構(gòu)設(shè)計_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第2章數(shù)據(jù)定義(一)

數(shù)據(jù)結(jié)構(gòu)設(shè)計

2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 1數(shù)據(jù)結(jié)構(gòu)設(shè)計的三個階段 2大型項目的設(shè)計 3小型項目的設(shè)計 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述第一階段

概念結(jié)構(gòu)設(shè)計第二階段

邏輯結(jié)構(gòu)設(shè)計第三階段

物理結(jié)構(gòu)設(shè)計概念結(jié)構(gòu)設(shè)計:將需求分析得到的用戶需求抽象為概念模型的過程成果:ER圖邏輯結(jié)構(gòu)設(shè)計:將概念模型換為關(guān)系模型,并通過規(guī)范化設(shè)計對數(shù)據(jù)模型進行優(yōu)化成果:關(guān)系模型物理結(jié)構(gòu)設(shè)計:選擇存儲結(jié)構(gòu)和存取方法,設(shè)計索引等成果:數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)設(shè)計的三個階段2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 1數(shù)據(jù)結(jié)構(gòu)設(shè)計的三個階段 2大型項目的設(shè)計 3小型項目的設(shè)計 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計

2大型項目的設(shè)計大型項目的數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜一般是按照三個階段的要求概念結(jié)構(gòu)設(shè)計、邏輯結(jié)構(gòu)設(shè)計、物理結(jié)構(gòu)設(shè)計借助專業(yè)的軟件設(shè)計工具PowerDesigner(SyBase公司)ERWin(CA公司)EA(SparxSystem公司)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 1數(shù)據(jù)結(jié)構(gòu)設(shè)計的三個階段 2大型項目的設(shè)計 3小型項目的設(shè)計 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計3小型項目的設(shè)計小型項目的數(shù)據(jù)結(jié)構(gòu)比較簡單根據(jù)關(guān)系模型的要求和范式理論的原理直接設(shè)計關(guān)系模型,甚至是直接設(shè)計物理模型小型的軟件設(shè)計工具MySQLWorkbench小型項目的設(shè)計工具繪制擴展ER圖(EER)添加表添加聯(lián)系(1:1、1對n等)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 1擴展ER圖 2表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計2.1.2擴展ER圖和表結(jié)構(gòu)文檔擴展ER圖擴展ER圖與ER圖類似,但包含了更多信息2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 1擴展ER圖 2表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計2.1.2擴展ER圖和表結(jié)構(gòu)文檔表結(jié)構(gòu)文檔擴展ER圖:非常直觀、簡潔表結(jié)構(gòu)文檔:內(nèi)容詳細、完整2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔 2.1.4成績管理系統(tǒng)的設(shè)計1需求分析用戶需求將手機號碼表的數(shù)據(jù)保存到數(shù)據(jù)庫中,用數(shù)據(jù)庫管理系統(tǒng)來組織、存儲和管理這些數(shù)據(jù)需求分析保存聯(lián)系人姓名、電話號碼一個聯(lián)系人可能有多個電話號碼如果有多個電話號碼,還需要保存電話號碼的說明信息2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔 2.1.4成績管理系統(tǒng)的設(shè)計2規(guī)范化設(shè)計關(guān)系模型聯(lián)系人(聯(lián)系人id,姓名,備注)電話(電話id,電話號碼,說明,備注,聯(lián)系人id)二維表及其數(shù)據(jù)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔 2.1.4成績管理系統(tǒng)的設(shè)計3擴展ER圖2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔 2.1.3聯(lián)系人系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔 2.1.4成績管理系統(tǒng)的設(shè)計4表結(jié)構(gòu)文檔2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔

2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔1需求分析1用戶需求小型成績管理系統(tǒng),用于計算機系的教師對學生成績的管理,功能包括成績錄入、修改、查詢和統(tǒng)計分析。數(shù)據(jù)全部保存在兩個Excel工作表中1需求分析功能需求保存學生的個人及相關(guān)數(shù)據(jù),如班級信息保存學生的成績信息及相關(guān)數(shù)據(jù),如課程、授課教師等提供查詢功能,查詢某位學生的個人信息提供查詢功能,查詢某位學生的成績提供各種統(tǒng)計功能,統(tǒng)計學生、班級、或課程的成績信息對數(shù)據(jù)進行管理和維護功能實現(xiàn)上述功能可以由數(shù)據(jù)庫管理系統(tǒng)實現(xiàn)需要按照規(guī)范化設(shè)計的要求對數(shù)據(jù)結(jié)構(gòu)進行設(shè)計實施數(shù)據(jù)定義:創(chuàng)建數(shù)據(jù)庫、數(shù)據(jù)表數(shù)據(jù)操縱(第2章)數(shù)據(jù)查詢(第4章)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔

2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔2規(guī)范化設(shè)計采用1.2.6“規(guī)范化設(shè)計的實施”提出的實施方法(1)列出所有二維表(2)設(shè)置主鍵和外鍵參照(3)檢查屬性值的原子性(4)檢查屬性值是否重復(fù)(5)檢查表是否包含多個實體(6)合并相同的實體2規(guī)范化設(shè)計關(guān)系模型班級(班級id,班級名)教師(教師id,姓名,電話)課程(課程id,課程名,課時,教師id)學生(學生id,學號,姓名,性別,學籍,出生日期,身份證號,手機號,班級id)成績(成績id,學生id,課程id,成績)二維表及其數(shù)據(jù)2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔

2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔3擴展ER圖按照命名規(guī)范對表名和列名進行適當?shù)拿?,根?jù)業(yè)務(wù)需求,設(shè)計合適的索引,畫出小型成績管理系統(tǒng)的擴展ER圖表名和列名的命名是十分重要的好的命名易于理解,勝過注釋這門課程要求表名和列名全部用英文命名表名:用模塊名或table的縮寫tbl_作為前綴列名:用column的縮寫col_作為前綴主鍵名:是在表名前加上id_作為前綴外鍵名:與主鍵同名3擴展ER圖2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計2.1數(shù)據(jù)結(jié)構(gòu)設(shè)計 2.1.1數(shù)據(jù)結(jié)構(gòu)設(shè)計概述 2.1.2擴展ER圖和表結(jié)構(gòu)文檔

2.1.3聯(lián)系人系統(tǒng)的設(shè)計 2.1.4成績管理系統(tǒng)的設(shè)計 1需求分析 2規(guī)范化設(shè)計 3用MySQLWorkbench5.1繪制擴展ER圖 4表結(jié)構(gòu)文檔4表結(jié)構(gòu)文檔4表結(jié)構(gòu)文檔2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項

2.2.1嚴格滿足規(guī)范化要求 2.2.2制定數(shù)據(jù)完整性約束 2.2.3選擇合適的主鍵形式 2.2.4選擇合適的數(shù)據(jù)類型 2.2.5遵守命名規(guī)范 2.2.6考慮可擴充性 2.2.7合理使用索引 2.2.8充分利用視圖2.2.1嚴格滿足規(guī)范化要求規(guī)范化設(shè)計的目標盡量低的數(shù)據(jù)冗余沒有插入異常沒有刪除異常沒有更新異常數(shù)據(jù)庫在性能、擴展性和數(shù)據(jù)完整性方面達到最好的平衡2.2.1嚴格滿足規(guī)范化要求滿足關(guān)系模型的基本特征六項,重點是屬性的原子性,屬性中不能有子屬性滿足關(guān)系模型的數(shù)據(jù)完整性約束重點是主鍵約束,每張表必須有一個主鍵,應(yīng)該是單屬性的主鍵滿足規(guī)范化設(shè)計的要求1NF:屬性值必須是原子的2NF:不允許存在部分依賴3NF:不允許存在傳遞依賴

總原則:一個實體集一張表通過拆分包含多個實體集的表來實現(xiàn)2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項

2.2.1嚴格滿足規(guī)范化要求 2.2.2制定數(shù)據(jù)完整性約束 2.2.3選擇合適的主鍵形式 2.2.4選擇合適的數(shù)據(jù)類型 2.2.5遵守命名規(guī)范 2.2.6考慮可擴充性 2.2.7合理使用索引 2.2.8充分利用視圖2.2.2制定數(shù)據(jù)完整性約束

實體完整性約束(主鍵約束)主鍵約束每個實體都必須有且只有一個主鍵主鍵有值不能重復(fù),也不能為空主鍵的形式主鍵應(yīng)該是無業(yè)務(wù)含義的單屬性主鍵,并設(shè)置為由程序自動賦值,通常是一個自增量的整數(shù)參照完整性約束外鍵約束外鍵的值只能取被參照的表的主鍵的值外鍵的值能否為空?有些業(yè)務(wù)不允許外鍵取空值,而有些業(yè)務(wù)允許外鍵取空值用戶定義完整性約束——唯一性約束唯一性約束具有唯一性約束的屬性不允許出現(xiàn)重復(fù)的值單屬性唯一性約束:不允許該屬性的值在不同行中出現(xiàn)重復(fù)的值屬性集唯一性約束:不允許組成屬性集的屬性值的組合出現(xiàn)重復(fù)唯一性約束與主鍵唯一性約束根據(jù)業(yè)務(wù)需求可能出現(xiàn)一次空值,主鍵則不允許出現(xiàn)空值一張表允許有多個唯一性約束,但只能有一個主鍵約束用戶定義完整性約束——非空約束非空約束該屬性的值不允許取空值空值與0的區(qū)別空值是沒有值,0是有值,值為0算術(shù)運算:1+0=1;1+null=null用戶定義完整性約束——檢查約束檢查約束對屬性的取值范圍作進一步的限制例子百分制成績的有效范圍是0~100分用戶定義完整性約束——默認約束默認約束當插入行時,如果沒有為該列提供值,該列的值將被賦給默認約束指定的值例子課程關(guān)系的課時數(shù)默認值是64課時2.2.2制定數(shù)據(jù)完整性約束正確地設(shè)置主鍵約束、外鍵約束以及用戶定義完整性約束后,數(shù)據(jù)庫管理系統(tǒng)能夠自動地保證數(shù)據(jù)完整性約束的實現(xiàn),而不需要人為的干預(yù),保存數(shù)據(jù)庫的完整性和一致性

2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項 2.2.1嚴格滿足規(guī)范化要求 2.2.2制定數(shù)據(jù)完整性約束 2.2.3選擇合適的主鍵形式 2.2.4選擇合適的數(shù)據(jù)類型 2.2.5遵守命名規(guī)范 2.2.6考慮可擴充性 2.2.7合理使用索引 2.2.8充分利用視圖2.2.3選擇合適的主鍵形式無業(yè)務(wù)含義的主鍵——自動增量的數(shù)字是一個整數(shù)或長整數(shù)由數(shù)據(jù)庫系統(tǒng)自動維護,不需手工輸入,通常也不允許手工輸入無業(yè)務(wù)含義的主鍵——uniqueidentifier類型128位,字符串6FA81B27-45D3-4864-98FF-37A321B44D03全球唯一標識符(GUID,GlobalUniqueIdentifier)可由內(nèi)置函數(shù)newId()生成,或由C#或Java等程序生成2.2.3選擇合適的主鍵形式有業(yè)務(wù)含義的主鍵——業(yè)務(wù)用的唯一標識這是用戶數(shù)據(jù)中的唯一標識,例如學號、身份證號碼等不建議采用這種方式有或無業(yè)務(wù)含義的主鍵——復(fù)合主鍵主鍵是一個多個屬性的屬性集強烈不建議采用這種方式2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項 2.2.1嚴格滿足規(guī)范化要求 2.2.2制定數(shù)據(jù)完整性約束

2.2.3選擇合適的主鍵形式

2.2.4選擇合適的數(shù)據(jù)類型 2.2.5遵守命名規(guī)范 2.2.6考慮可擴充性 2.2.7合理使用索引 2.2.8充分利用視圖2.2.4選擇合適的數(shù)據(jù)類型數(shù)據(jù)類型影響存放數(shù)據(jù)的格式、范圍、大小影響數(shù)據(jù)存取的空間效率和時間效率常用的數(shù)據(jù)類型精確數(shù)字近似數(shù)字日期和時間字符串二進制數(shù)據(jù)其他數(shù)字分類數(shù)據(jù)類型含義范圍說明精確數(shù)字tinyint微整型0~255范圍很小int整型-231~231比較大的數(shù)字(負20億到正20億)bigint長整型-263~263非常大的數(shù)字decimal(p,s)固定精度數(shù)-1038~1038更大的數(shù),p是精度,s是小數(shù)位money貨幣型約-1014~1014用于表示貨幣,四位小數(shù)近似數(shù)字real單精度數(shù)約-1038~1038很大的數(shù),但精度低float(n)雙精度數(shù)約-10308~10308最大的數(shù),精度不高字符串、日期和時間分類數(shù)據(jù)類型含義范圍說明日期datetime日期時間1753-01-01以后表示格式:'2017-08-1113:24:02'字符串varchar(n)變長字符串1~8000常用text文本最長2G需要時才用二進制image圖像數(shù)據(jù)最長2G保存圖片,但圖片常保存到文件中其他timestamp時間戳自動賦值用于防止第二類更新丟失table表類型二維表用于存儲結(jié)果集uniqueidentifierGUID類型16字節(jié)全球唯一標識符,作主鍵用2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項2.2數(shù)據(jù)結(jié)構(gòu)設(shè)計注意事項 2.2.1嚴格滿足規(guī)范化要求 2.2.2制定數(shù)據(jù)完整性約束 2.2.3選擇合適的主鍵形式 2.2.4選擇合適的數(shù)據(jù)類型 2.2.5遵守命名規(guī)范 2.2.6考慮可擴充性 2.2.7合理使用索引 2.2.8充分利用視圖2.2.5遵守命名規(guī)范命名規(guī)則命名規(guī)則是強制性的,不能違反命名規(guī)則比較寬泛大小寫無關(guān)可以用數(shù)字、字母、漢字甚至在需要時還可以嵌入空格例如[myname]命名規(guī)范命名規(guī)范是自愿性的,目的是增加代碼的可讀性命名規(guī)范比較嚴格每個公司都會有自己的命名規(guī)范birthday完整的、具有明確含義的英文單詞BIRTHDAYBirthday全部小寫,不要大寫或部分大寫2.2.5遵守命名規(guī)范命名規(guī)范2.2.5遵守命名規(guī)范iso盡量不用縮寫,用的話也用小寫ISOIso縮寫也不要大寫或部分大寫命名規(guī)范product_name兩個或多個單詞時,用下劃線分隔productnameproductName不要用空格來分隔,也不用駝峰命名法2.2.5遵守命名規(guī)范命名規(guī)范2.2.5遵守命名規(guī)范表名加上二或三字母的模塊名前綴列名普通列名加上col_前綴主鍵名在表名前加上id_前綴外鍵名與參照表中的主鍵名同名索引名加上idx_前綴(普通索引)加上idxu_前綴(唯一性索引)注意:各軟件公司有自己的命名規(guī)范,上述是本書的命名規(guī)范本課程的命名規(guī)范2.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論