『壹』 面試題_說說你是怎麼資料庫優化的
對sql語句優化:
就是能分開寫的語句就分開寫,不要一次性就解決,這樣對效率來說是很大的開銷的
避免使用不兼容的數據類型:
如float和int,char和varchar等都是不兼容的。
盡量避免在where子句中對欄位進行函數或表達式操作
避免使用isnotnull、in等一些無法讓系統使用索引操作的詞
合理使用exists,notexists字句
盡量避免在索引過的字元數據中,使用非打頭字母所有
避免困難的正規表達式
對mysql優化:
1.選取最適用的欄位屬性,可以的情況下,應該盡量把欄位設置為NOTNULL
2.使用連接(JOIN)來代替子查詢
3.使用聯合來代替手動創建的臨時表
4.增刪改或者多條查詢數據時使用事務操作
5.鎖定表(代替事務的另一種方法)
6.使用外鍵(鎖定表的方法可以維護數據的完整性,但它不能保證數據的關聯性,應該使用外鍵)
7.可以優化SQL查詢演算法,提高查詢速度8.給數據量大的查詢次數頻繁而修改次數少的數據表添加索引,提升查詢速度
面試題_說說你是怎麼資料庫優化的
標簽:鎖定oat試題數據表arc手動頻繁添加設置
『貳』 資料庫如何設計
資料庫設計的基本步驟
按照規范設計的方法,考慮資料庫及其應用系統開發全過程,將資料庫設計分為以下6個階段
1.需求分析
2.概念結構設計
3.邏輯結構設計
4.物理結構設計
5.資料庫實施
6.資料庫的運行和維護
資料庫設計通常分為6個階段1分析用戶的需求,包括數據、功能和性能需求;2概念結構設計:主要採用E-R模型進行設計,包括畫E-R圖;3邏輯結構設計:通過將轉換成表,實現從E-R模型到關系模型的轉換;4:主要是為所設計的資料庫選擇合適的和存取路徑;5資料庫的實施:包括編程、測試和試運行;6資料庫運行與維護:系統的運行與資料庫的日常維護。),主要討論其中的第3個階段,即邏輯設計。
在資料庫設計過程中,需求分析和概念設計可以獨立於任何資料庫管理系統進行,邏輯設計和物理設計與選用的DAMS密切相關。
1.需求分析階段(常用自頂向下)
進行資料庫設計首先必須准確了解和分析用戶需求(包括數據與處理)。需求分析是整個設計過程的基礎,也是最困難,最耗時的一步。需求分析是否做得充分和准確,決定了在其上構建資料庫大廈的速度與質量。需求分析做的不好,會導致整個資料庫設計返工重做。
需求分析的任務,是通過詳細調查現實世界要處理的對象,充分了解原系統工作概況,明確用戶的各種需求,然後在此基礎上確定新的系統功能,新系統還得充分考慮今後可能的擴充與改變,不僅僅能夠按當前應用需求來設計。
調查的重點是,數據與處理。達到信息要求,處理要求,安全性和完整性要求。
分析方法常用SA(Structured Analysis) 結構化分析方法,SA方法從最上層的系統組織結構入手,採用自頂向下,逐層分解的方式分析系統。
數據流圖表達了數據和處理過程的關系,在SA方法中,處理過程的處理邏輯常常藉助判定表或判定樹來描述。在處理功能逐步分解的同事,系統中的數據也逐級分解,形成若干層次的數據流圖。系統中的數據則藉助數據字典(data dictionary,DD)來描述。數據字典是系統中各類數據描述的集合,數據字典通常包括數據項,數據結構,數據流,數據存儲,和處理過程5個階段。
2.概念結構設計階段(常用自底向上)
概念結構設計是整個資料庫設計的關鍵,它通過對用戶需求進行綜合,歸納與抽象,形成了一個獨立於具體DBMS的概念模型。
設計概念結構通常有四類方法:
自頂向下。即首先定義全局概念結構的框架,再逐步細化。
自底向上。即首先定義各局部應用的概念結構,然後再將他們集成起來,得到全局概念結構。
逐步擴張。首先定義最重要的核心概念結構,然後向外擴張,以滾雪球的方式逐步生成其他的概念結構,直至總體概念結構。
混合策略。即自頂向下和自底向上相結合。
3.邏輯結構設計階段(E-R圖)
邏輯結構設計是將概念結構轉換為某個DBMS所支持的數據模型,並將進行優化。
在這階段,E-R圖顯得異常重要。大家要學會各個實體定義的屬性來畫出總體的E-R圖。
各分E-R圖之間的沖突主要有三類:屬性沖突,命名沖突,和結構沖突。
E-R圖向關系模型的轉換,要解決的問題是如何將實體性和實體間的聯系轉換為關系模式,如何確定這些關系模式的屬性和碼。
4.物理設計階段
物理設計是為邏輯數據結構模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。
首先要對運行的事務詳細分析,獲得選擇物理資料庫設計所需要的參數,其次,要充分了解所用的RDBMS的內部特徵,特別是系統提供的存取方法和存儲結構。
常用的存取方法有三類:1.索引方法,目前主要是B+樹索引方法。2.聚簇方法(Clustering)方法。3.是HASH方法。
5.資料庫實施階段
資料庫實施階段,設計人員運營DBMS提供的資料庫語言(如sql)及其宿主語言,根據邏輯設計和物理設計的結果建立資料庫,編制和調試應用程序,組織數據入庫,並進行試運行。
6.資料庫運行和維護階段
資料庫應用系統經過試運行後,即可投入正式運行,在資料庫系統運行過程中必須不斷地對其進行評價,調整,修改。
資料庫設計5步驟
Five Steps to design the Database
1.確定entities及relationships
a)明確宏觀行為。資料庫是用來做什麼的?比如,管理雇員的信息。
b)確定entities。對於一系列的行為,確定所管理信息所涉及到的主題范圍。這將變成table。比如,僱用員工,指定具體部門,確定技能等級。
c)確定relationships。分析行為,確定tables之間有何種關系。比如,部門與雇員之間存在一種關系。給這種關系命名。
d)細化行為。從宏觀行為開始,現在仔細檢查這些行為,看有哪些行為能轉為微觀行為。比如,管理雇員的信息可細化為:
· 增加新員工
· 修改存在員工信息
· 刪除調走的員工
e)確定業務規則。分析業務規則,確定你要採取哪種。比如,可能有這樣一種規則,一個部門有且只能有一個部門領導。這些規則將被設計到資料庫的結構中。
====================================================================
範例:
ACME是一個小公司,在5個地方都設有辦事處。當前,有75名員工。公司准備快速擴大規模,劃分了9個部門,每個部門都有其領導。
為有助於尋求新的員工,人事部門規劃了68種技能,為將來人事管理作好准備。員工被招進時,每一種技能的專業等級都被確定。
定義宏觀行為
一些ACME公司的宏觀行為包括:
● 招聘員工
● 解僱員工
● 管理員工個人信息
● 管理公司所需的技能信息
● 管理哪位員工有哪些技能
● 管理部門信息
● 管理辦事處信息
確定entities及relationships
我們可以確定要存放信息的主題領域(表)及其關系,並創建一個基於宏觀行為及描述的圖表。
我們用方框來代表table,用菱形代表relationship。我們可以確定哪些relationship是一對多,一對一,及多對多。
這是一個E-R草圖,以後會細化。
細化宏觀行為
以下微觀行為基於上面宏觀行為而形成:
● 增加或刪除一個員工
● 增加或刪除一個辦事處
● 列出一個部門中的所有員工
● 增加一項技能
● 增加一個員工的一項技能
● 確定一個員工的技能
● 確定一個員工每項技能的等級
● 確定所有擁有相同等級的某項技能的員工
● 修改員工的技能等級
這些微觀行為可用來確定需要哪些table或relationship。
確定業務規則
業務規則常用於確定一對多,一對一,及多對多關系。
相關的業務規則可能有:
● 現在有5個辦事處;最多允許擴展到10個。
● 員工可以改變部門或辦事處
● 每個部門有一個部門領導
● 每個辦事處至多有3個電話號碼
● 每個電話號碼有一個或多個擴展
● 員工被招進時,每一種技能的專業等級都被確定。
● 每位員工擁有3到20個技能
● 某位員工可能被安排在一個辦事處,也可能不安排辦事處。
2.確定所需數據
要確定所需數據:
a)確定支持數據
b)列出所要跟蹤的所有數據。描述table(主題)的數據回答這些問題:誰,什麼,哪裡,何時,以及為什麼
c)為每個table建立數據
d)列出每個table目前看起來合適的可用數據
e)為每個relationship設置數據
f)如果有,為每個relationship列出適用的數據
確定支持數據
你所確定的支持數據將會成為table中的欄位名。比如,下列數據將適用於表Employee,表Skill,表Expert In。
Employee
Skill
Expert In
ID
ID
Level
Last Name
Name
Date acquired
First Name
Description
Department
Office
Address
如果將這些數據畫成圖表,就像:
3.標准化數據
標准化是你用以消除數據冗餘及確保數據與正確的table或relationship相關聯的一系列測試。共有5個測試。本節中,我們將討論經常使用的3個。
關於標准化測試的更多信息,請參考有關資料庫設計的書籍。
標准化格式
標准化格式是標准化數據的常用測試方式。你的數據通過第一遍測試後,就被認為是達到第一標准化格式;通過第二遍測試,達到第二標准化格式;通過第三遍測試,達到第三標准化格式。
如何標准格式:
1. 列出數據
2. 為每個表確定至少一個鍵。每個表必須有一個主鍵。
3. 確定relationships的鍵。relationships的鍵是連接兩個表的鍵。
4. 檢查支持數據列表中的計算數據。計算數據通常不保存在資料庫中。
5. 將數據放在第一遍的標准化格式中:
6. 從tables及relationships除去重復的數據。
7. 以你所除去數據創建一個或更多的tables及relationships。
8. 將數據放在第二遍的標准化格式中:
9. 用多於一個以上的鍵確定tables及relationships。
10. 除去只依賴於鍵一部分的數據。
11. 以你所除去數據創建一個或更多的tables及relationships。
12. 將數據放在第三遍的標准化格式中:
13. 除去那些依賴於tables或relationships中其他數據,並且不是鍵的數據。
14. 以你所除去數據創建一個或更多的tables及relationships。
數據與鍵
在你開始標准化(測試數據)前,簡單地列出數據,並為每張表確定一個唯一的主鍵。這個鍵可以由一個欄位或幾個欄位(連鎖鍵)組成。
主鍵是一張表中唯一區分各行的一組欄位。Employee表的主鍵是Employee ID欄位。Works In relationship中的主鍵包括Office Code及Employee ID欄位。給資料庫中每一relationship給出一個鍵,從其所連接的每一個table中抽取其鍵產生。
RelationShip
Key
Office
*Office code
Office address
Phone number
Works in
*Office code
*Employee ID
Department
*Department ID
Department name
Heads
*Department ID
*Employee ID
Assoc with
*Department ID
*EmployeeID
Skill
*Skill ID
Skill name
Skill description
Expert In
*Skill ID
*Employee ID
Skill level
Date acquired
Employee
*Employee ID
Last Name
First Name
Social security number
Employee street
Employee city
Employee state
Employee phone
Date of birth
將數據放在第一遍的標准化格式中
● 除去重復的組
● 要測試第一遍標准化格式,除去重復的組,並將它們放進他們各自的一張表中。
● 在下面的例子中,Phone Number可以重復。(一個工作人員可以有多於一個的電話號碼。)將重復的組除去,創建一個名為Telephone的新表。在Telephone與Office創建一個名為Associated With的relationship。
將數據放在第二遍的標准化格式中
● 除去那些不依賴於整個鍵的數據。
● 只看那些有一個以上鍵的tables及relationships。要測試第二遍標准化格式,除去那些不依賴於整個鍵的任何數據(組成鍵的所有欄位)。
● 在此例中,原Employee表有一個由兩個欄位組成的鍵。一些數據不依賴於整個鍵;例如,department name只依賴於其中一個鍵(Department ID)。因此,Department ID,其他Employee數據並不依賴於它,應移至一個名為Department的新表中,並為Employee及Department建立一個名為Assigned To的relationship。
將數據放在第三遍的標准化格式中
● 除去那些不直接依賴於鍵的數據。
● 要測試第三遍標准化格式,除去那些不是直接依賴於鍵,而是依賴於其他數據的數據。
● 在此例中,原Employee表有依賴於其鍵(Employee ID)的數據。然而,office location及office phone依賴於其他欄位,即Office Code。它們不直接依賴於Employee ID鍵。將這組數據,包括Office Code,移至一個名為Office的新表中,並為Employee及Office建立一個名為Works In的relationship。
4.考量關系
當你完成標准化進程後,你的設計已經差不多完成了。你所需要做的,就是考量關系。
考量帶有數據的關系
你的一些relationship可能集含有數據。這經常發生在多對多的關系中。
遇到這種情況,將relationship轉化為一個table。relationship的鍵依舊成為table中的鍵。
考量沒有數據的關系
要實現沒有數據的關系,你需要定義外部鍵。外部鍵是含有另外一個表中主鍵的一個或多個欄位。外部鍵使你能同時連接多表數據。
有一些基本原則能幫助你決定將這些鍵放在哪裡:
一對多在一對多關系中,「一」中的主鍵放在「多」中。此例中,外部鍵放在Employee表中。
一對一在一對一關系中,外部鍵可以放進任一表中。如果必須要放在某一邊,而不能放在另一邊,應該放在必須的一邊。此例中,外部鍵(Head ID)在Department表中,因為這是必需的。
多對多在多對多關系中,用兩個外部鍵來創建一個新表。已存的舊表通過這個新表來發生聯系。
5.檢驗設計
在你完成設計之前,你需要確保它滿足你的需要。檢查你在一開始時所定義的行為,確認你可以獲取行為所需要的所有數據:
● 你能找到一個路徑來等到你所需要的所有信息嗎?
● 設計是否滿足了你的需要?
● 所有需要的數據都可用嗎?
如果你對以上的問題都回答是,你已經差不多完成設計了。
最終設計
最終設計看起來就像這樣:
設計資料庫的表屬性
資料庫設計需要確定有什麼表,每張表有什麼欄位。此節討論如何指定各欄位的屬性。
對於每一欄位,你必須決定欄位名,數據類型及大小,是否允許NULL值,以及你是否希望資料庫限制欄位中所允許的值。
選擇欄位名
欄位名可以是字母、數字或符號的任意組合。然而,如果欄位名包括了字母、數字或下劃線、或並不以字母打頭,或者它是個關鍵字(詳見關鍵字表),那麼當使用欄位名稱時,必須用雙引號括起來。
為欄位選擇數據類型
SQL Anywhere支持的數據類型包括:
整數(int, integer, smallint)
小數(decimal, numeric)
浮點數(float, double)
字元型(char, varchar, long varchar)
二進制數據類型(binary, long binary)
日期/時間類型(date, time, timestamp)
用戶自定義類型
關於數據類型的內容,請參見「SQL Anywhere數據類型」一節。欄位的數據類型影響欄位的最大尺寸。例如,如果你指定SMALLINT,此欄位可以容納32,767的整數。INTEGER可以容納2,147,483,647的整數。對CHAR來講,欄位的最大值必須指定。
長二進制的數據類型可用來在資料庫中保存例如圖像(如點陣圖)或者文字編輯文檔。這些類型的信息通常被稱為二進制大型對象,或者BLOBS。
關於每一數據類型的完整描述,見「SQL Anywhere數據類型」。
『叄』 關於資料庫方面工作的建議
別期望一下子成為DBA,沒那麼簡單,理論永遠沒有實際重要。
建議你:
1.找個應用軟體公司,做做項目實施,包括搭建系統,日常維護等。或者找個甲方做做IT。
2.在實際經驗的基礎上,選擇性的學習一些課程,比如ORACLE的等。
3.多研究,別基於表面。資料庫的問題千奇百怪,沒有最全面的知識,只有通過你自己的摸索實現。
『肆』 以後想做與資料庫相關的工作,需要准備哪些知識呢
1.熟練掌握,最好精通 SQL 語句的書寫
2.《資料庫原理》 上中下,三卷必須學習。
3.深刻了解第三範式
4.《數據挖掘概念與技術》 或 《數據挖掘:概念與技術》
需要熟練掌握的其它技術:
a)合理建表、索引,主外鍵等..
b)存儲過程的書寫及優化
c)觸發器的運用
d)其它跟資料庫相關的技術..
如果你想從事 oracle 就要考一個 oracle的認證
如果你想從事 DB2 就要考一個 DB2的認證
這樣的認證 比國家的認證要好些!
『伍』 如何學習數據分析
第一方面是數學基礎,第二方面是統計學基礎,第三方面是計算機基礎。要想在數據分析的道路上走得更遠,一定要注重數學和統計學的學習。數據分析說到底就是尋找數據背後的規律,而尋找規律就需要具備演算法的設計能力,所以數學和統計學對於數據分析是非常重要的。
而想要快速成為數據分析師,則可以從計算機知識開始學起,具體點就是從數據分析工具開始學起,然後在學習工具使用過程中,輔助演算法以及行業致死的學習。學習數據分析工具往往從Excel工具開始學起,Excel是目前職場人比較常用的數據分析工具,通常在面對10萬條以內的結構化數據時,Excel還是能夠勝任的。對於大部分職場人來說,掌握Excel的數據分析功能能夠應付大部分常見的數據分析場景。
在掌握Excel之後,接下來就應該進一步學習資料庫的相關知識了,可以從關系型資料庫開始學起,重點在於Sql語言。掌握資料庫之後,數據分析能力會有一個較大幅度的提升,能夠分析的數據量也會有明顯的提升。如果採用資料庫和BI工具進行結合,那麼數據分析的結果會更加豐富,同時也會有一個比較直觀的呈現界面。
數據分析的最後一步就需要學習編程語言了,目前學習Python語言是個不錯的選擇,Python語言在大數據分析領域有比較廣泛的使用,而且Python語言自身比較簡單易學,即使沒有編程基礎的人也能夠學得會。通過Python來採用機器學習的方式實現數據分析是當前比較流行的數據分析方式。
對大數據分析有興趣的小夥伴們,不妨先從看看大數據分析書籍開始入門!B站上有很多的大數據教學視頻,從基礎到高級的都有,還挺不錯的,知識點講的很細致,還有完整版的學習路線圖。也可以自己去看看,下載學習試試。
『陸』 我想做一個資料庫,不知從哪裡開始
添加可以變化的內容或功能,如字幕 (字幕組件:網頁上顯示水平滾動文本消息的區域。)、計數器 (計數器組件:FrontPage 中的組件,跟蹤萬維網網站的訪問者的數目。)、時間戳、網頁過渡、互動式按鈕以及使用動態 HTML (DHTML) (DHTML:超文本標記語言 (HTML) 的擴展,添加多媒體、資料庫訪問以及對象模型,程序可使用它們更改頁面元素(對象)的樣式和屬性並將現有元素(對象)替換為新的元素(對象)。) 的表現方式。
應用樣式或使用樣式表來設置文本格式。
用顏色或圖片來設置網頁背景
通過使用動態網頁模板(它可以包括具有網頁設置、格式設置和網頁元素的網頁)來創建自己的網頁模板。
也可以從網站的圖形外觀(稱之為描摹圖像)開始進行設計。為此,可以在圖形程序中創建一個網頁圖像的外觀模型,並將其作為直觀的參照,以便重新創建和描摹網頁設計。
在 FrontPage 中進行編輯
您無須懂得如何使用 HTML 進行編碼,即可使用 FrontPage。您可以象在字處理程序中一樣 編輯網頁(鍵入文本、設置文本格式以及添加圖形、表格和其他網頁元素) ,FrontPage 會在後台添加相應的 HTML 標記,您只須在「設計」視圖中編輯網頁。
但是,如果您想熟悉 HTML 或直接編輯 HTML 代碼,則也可以使用「代碼」視圖,它顯示了網頁的 HTML 代碼;或者「拆分」視圖,它同時顯示了「代碼」和「設計」視圖。
如果對 HTML 熟悉,可在「代碼」視圖中顯示 HTML 標記,並自己編寫和編輯這些 HTML 標記。利用 FrontPage 中的創建和維護優化代碼選項,可以創建清晰的 HTML,並可以方便地將不想要的代碼刪除。
在 FrontPage 中,可以使用可擴展標記語言 (XML) (可擴展標記語言 (XML):標准標記語言 (SGML) 的一種濃縮形式,開發人員可用其創建自定義標簽,為整理和提供信息提供了靈活性。) 來補充而不是替換您的 HTML。您可以查看或編輯文件,將標准格式應用到 XML 文件的代碼結構中,查看 XML 目錄樹以及創建網頁中 XML 數據的自定義顯示。例如,可以創建網頁來顯示 XML 文件中的數據、對數據進行格式化以及應用過濾、排序和條件格式來按所需方式顯示數據。
0.你真的需要一個網站嗎? - 請先試一下BLOG是否就是你想要的.
1.給你的網站起名 - 注冊域名,如何選擇一個好名字 - 選擇域名
2.給網站找個家 - 網頁主機
3.開始發布你的信息 - 網頁設計,使用網頁模板快速完成網頁設計
4.讓你的讀者很方便的和你聯系 - 電子郵件伺服器
5.讓你期望的讀者都能找到你的網站 -在搜索引擎上登記
讓你的讀者更容易找到你 - 提高你在搜索引擎上的等級
6.讓所有人都知道你的存在 - 推廣你的網站
就這么幾步,具體地到 看吧。
這個網站叫「一步一步教你創建自己的網站」你跟著做就行了。
一 基本概念
1 網頁(Web Page)
網頁就是、、、、(很難懂的概念,極其抽象,看得見摸不著),你為什麼到互聯網去,你在WWW上看到的就是網頁。它是由HTML編寫的文件,上面有貼圖,有音樂,有、、、、
2 主頁(Home Page)
主頁(Home Page)它是一個網頁,是進入一個網站的開始畫面,就同「瘟酒吧」的藍天白雲一樣。也就是說,主頁是一個網站的門面,要想設計出一個優秀的網站,就必須有一個「要讓瀏覽者想不看都難」的主頁,它必須引人入勝,能吸引每一個來訪者的注意力,引發人們的好奇心,能讓人產生一種深入探索你的網站的沖動。優秀的主頁是一個好的網站必須具備的第一要素。
3 超級鏈接(Hyperlink)
超級鏈接是WWW的神經系統,它也是向導,把你從一個網頁帶到另一個網頁,或者從網頁的某一部分引導到另一部分。超級鏈接是用特殊的文本或圖象來實現鏈接的,單擊它就可以實現它的功能。
4 超文本(HyperText)
超文本是一種新的文件形式,指一個文件的內容可以無限地與相關資料鏈接。超文本是自然語言文本與計算機交互、轉移和動態顯示等能力結合,超文本系統允許用戶任意構造鏈接,通過Hyperlink來實現。
5 超文本語言(Hyper Text Markup Language)
超文本語言(HTML)是製作編寫網頁、包含超級鏈接的超文件的標准語言,它由文本和標記組成。超文本文件的擴展名一般為 .html或.htm。
網站的組織結構
上網的網蟲一定覺得網路上內容豐富、信息繁雜,但你是否想過一個網站的組織結構。網頁的組織結構有以下四種:
1、線性結構
這是網站最簡單的一種結構,它是以某種順序組織的,可以是時間順序,也可以是邏輯甚至是字母順序。通過這些順序呈線性地鏈接。如一般的索引就採用線性結構。線性結構是組織網頁的基本結構,復雜的結構也可以看成是由線性結構組成的。
2、二維表結構
這種結構允許用戶橫向、縱向地瀏覽信息。它就好象一個二維表,如看課表一樣。
3、等級結構
等級結構由一條等級主線構成索引,每一個等級點又由一條線性結構構成。如網站導航等就是這種結構。在構造等級之前,你必須完全徹底的理解你的網站內容,避免線性組織不嚴的錯誤,不方便瀏覽者。
4、網狀結構
這是最復雜的組織結構,它完全沒有限制,網頁組織自由鏈接。這種結構允許訪問者從一個信息欄目跳到另一個欄目去,其目的就是充分利用網路資源和充分享受超級鏈接。整個互聯網就是一個超級大的「網」狀結構。
開始構造你的網站
1、總體規劃你的網站
當你想建立你的網站是你一定已經在網上瀏覽過n個小時了,當看見別人的網上之家的時候,或者受朋友「到我的網頁看看」的精神刺激下,你開始產生網上建家的沖動了!但是這時候你並不知道你建網站的目的,你也不知道你該做成什麼樣的網頁,「家裡」該有些什麼擺設。於是你應該靜下來想一想,怎樣規劃你的網站。首先,你要有信心和知識。再次,你得有內容,網站應該有一個什麼樣的主題,別人來你的網頁看什麼。接著,你要組織你的網頁了,它們該是什麼結構,這種結構不僅要讓訪問者能感覺到你的風格,也要方便你自己維護網站。最後,構思出你的「引人入勝」的門面(Home Page)。
不對不對,你還得先申請一個放網頁的空間。現在網上提供免費主頁空間的網站很多,回到我的主頁 去吧,我收集了一些。申請到空間後,帶上ftp工具上路了!如 cuteftp,先在site manage添上你的,填寫上傳主機伺服器的地址,你的用戶名,你的密碼,就可以了。開始連接主機,登錄用戶,打開右邊允許你上傳的目錄,
把你要上傳的東東都拖過去。注意:你的主頁名應該是index.htm;index.html或者default.htm;default.html,按申請地方的要求來,還有就是文件名的大小寫,unix主機可區分嚴格喲。上傳後你就可以欣賞你的作品了,怎麼樣?興奮吧!
6、宣傳你的網頁
網頁做好了,也上傳了。但現在沒人知道,怎樣宣傳你的主頁呢?當然是上聊天室,到處貼帖子,發E-MAIL通知好友,登錄搜索引擎,用免費廣告,同別人互相交換連接......
7、網站維護和更新
要想訪問量大,你得經常更新你的網頁,增加網頁內容,並彌補網站存在的缺陷。
關於網頁導覽設計的九注意
一.當導覽按鈕連結到目前此頁時
各Webpage若重復使用同一組的導覽按鈕,無可避免地會產生某一導覽按鈕連結到目前此頁的情形。為達成界面設計的一致性,並沒有絕對的必要性拿掉此導覽按鈕,但Webpage設計者可讓此按鈕不再具有超連結的功能;或將此按鈕的彩度、亮度降低(如∶深綠色變成淡綠色,亮紅色變成暗紅色),使讀者可清楚地意識到∶這個暗設下來的導覽按鈕不再具有超連結的功能。
二.不要在一篇短文里提供太多的超連結
適當、有效率地使用超連結,是一個優良的導覽系統不可或缺的要件之一。但過份濫用超連結,造成短短的一篇文章里卻處處是links,反而損害了Webpage行文的流暢與可親性。在充斥著超連結的短文里,很可能其中不少是無意義、沒必要的links。例如∶連結到一頁只有兩三行註解的link、連結到一頁只放了「施工中」的招牌的link。在一篇長短適中的Webpage里(3、4個熒幕頁面),文章里提供的文字式超連結最好不要超過10個以上,以使全頁行文能夠順暢,而讀者也不至於眼見一大堆超連結,反而不知從何點取才好。況且,連續、肩並肩地出現兩、三個文字式超連結,很容易被誤認為只是一個長度較長的超連結,於是被讀者忽略掉,便也失去了這些超連結的原本功能。 如果您果真有那麼多的超連結必須提供給讀者,不如將這些超連結以條列的方式,一筆一筆清楚地列在一選單頁或目錄頁上,既不防礙走文的順暢,又呈現一目瞭然的導覽連結。
『柒』 教你輕松掌握數據倉庫的規劃和構建策略
教你輕松掌握數據倉庫的規劃和構建策略
數據倉庫作為決策支持系統(DSS)的基礎,具有面向主題的、集成的、不可更新的、隨時間不斷變化的特性。這些特點說明了數據倉庫從數據組織到數據處理,都與原來的資料庫有很大的區別,這也就需要在數據倉庫系統設計時尋求一個適合於數據倉庫設計的方法。在一般的系統開發規劃中,首先需要確定系統的功能,這些系統的功能一般是通過對用戶的需求分析得到的。從數據倉庫的應用角度來看,DSS分析員一般是企業中的中高層管理人員,他們對決策支持的需求不能預先做出規范的說明,只能給設計人員一個抽象地描述。
這就需要設計人員在與用戶不斷的交流溝通中,將系統的需求逐步明確,並加以完善。因此數據倉庫的開發規劃過程實際上是一個用戶和設計人員對其不斷了解、熟悉和完善的過程。 數據倉庫的開發應用規劃是開發數據倉庫的首要任務。只有制定了正確的數據倉庫規劃,才能使組織主要力量有序地實現數據倉庫的開發應用。在數據倉庫規劃中一般需要經歷這樣幾個過程:選擇實現策略、確定數據倉庫的開發目標和實現范圍、選擇數據倉庫體系結構、建立商業和項目規劃預算。 當數據倉庫規劃完成後,需要編制相應的數據倉庫規劃說明書,說明數據倉庫與企業戰略的關系,以及與企業急需處理的、范圍相對有限的開發機會,重點支持的職能部門和今後數據倉庫開發工作的建議,實際使用方案和開發預算,作為數據倉庫實際開發的依據。
1、選擇數據倉庫實現策略
數據倉庫的開發策略主要有自頂向下、自底向上和這兩種策略的聯合使用。自頂向下策略在實際應用中比較困難,因為數據倉庫的功能是一種決策支持功能。這種功能在企業戰略的應用范圍中常常是很難確定的,因為數據倉庫的應用機會往往超出企業當前的實際業務范圍,而且在開發前就確定目標,會在實現預定目標後就不再追求新的應用,是數據倉庫喪失更有戰略意義的應用。由於該策略在開發前就可以給出數據倉庫的實現范圍,能夠清楚地向決策者和企業描述系統的收益情況和實現目標,因此是一種有效的數據倉庫開發策略。該方法使用時需要開發人員具有豐富的自頂向下開發系統的經驗,企業決策層和管理人員完全知道數據倉庫的預定目標並且了解數據倉庫能夠在那些決策中發揮作用。
自底向上策略一般從某個數據倉庫原型開始,選擇一些特定的為企業管理人員所熟知的管理問題作為數據倉庫開發的對象,在此基礎上進行數據倉庫的開發。因此,該策略常常用於一個數據集市、一個經理系統或一個部門的數據倉庫開發。該策略的優點在於企業能夠以較小的投入,獲得較高的數據倉庫應用收益。在開發過程中,人員投入較少,也容易獲得成效。當然,如果某個項目的開發失敗可能造成企業整個數據倉庫系統開發的延遲。該策略一般用於企業洗碗對數據倉庫的技術進行評價,以確定該技術的應用方式、地點和時間,或希望了解實現和運行數據倉庫所需要的各種費用,或在數據倉庫的應用目標並不是很明確時,數據倉庫對決策過程影響不是很明確時使用。
在自頂向下的開發策略中可以採用結構化或面向對象的方法,按照數據倉庫的規劃、需求確定、系統分析、系統設計、系統集成、系統測試和系統試運行的階段完成數據倉庫的開發。而在自底向上的開發中,則可以採用螺旋式的原型開發方法,使用戶可以根據新的需求對試運行的系統進行修改。螺旋式的原型開發方法要求在較短的時間內快速的生成可以不斷增加功能的數據倉庫系統,這種開發方法主要適合於這樣一些場合:在企業的市場動向和需求無法預測,市場的時機是實現產品的重要組成部分,不斷地改進對與企業的市場調節是必需的;持久的競爭優勢來自連續不斷地改進,系統地改進是基於用戶在使用中的不斷發現。 自頂向下和自底向上策略的聯合使用具有兩種策略的優點,既能快速的完成數據倉庫的開發與應用,還可建立具有長遠價值的數據倉庫方案。但在實踐中往往難以操作,通常需要能夠建立、應用和維護企業模型、數據模型和技術結構的、具有豐富經驗的開發人員,能夠熟練的從具體(如業務系統中的元數據)轉移到抽象(只基於業務性質而不是基於實現系統技術的邏輯模型);企業需要擁有由最終用戶和信息系統人員組成的有經驗的開發小組,能夠清楚地指出數據倉庫在企業戰略決策支持中的應用。
2、確定數據倉庫的開發目標和實現范圍
為確定數據倉庫的開發目標和實現范圍,首先需要對企業管理者等數據倉庫用戶解釋數據倉庫在企業管理中的應用和發展趨勢,說明企業組織和使用數據來支持跨功能系統的重要性,對企業經營戰略的支持,以確定開發目標。在該階段確認與使用數據倉庫有關的業務要求,這些要求應該只支持最主要的業務職能部門,將使用精力集中在收益明顯的業務上,使數據倉庫的應用立即產生效果,不應該消耗太多的精力在各個業務上同時鋪開數據倉庫的應用。
在確定開發目標和范圍以後,應該編制需求文檔,作為今後開發數據倉庫的依據。 數據倉庫開發的首要目標是確定所需要信息的范圍,確定用戶提供決策幫助時,在主題和指標域需要哪些數據源。這就需要定義:用戶需要什麼數據?面向主題的數據倉庫需要什麼樣的支持數據?為成功地向用戶提交數據,開發人員需要哪些商業知識?哪些背景知識?這就需要定義整體需求,以文件的形式整理現存的記錄系統和系統環境,對使用數據倉庫中數據的候選應用系統進行標識、排序,構造一個傳遞模型,確定尺度、事實及時間標記演算法,以便從系統中抽取信息且將他們放入數據倉庫。通過信息范圍確定可為開發人員提供一個良好的分析平台,和用戶一起分析哪些信息是數據倉庫需要的,進行商業活動需要什麼數據。開發人員可以和用戶進一步定義需要,例如數據分級層次、聚合的層次、載入的頻率以及需要保持的時間表等。 數據倉庫開發的另一個重要目標是確定利用哪些方法和工具訪問和導航數據?雖然用戶都需要存取並且檢索數據倉庫的內容,但是所存取的粒度有所不同,有的可能是詳細的記錄,有的可能是比較概括的記錄或十分概括的記錄。用戶要求的數據概括程度不同,將導致數據倉庫的聚集和概括工具的需求不同。
數據倉庫還有具有一定功能來訪問和檢索圖表、預定義的報表、多維數據、概括性數據和詳細記錄。用戶從數據倉庫中獲得信息,應該有電子表格、統計分析器和支持多維分析的分析處理器等工具的支持,以解釋和分析數據倉庫中的內容,產生並且驗證不同的市場假設、建議和決策方案。為將決策建議和各種決策方案向用戶清楚地表達出來,需要利用報表、圖表和圖像等強有力的信息表達工具。 數據倉庫開發的其他目標,是確定數據倉庫內部數據的規模。在數據倉庫中不僅包含當前數據,而且包含多年的歷史數據。數據的概括程度決定了這些數據壓縮和概括的最大限度。如果要讓數據倉庫提供對歷史記錄進行決策查詢的功能,就必須支持對大量數據的管理。數據的規模不僅直接影響決策查詢的時間,而且還將直接影響企業決策的質量。
在數據倉庫的開發目標中,還有:根據用戶對數據倉庫的基本需求,確定數據倉庫中數據的含義;確定數據倉庫內容的質量,以確定使用、分析和建議的可信級別;哪種類型的數據倉庫可以滿足最終用戶的需求,這些數據倉庫應該具有怎樣的功能;需要哪些元數據,如何使用數據源中的數據等。 數據倉庫的開發目標多種多樣,十分復雜,需要開發人員和用戶在開發與使用的過程中不斷交互完善。因此,在規劃中需要確定數據倉庫的開發范圍。使開發人員能夠根據需求和目標的重要性逐步進行,並且在開發中吸取經驗教訓,為數據倉庫在企業中的全部實現提供技術准備。因此,在為數據倉庫確定總體開發方向和目標以後,就必須確定一個有限的能夠很快體現數據倉庫效益的使用范圍。在考慮數據倉庫苦的應用范圍時,主要從使用部門的數量和類型、數據源的數量、企業模型的子集、預算分配以及開發項目所需的時間等角度分析。
在分析這些因素時,可從用戶的角度和技術的角度兩方面進行。 從用戶的角度應該分析哪些部門最先使用數據倉庫?是哪些人員為了什麼目的使用數據倉庫?以及數據倉庫首先要滿足哪些決策查詢?因為這些決策查詢往往確定了關於數據維數、報表的種類,這些因素都將確定數據倉庫定義時所需要的數量關系。查詢的格式越具體,越容易提供數據倉庫的維數、聚集和概括的規劃說明。 從技術角度分析,應該確定數據倉庫中元資料庫的規模,數據倉庫的元資料庫是存儲數據倉庫中數據定義的模型。數據定義存儲在倉庫管理器的目錄中,可以作為所有查詢和報表工具構造和查詢數據倉庫的依據。元資料庫的規模直接表示了數據倉庫中必須管理的數據規模。通過對元資料庫規模的管理,實際上就確定了數據倉庫中所需要管理的數據規模。
3、數據倉庫的結構選擇
數據倉庫的結構可以進行靈活的選擇,可將組織所使用的各種平台進行恰當的分割,把數據源、數據倉庫和最終用戶使用的工作站分割開來進行恰當的設計。
(1)數據倉庫的應用結構
基於業務處理系統的數據倉庫 在這種結構中,將運作的數據用於無需修改數據的只讀應用程序中。具有這種結構的數據倉庫元資料庫是一種虛庫,而不是數據倉庫自身的元數據。在數據倉庫元資料庫的直接指導下,對數據倉庫的查詢就是簡單的從資料庫中抽取數據。
單純數據倉庫
利用在數據倉庫中的數據源凈化、集成、概括和集成等操作,將數據源從業務處理系統中傳輸進集中的數據倉庫,各部門的數據倉庫應用只在數據倉庫中進行。這種結構經常發生在多部門、少用戶使用數據倉庫的情況下。這里的集中僅僅是邏輯上的,物理上可能是分散的。
單純數據集市
數據集市是指在部門中使用的數據倉庫,因為企業中的各個職能部門都有自己的特殊需要,而統一的數據倉庫可能不能滿足這些部門的特殊要求。這種體系結構經常發生在個別部門對數據倉庫的應用感興趣,而組織中其他部門卻對數據倉庫的應用十分冷漠之時,由熱心的部門單獨開發式所採用。
數據倉庫和數據集市
企業各部門擁有滿足自己需要的數據集市,其數據從企業數據倉庫中獲取,而數據倉庫從企業各種數據源中收集和分配。這種體系結構是一種較為完善的數據倉庫體系結構,往往發生在組織整體對數據倉庫應用感興趣之時所採用的體系結構。
(2)數據倉庫的技術平台結構 單層結構
單層結構主要是在數據源和數據倉庫之間共享平台,或者讓數據源、數據倉庫、數據集市與最終用戶工作站使用同一個平台。共享一個平台可以降低數據抽取和數據轉換的復雜性,但是共享平台在應用中可能遇到性能和管理方面的問題,這種體系結構一般在數據倉庫規模較小,而組織的業務系統平台具有較大潛力之時所採用。
客戶/伺服器兩層結構
一層為客戶機,一層為伺服器,最終用戶訪問工具在客戶層上運行,而數據源、數據倉庫和數據集市位於伺服器上,該技術機構一般用於普通規模的數據倉庫。
三層客戶/伺服器結構
基於工作站的客戶層、基於伺服器的中間層和基於主機的第三層。主機層負責管理數據源和可選的源數據轉換;伺服器運行數據倉庫和數據集市軟體,並且存儲倉庫的數據;客戶工作站運行查詢和報表運用程序,且還可以存儲從數據集市或數據倉庫卸載的局部數據。在數據倉庫稍具規模,兩層數據倉庫結構已經不能滿足客戶的需求,要講數據倉庫的數據存儲管理、數據倉庫的應用處理和客戶端應用分開之時,可以採用這種結構。
多層式結構
這是在三層機構基礎上發展起來的數據倉庫結構,在該結構中從最內數據層到最外層的客戶層依次是:單獨的數據倉庫存儲層、對數據倉庫和數據集市進行管理的數據倉庫服務層、進行數據倉庫查詢處理的查詢服務層、完成數據倉庫應用處理的應用服務層和面向最終用戶的客戶層。體系層次可能多達五層,這種體系結構一般用於超規模數據倉庫系統。
4、數據倉庫使用方案和項目規劃預算
數據倉庫的實際使用方案與開發預算,是數據倉庫規劃中最後需要確定的問題。因為數據倉庫主要用於對企業管理人員的決策支持,確保其實用性是十分重要的,因此需要讓最終用戶參與數據倉庫的功能設計。這種參與是通過用戶的實際使用方案進行的,使用方案是一個非常重要的需求模型。實際使用方案必須有助於闡明最終用戶對數據倉庫的要求,這些要求有的只使用適當的數據源就可以得到基本滿足,而有的卻需要來自企業外部的數據源,這就需要通過使用方案將這些不同的要求聯系起來。 實際使用方案還可以將最終用戶的決策支持要求與數據倉庫的技術要求聯系起來。因為當用戶確定最終要求後,為元資料庫的范圍確定一個界限。還可以確定所需要的歷史信息的數量,當根據特定的用戶進行數據倉庫的規劃時,就可確定最終用戶所關心的維度(時間、方位、商業單位和生產企業),因為維度與所需要的概括操作有明顯的關系,必須選擇對最終用戶有實際意義的維度,如:「月」、「季度」、「年」等。最後,還可以確定數據集市/數據倉庫的結構需要,使設計人員確定採用單純數據倉庫結構,還是單純的數據集市結構或者是兩者相結合的結構。
在實際使用開發方案確定後,還需要對開發方案的預算進行估計,確定項目的投資數額。投資方案的確定可以依據以往的軟體開發成本,但是這種預算的評估比較粗糙。另一種方法是參照結構進行成本評估,也就是說,將數據倉庫實際使用方案所確定的構件進行分解,根據各個構件的成本進行預算估算。數據倉庫的構件包含在數據源、數據倉庫、數據集市、最終用戶存取、數據管理、元數據管理、傳輸基礎等部分中,這些構件有的在企業原有信息系統中已經具備,有的可以選擇商品化構件,有的則需要自我開發。根據這些構件的不同來源,可以確定比較准確的預算。 在完成數據倉庫規劃後,就需要編制數據倉庫開發說明書,說明系統與企業戰略目標的關系,以及系統與企業急需處理的范圍相對有限的開發機會,所設想的業務機會的說明以及目標任務概況說明、重點支持的職能部門和今後工作的建議。數據倉庫項目應有明確的業務價值計劃開始,在計劃中需要闡明期望取得的有形和無形的利益。無形利益包含利用數據倉庫使決策完成得更快更好等利益。
業務價值計劃最好由目標業務主管來完成,因為數據倉庫是用戶驅動的,應該讓用戶積極參與數據倉庫的建設,在規劃書中要確定數據倉庫開發目標的實現范圍、體系結構和使用方案及開發預算。
『捌』 如何進行資料庫的設計
資料庫設計(Database Design)是指對於一個給定的應用環境,構造最優的資料庫模式,建立資料庫及其應用系統,使之能夠有效地存儲數據,滿足各種用戶的應用需求(信息要求和處理要求)。
在資料庫領域內,常常把使用資料庫的各類系統統稱為資料庫應用系統。
一、資料庫和信息系統
(1)資料庫是信息系統的核心和基礎,把信息系統中大量的數據按一定的模型組織起來,提供存儲、維護、檢索數據的
功能,使信息系統可以方便、及時、准確地從資料庫中獲得所需的信息。
(2)資料庫是信息系統的各個部分能否緊密地結合在一起以及如何結合的關鍵所在。
(3)資料庫設計是信息系統開發和建設的重要組成部分。
(4)資料庫設計人員應該具備的技術和知識:
資料庫的基本知識和資料庫設計技術
計算機科學的基礎知識和程序設計的方法和技巧
軟體工程的原理和方法
應用領域的知識
二、資料庫設計的特點
資料庫建設是硬體、軟體和干件的結合
三分技術,七分管理,十二分基礎數據
技術與管理的界面稱之為「干件」
資料庫設計應該與應用系統設計相結合
結構(數據)設計:設計資料庫框架或資料庫結構
行為(處理)設計:設計應用程序、事務處理等
結構和行為分離的設計
傳統的軟體工程忽視對應用中數據語義的分析和抽象,只要有可能就盡量推遲數據結構設計的決策早期的資料庫設計致力於數據模型和建模方法研究,忽視了對行為的設計
如圖:
三、資料庫設計方法簡述
手工試湊法
設計質量與設計人員的經驗和水平有直接關系
缺乏科學理論和工程方法的支持,工程的質量難以保證
資料庫運行一段時間後常常又不同程度地發現各種問題,增加了維護代價
規范設計法
手工設計方
基本思想
過程迭代和逐步求精
規范設計法(續)
典型方法:
(1)新奧爾良(New Orleans)方法:將資料庫設計分為四個階段
S.B.Yao方法:將資料庫設計分為五個步驟
I.R.Palmer方法:把資料庫設計當成一步接一步的過程
(2)計算機輔助設計
ORACLE Designer 2000
SYBASE PowerDesigner
四、資料庫設計的基本步驟
資料庫設計的過程(六個階段)
1.需求分析階段
准確了解與分析用戶需求(包括數據與處理)
是整個設計過程的基礎,是最困難、最耗費時間的一步
2.概念結構設計階段
是整個資料庫設計的關鍵
通過對用戶需求進行綜合、歸納與抽象,形成一個獨立於具體DBMS的概念模型
3.邏輯結構設計階段
將概念結構轉換為某個DBMS所支持的數據模型
對其進行優化
4.資料庫物理設計階段
為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)
5.資料庫實施階段
運用DBMS提供的數據語言、工具及宿主語言,根據邏輯設計和物理設計的結果
建立資料庫,編制與調試應用程序,組織數據入庫,並進行試運行
6.資料庫運行和維護階段
資料庫應用系統經過試運行後即可投入正式運行。
在資料庫系統運行過程中必須不斷地對其進行評價、調整與修改
設計特點:
在設計過程中把資料庫的設計和對資料庫中數據處理的設計緊密結合起來將這兩個方面的需求分析、抽象、設計、實現在各個階段同時進行,相互參照,相互補充,以完善兩方面的設計
設計過程各個階段的設計描述:
如圖:
五、資料庫各級模式的形成過程
1.需求分析階段:綜合各個用戶的應用需求
2.概念設計階段:形成獨立於機器特點,獨立於各個DBMS產品的概念模式(E-R圖)
3.邏輯設計階段:首先將E-R圖轉換成具體的資料庫產品支持的數據模型,如關系模型,形成資料庫邏輯模式;然後根據用戶處理的要求、安全性的考慮,在基本表的基礎上再建立必要的視圖(View),形成數據的外模式
4.物理設計階段:根據DBMS特點和處理的需要,進行物理存儲安排,建立索引,形成資料庫內模式
六、資料庫設計技巧
1. 設計資料庫之前(需求分析階段)
1) 理解客戶需求,詢問用戶如何看待未來需求變化。讓客戶解釋其需求,而且隨著開發的繼續,還要經常詢問客戶保證其需求仍然在開發的目的之中。
2) 了解企業業務可以在以後的開發階段節約大量的時間。
3) 重視輸入輸出。
在定義資料庫表和欄位需求(輸入)時,首先應檢查現有的或者已經設計出的報表、查詢和視圖(輸出)以決定為了支持這些輸出哪些是必要的表和欄位。
舉例:假如客戶需要一個報表按照郵政編碼排序、分段和求和,你要保證其中包括了單獨的郵政編碼欄位而不要把郵政編碼糅進地址欄位里。
4) 創建數據字典和ER 圖表
ER 圖表和數據字典可以讓任何了解資料庫的人都明確如何從資料庫中獲得數據。ER圖對表明表之間關系很有用,而數據字典則說明了每個欄位的用途以及任何可能存在的別名。對SQL 表達式的文檔化來說這是完全必要的。
5) 定義標準的對象命名規范
資料庫各種對象的命名必須規范。
2. 表和欄位的設計(資料庫邏輯設計)
表設計原則
1) 標准化和規范化
數據的標准化有助於消除資料庫中的數據冗餘。標准化有好幾種形式,但Third Normal Form(3NF)通常被認為在性能、擴展性和數據完整性方面達到了最好平衡。簡單來說,遵守3NF 標準的資料庫的表設計原則是:「One Fact in One Place」即某個表只包括其本身基本的屬性,當不是它們本身所具有的屬性時需進行分解。表之間的關系通過外鍵相連接。它具有以下特點:有一組表專門存放通過鍵連接起來的關聯數據。
舉例:某個存放客戶及其有關定單的3NF 資料庫就可能有兩個表:Customer 和Order。Order 表不包含定單關聯客戶的任何信息,但表內會存放一個鍵值,該鍵指向Customer 表裡包含該客戶信息的那一行。
事實上,為了效率的緣故,對表不進行標准化有時也是必要的。
2) 數據驅動
採用數據驅動而非硬編碼的方式,許多策略變更和維護都會方便得多,大大增強系統的靈活性和擴展性。
舉例,假如用戶界面要訪問外部數據源(文件、XML 文檔、其他資料庫等),不妨把相應的連接和路徑信息存儲在用戶界面支持表裡。還有,如果用戶界面執行工作流之類的任務(發送郵件、列印信箋、修改記錄狀態等),那麼產生工作流的數據也可以存放在資料庫里。角色許可權管理也可以通過數據驅動來完成。事實上,如果過程是數據驅動的,你就可以把相當大的責任推給用戶,由用戶來維護自己的工作流過程。
3) 考慮各種變化
在設計資料庫的時候考慮到哪些數據欄位將來可能會發生變更。
舉例,姓氏就是如此(注意是西方人的姓氏,比如女性結婚後從夫姓等)。所以,在建立系統存儲客戶信息時,在單獨的一個數據表裡存儲姓氏欄位,而且還附加起始日和終止日等欄位,這樣就可以跟蹤這一數據條目的變化。
欄位設計原則
4) 每個表中都應該添加的3 個有用的欄位
dRecordCreationDate,在VB 下默認是Now(),而在SQL Server • 下默認為GETDATE()
sRecordCreator,在SQL Server 下默認為NOT NULL DEFAULT • USER
nRecordVersion,記錄的版本標記;有助於准確說明記錄中出現null 數據或者丟失數據的原因 •
5) 對地址和電話採用多個欄位
描述街道地址就短短一行記錄是不夠的。Address_Line1、Address_Line2 和Address_Line3 可以提供更大的靈活性。還有,電話號碼和郵件地址最好擁有自己的數據表,其間具有自身的類型和標記類別。
6) 使用角色實體定義屬於某類別的列
在需要對屬於特定類別或者具有特定角色的事物做定義時,可以用角色實體來創建特定的時間關聯關系,從而可以實現自我文檔化。
舉例:用PERSON 實體和PERSON_TYPE 實體來描述人員。比方說,當John Smith, Engineer 提升為John Smith, Director 乃至最後爬到John Smith, CIO 的高位,而所有你要做的不過是改變兩個表PERSON 和PERSON_TYPE 之間關系的鍵值,同時增加一個日期/時間欄位來知道變化是何時發生的。這樣,你的PERSON_TYPE 表就包含了所有PERSON 的可能類型,比如Associate、Engineer、Director、CIO 或者CEO 等。還有個替代辦法就是改變PERSON 記錄來反映新頭銜的變化,不過這樣一來在時間上無法跟蹤個人所處位置的具體時間。
7) 選擇數字類型和文本類型盡量充足
在SQL 中使用smallint 和tinyint 類型要特別小心。比如,假如想看看月銷售總額,總額欄位類型是smallint,那麼,如果總額超過了$32,767 就不能進行計算操作了。
而ID 類型的文本欄位,比如客戶ID 或定單號等等都應該設置得比一般想像更大。假設客戶ID 為10 位數長。那你應該把資料庫表欄位的長度設為12 或者13 個字元長。但這額外占據的空間卻無需將來重構整個資料庫就可以實現資料庫規模的增長了。
8) 增加刪除標記欄位
在表中包含一個「刪除標記」欄位,這樣就可以把行標記為刪除。在關系資料庫里不要單獨刪除某一行;最好採用清除數據程序而且要仔細維護索引整體性。
3. 選擇鍵和索引(資料庫邏輯設計)
鍵選擇原則:
1) 鍵設計4 原則
為關聯欄位創建外鍵。 •
所有的鍵都必須唯一。 •
避免使用復合鍵。 •
外鍵總是關聯唯一的鍵欄位。 •
2) 使用系統生成的主鍵
設計資料庫的時候採用系統生成的鍵作為主鍵,那麼實際控制了資料庫的索引完整性。這樣,資料庫和非人工機制就有效地控制了對存儲數據中每一行的訪問。採用系統生成鍵作為主鍵還有一個優點:當擁有一致的鍵結構時,找到邏輯缺陷很容易。
3) 不要用用戶的鍵(不讓主鍵具有可更新性)
在確定採用什麼欄位作為表的鍵的時候,可一定要小心用戶將要編輯的欄位。通常的情況下不要選擇用戶可編輯的欄位作為鍵。
4) 可選鍵有時可做主鍵
把可選鍵進一步用做主鍵,可以擁有建立強大索引的能力。
索引使用原則:
索引是從資料庫中獲取數據的最高效方式之一。95%的資料庫性能問題都可以採用索引技術得到解決。
1) 邏輯主鍵使用唯一的成組索引,對系統鍵(作為存儲過程)採用唯一的非成組索引,對任何外鍵列採用非成組索引。考慮資料庫的空間有多大,表如何進行訪問,還有這些訪問是否主要用作讀寫。
2) 大多數資料庫都索引自動創建的主鍵欄位,但是可別忘了索引外鍵,它們也是經常使用的鍵,比如運行查詢顯示主表和所有關聯表的某條記錄就用得上。
3) 不要索引memo/note 欄位,不要索引大型欄位(有很多字元),這樣作會讓索引佔用太多的存儲空間。
4) 不要索引常用的小型表
不要為小型數據表設置任何鍵,假如它們經常有插入和刪除操作就更別這樣作了。對這些插入和刪除操作的索引維護可能比掃描表空間消耗更多的時間。
4. 數據完整性設計(資料庫邏輯設計)
1) 完整性實現機制:
實體完整性:主鍵
參照完整性:
父表中刪除數據:級聯刪除;受限刪除;置空值
父表中插入數據:受限插入;遞歸插入
父表中更新數據:級聯更新;受限更新;置空值
DBMS對參照完整性可以有兩種方法實現:外鍵實現機制(約束規則)和觸發器實現機制
用戶定義完整性:
NOT NULL;CHECK;觸發器
2) 用約束而非商務規則強制數據完整性
採用資料庫系統實現數據的完整性。這不但包括通過標准化實現的完整性而且還包括數據的功能性。在寫數據的時候還可以增加觸發器來保證數據的正確性。不要依賴於商務層保證數據完整性;它不能保證表之間(外鍵)的完整性所以不能強加於其他完整性規則之上。
3) 強制指示完整性
在有害數據進入資料庫之前將其剔除。激活資料庫系統的指示完整性特性。這樣可以保持數據的清潔而能迫使開發人員投入更多的時間處理錯誤條件。
4) 使用查找控制數據完整性
控制數據完整性的最佳方式就是限制用戶的選擇。只要有可能都應該提供給用戶一個清晰的價值列表供其選擇。這樣將減少鍵入代碼的錯誤和誤解同時提供數據的一致性。某些公共數據特別適合查找:國家代碼、狀態代碼等。
5) 採用視圖
為了在資料庫和應用程序代碼之間提供另一層抽象,可以為應用程序建立專門的視圖而不必非要應用程序直接訪問數據表。這樣做還等於在處理資料庫變更時給你提供了更多的自由。
5. 其他設計技巧
1) 避免使用觸發器
觸發器的功能通常可以用其他方式實現。在調試程序時觸發器可能成為干擾。假如你確實需要採用觸發器,你最好集中對它文檔化。
2) 使用常用英語(或者其他任何語言)而不要使用編碼
在創建下拉菜單、列表、報表時最好按照英語名排序。假如需要編碼,可以在編碼旁附上用戶知道的英語。
3) 保存常用信息
讓一個表專門存放一般資料庫信息非常有用。在這個表裡存放資料庫當前版本、最近檢查/修復(對Access)、關聯設計文檔的名稱、客戶等信息。這樣可以實現一種簡單機制跟蹤資料庫,當客戶抱怨他們的資料庫沒有達到希望的要求而與你聯系時,這樣做對非客戶機/伺服器環境特別有用。
4) 包含版本機制
在資料庫中引入版本控制機制來確定使用中的資料庫的版本。時間一長,用戶的需求總是會改變的。最終可能會要求修改資料庫結構。把版本信息直接存放到資料庫中更為方便。
5) 編制文檔
對所有的快捷方式、命名規范、限制和函數都要編制文檔。
採用給表、列、觸發器等加註釋的資料庫工具。對開發、支持和跟蹤修改非常有用。
對資料庫文檔化,或者在資料庫自身的內部或者單獨建立文檔。這樣,當過了一年多時間後再回過頭來做第2 個版本,犯錯的機會將大大減少。
6) 測試、測試、反復測試
建立或者修訂資料庫之後,必須用用戶新輸入的數據測試數據欄位。最重要的是,讓用戶進行測試並且同用戶一道保證選擇的數據類型滿足商業要求。測試需要在把新資料庫投入實際服務之前完成。
7) 檢查設計
在開發期間檢查資料庫設計的常用技術是通過其所支持的應用程序原型檢查資料庫。換句話說,針對每一種最終表達數據的原型應用,保證你檢查了數據模型並且查看如何取出數據。