當前位置:首頁 » 操作系統 » 資料庫設計優化

資料庫設計優化

發布時間: 2022-03-04 10:04:53

資料庫優化(ER模型設計)

訪問需要的完整解datamole4.adoquery2.sql.add('SELECT借書證號,密碼FROM[user]WHERE(借書證號=:tt)');
datamole4.adoquery2.parameters[0].value:=username;
datamole4.adoquery2.open;
在為TQuery或TADOquery部件設置SQL屬性時調用Close方法總是很安全的,如果TQuery或TADOquery部件已經被關閉了,調用Close方法時不會產生任何影響。在應用程序中為SQL屬性設置新的SQL命令語句時,必須要調用Clear方法以清除SQL屬性中現存的SQL命令語句,如果不調用Clear方法,便調用Add方法向SQL屬性中設置SQL命令語句,那麼新設置的SQL命令語句會追加在現存SQL命令語句後面,在程序運行時常常會出現出乎意料的查詢結果甚至程序無法運行下去。
在這里要特別注意的,一般情況下TQuery或TADOquery部件的SQL屬性只能包含一條完整的SQL語句,它不允許被設置成多條SQL語句。當然有些資料庫伺服器也支持在TQuery或TADOquery部件的SQL屬性中設置多條SQL語句,只要資料庫伺服器允許這樣,我們在編程時可以為SQL屬性設置多條SQL語句。
在為TQuery或TADOquery部件設置完SQL屬性的屬性值之後,也即編寫好適當的SQL程序之後,可以有多種方式來執行SQL程序。
在設計過程中,設置完TQuery或TADOquery部件的SQL屬性之後將其Active屬性的值置為True,這樣便可以執行SQL屬性中的SQL程序,如果應用中有與TQuery或TADOquery部件相連的數據瀏覽部件(如TDDGridTDBEdit等)那麼在這些數據瀏覽部件中會顯示SQL程序的執行結果。
在應用程序運行過程中,通過程序調用TQuery或TADOquery組件的Open方法或ExecSQL方法可以執行其SQL屬性中的SQL程序。Open方法和ExecSQL方法是不一樣的。Open方法只能用來執行SQL語言的查詢語句(Select命令),並返回一個查詢結果集,而ExecSQL方法還可以用來執行其它常用的SQL語句(如INSERT,UPDATE,DELETE等命令),例如:
Query1.Open(這樣會返回一個查詢結果集)
如果調用Open方法,而沒有查詢結果時,會出錯。此時應該調用ExecSQL方法來代替Open方法。如:
Query1.ExecSQL(沒有返回結果)
當然在設計應用程序時,程序設計人員是無法確定TQuery或TADOquery組件中的SQL語句是否會返回一個查詢結果的。對於這種情況應當用Try…Except模塊來設計程序。在Try部分調用Open方法,而在Except部分調用ExceSQL方法,這樣才能保證程序的正確運行。
例如:
Try
Query1.Open
Except
Query1.ExecSQL
End
通過Tquery或TADOquery組件可以獲得兩種類型的數據:
u「活動」的數據
這種數據就跟通過TTable部件獲得的數據一樣,用戶可以通過數據瀏覽部件來編輯修改這些數據,並且當調用Post方法或當焦點離開當前的數據瀏覽部件時,用戶對數據的修改自動地被寫回到資料庫中。
u非活動的數據(只讀數據)
用戶通過數據瀏覽部件是不能修改其中的數據。在預設情況下,通過TQuery部件獲得的查詢結果數據是只讀數據,要想獲得「活動」的數據,在應用程序中必須要設置Tquery或TADOquery組件的RequestLive屬性值為True,然而並不是在任何情況下(通過設置RequestLive的屬值True)都可以獲得「活動」的數據的,要想獲得「活動」的數據,除了將TQuery部件的RequestLive屬性設置為True外,相應的SQL命令還要滿足以下條件。
本地SQL語句查詢情況下,要得到可更新的數據集,SQL語句的限制為:
n查詢只能涉及到一個單獨的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運算符SUM或AVG
n在Select後的欄位列表中不能有計算欄位
n在Select語句WHERE部分只能包含欄位值與常量的比較運算,這些比較運算符是:Like,>,<,>=,<=。各比較運算之間可以有並和交運算:AND和OR
當通過SQL語句查詢資料庫伺服器中的資料庫表:
n查詢只能涉及到一個單獨的表
nSQL語句中不能包含ORDERBY命令
nSQL語句中不能含聚集運算符SUM或AVG運算
另外,如果是查詢Sybase資料庫中的表,那麼被查詢的表中只能有一個索引。
如果在應用程序中要求TQuery或TADOquery組件返回一個「活動」的查詢結果數據集,但是SQL命令語句不滿足上述約束條件時,對於本地資料庫的SQL查詢,BDE只能返回只讀的數據集。對於資料庫伺服器中的SQL查詢,只能返回錯誤的代碼。當Tquery或TADOquery組件返回一個「活動」的查詢結果數據集時,它的CanModIfy屬性的值會被設置成True。
§3.4MSSQLServer簡述
SQLServer是一個後台資料庫管理系統,它功能強大操作簡便,日益為廣大資料庫用戶所喜愛。越來越多的開發工具提供了與SQLServer的介面。SQLServer是一個關系資料庫管理系統,它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發的。於1988年推出了第一個OS/2版本,在WindowsNT推出後,Microsoft與Sybase在SQLServer的開發上就分道揚鑣了,Microsoft將SQLServer移植到WindowsNT系統上,專注於開發推廣SQLServer的WindowsNT版本。
SQLServer2000是Microsoft公司推出的SQLServer資料庫管理系統的最新版本,該版本繼承了SQLServer7.0版本的優點,同時又比它增加了許多更先進的功能、具有使用方便、可伸縮性好與相關軟體集成程度高等優點。可跨越從運行MicrosoftWindows98的膝上型電腦到運行MicrosoftWindows2000的大型多處理器的伺服器等多種平台使用。MSSQLServer不但可以應用於大中型資料庫管理中,建立分布式關系資料庫,並且也可以開發桌面資料庫。事實上,SQLServer資料庫處理的基本結構,採取關系型資料庫模式,盡管如此,相信大家都可以輕易的發現,在SQLServer的資料庫處理方式,則是使用面向對象的操作方式與精神,也就是說,SQLServer的所有功能,都可以基於系統已經建立好的一些對象來達成,是相當OO(面向對象)的一個系統結構。
SQLServer企業管理器是SQLServer的主要管理工具,它提供了一個遵從MMC標準的用戶界面,使用戶得以:
·定義SQLServer實例組。
·將個別伺服器注冊到組中。
·為每個已注冊的伺服器配置所有SQLServer選項。
·在每個已注冊的伺服器中創建並管理所有SQLServer資料庫、對象、登錄、用戶和許可權。
·在每個已注冊的伺服器上定義並執行所有SQLServer管理任務。
·通過喚醒調用SQL查詢分析器,交互地設計並測試SQL語句、批處理和腳本
·喚醒調用為SQLServer定義的各種向導。
·
第三章圖書管理系統設計分析
§4.1應用需求分析
圖書管理系統需要滿足來自三方面的需求,這三個方面分別是圖書借閱者、圖書館工作人員和圖書館管理人員。圖書借閱者的需求是查詢圖書館所存的圖書、個人借閱情況及個人信息的修改;圖書館工作人員對圖書借閱者的借閱及還書要求進行操作,同時形成借書或還書報表給借閱者查看確認;圖書館管理人員的功能最為復雜,包括對工作人員、圖書借閱者、圖書進行管理和維護,及系統狀態的查看、維護並生成催還圖書報表。
圖書借閱者可直接查看圖書館圖書情況,如果圖書借閱者根據本人借書證號和密碼登錄系統,還可以進行本人借書情況的查詢和維護部分個人信息。一般情況下,圖書借閱者只應該查詢和維護本人的借書情況和個人信息,若查詢和維護其他借閱者的借書情況和個人信息,就要知道其他圖書借閱者的借書證號和密碼。這些是很難得到的,特別是密碼,所以不但滿足了圖書借閱者的要求,還保護了圖書借閱者的個人隱私。
圖書館工作人員有修改圖書借閱者借書和還書記錄的許可權,所以需對工作人員登陸本模塊進行更多的考慮。在此模塊中,圖書館工作人員可以為圖書借閱者加入借書記錄或是還書記錄,並列印生成相應的報表給用戶查看和確認。
圖書館管理人員功能的信息量大,數據安全性和保密性要求最高。本功能實現對圖書信息、借閱者信息、總體借閱情況信息的管理和統計、工作人員和管理人員信息查看及維護。圖書館管理員可以瀏覽、查詢、添加、刪除、修改、統計圖書的基本信息;瀏覽、查詢、統計、添加、刪除和修改圖書借閱者的基本信息,瀏覽、查詢、統計圖書館的借閱信息,但不能添加、刪除和修改借閱信息,這部分功能應該由圖書館工作人員執行,但是,刪除某條圖書借閱者基本信息記錄時,應實現對該圖書借閱者借閱記錄的級聯刪除。並且還應具有生成催還圖書報表,並列印輸出的功能。
在本系統中由於沒有列印機設備供試驗,所以預先把報表列印改成報表預覽。
設計不同用戶的操作許可權和登陸方法
對所有用戶開放的圖書查詢
借閱者維護借閱者個人部分信息
借閱者查看個人借閱情況信息
維護借閱者個人密碼
根據借閱情況對資料庫進行操作並生成報表
根據還書情況對資料庫進行操作並生成報表
查詢及統計各種信息
維護圖書信息
維護工作人員和管理員信息
維護借閱者信息
處理信息的完整性
對借閱過期的圖書生成報表
圖4-2圖書管理系統資料庫應用需求的總結
根據以上所做的需求分析,並略掉一些細節(如不考慮用戶的登錄;對記錄的維護),得出以下的三層數據流圖。
§4.2系統功能模塊劃分
系統功能框圖如圖4-10所示。
§4.3系統資料庫設計
4.3.1概念設計
在概念設計階段中,設計人員從用戶的角度看待數據及處理要求和約束,產生一個反映用戶觀點的概念模式。然後再把概念模式轉換成邏輯模式。將概念設計從設計過程中獨立開來,使各階段的任務相對單一化,設計復雜程度大大降低,不受特定DBMS的限制。
利用ER方法進行資料庫的概念設計,可分成三步進行:首先設計局部ER模式,然後把各局部ER模式綜合成一個全局模式,最後對全局ER模式進行優化,得到最終的模式,即概念模式。
(1)設計局部ER模式
實體和屬性的定義:
圖書(圖書編號,圖書名稱,作者,出版社,出版日期,備注,價格,數量,)
借閱者(借書證號,姓名,性別,身份證,聯系電話,密碼)
身份(身份編號,身份描述,最大借閱數)
圖書類別(圖書類別編號,類別描述)
ER模型的「聯系」用於刻畫實體之間的關聯。一種完整的方式是對局部結構中任意兩個實體類型,依據需求分析的結果,考察局部結構中任意兩個實體類型之間是否存在聯系。若有聯系,進一步確定是1:N,M:N,還是1:1等。還要考察一個實體類型內部是否存在聯系,兩個實體類型之間是否存在聯系,多個實體類型之間是否存在聯系,等等。聯系定義如圖4-5所示。解釋如下:
u一個借閱者(用戶)只能具有一種身份,而一種身份可被多個借閱者所具有;
u一本圖書只能屬於一種圖書類別(類別),而一種圖書類別可以包含多本圖書;
u一個用戶可以借閱多本不同的書,而一本書也可以被多個不同的用戶所借閱。
(2)設計全局ER模式
所有局部ER模式都設計好了後,接下來就是把它們綜合成單一的全局概念結構。全局概念結構不僅要支持所有局部ER模式,而且必須合理地表示一個完整、一致的資料庫概念結構。
1)確定公共實體類型
為了給多個局部ER模式的合並提供開始合並的基礎,首先要確定各局部結構中的公共實體類型。在這一步中我們僅根據實體類型名和鍵來認定公共實體類型。一般把同名實體類型作為公共實體類型的一類候選,把具有相同鍵的實體類型作為公共實體類型的另一類候眩
2)局部ER模式的合並
合並的原則是:首先進行兩兩合並;先和合並那些現實世界中有聯系的局部結構;合並從公共實體類型開始,最後再加入獨立的局部結構。
3)消除沖突
沖突分為三類:屬性沖突、結構沖突、命名沖突。
設計全局ER模式的目的不在於把若干局部ER模式形式上合並為一個ER模式,而在於消除沖突,使之成為能夠被所有用戶共同理解和接受的同一的概念模型。
3)全局ER模式的優化
在得到全局ER模式後,為了提高資料庫系統的效率,還應進一步依據處理需求對ER模式進行優化。一個好的全局ER模式,除能准確、全面地反映用戶功能需求外,還應滿足下列條件:實體類型的個數要盡可能的少;實體類型所含屬性個數盡可能少;實體類型間聯系無冗餘。
綜上所述,「圖書管理系統」的全局ER模式如圖4-13所示。
4.3.2關系資料庫的邏輯設計
由於概念設計的結果是ER圖,DBMS一般採用關系型(本人所使用的MSSQLServer就是關系型的DBMS),因此資料庫的邏輯設計過程就是把ER圖轉化為關系模式的過程。由於關系模型所具有的優點,邏輯設計可以充分運用關系資料庫規范化理論,使設計過程形式化地進行。設計結果是一組關系模式的定義。
(1)導出初始關系模式
book(圖書編號#,圖書名稱,圖書類別#,作者,出版社,出版日期,備注,價格,數量)class(圖書類別#,類別名)user(借書證號#,姓名,性別,身份編號#,身份證,聯系電話,密碼)ID(身份編號#,身份描述,最大借閱數)Owner(借書證號#,圖書編號#,借書日期)
圖4-14關系模式集
(2)產生子模式
子模式是用戶所用到的那部分數據的描述。除了指出用戶用到的數據外,還應指出數據與概念模式中相應數據的聯系,即指出概念模式與子模式之間的對應性。
借書子模式(借書證號#,姓名,圖書編號#,圖書名稱,借書日期)
圖4-15部分子模式
(3)根據設計中出現的問題本人在寫系統時還加入了兩個關系模式:
1、ownertemp:用於工作人員在處理借書、還書工作時臨時存儲借書、還書信息,以便列印報表時使用。
2、keyer:用於存儲工作人員和圖書館管理員的用戶名和密碼及許可權,以便工作人員或圖書館管理員進入相應的功能模塊時進行驗證用戶的身份。
4.3.3資料庫的實現
我選用MicrosoftSQLServer2000(企業版)資料庫來進行資料庫的邏輯設計。首先創建七個基本資料庫表如表4-1-4-7所示,然後根據全局ER圖,建立各個表之間的聯系,如圖4-8所示。
表4-1借閱者基本信息表的結構(User)
表4-2圖書信息表的結構(Book)
表4-3圖書類別信息表的結構(Class)
表4-4借閱者身份信息表的結構(ID)
表4-5借閱情況信息表的結構(Owner)
表4-6借閱情況臨時存儲信息表的結構(Ownertemp)
註:在owner表和ownertemp表中加入了索引欄位,用來唯一標識一條借書記錄,並且設置為標識,標識種子為1。
表4-7工作人員和管理員信息表的結構(Keyer)
圖4-8資料庫表間聯系圖
第五章圖書管理系統應用程序設計
§5.1系統窗體模塊組成
§5.2數據模塊窗體的設置
在編寫資料庫應用程序時,經常要遇到這樣的情況,即好多組件、窗體同時訪問相同的數據源,如果為每一個組件或者窗體都設置一個數據源將是十分耗時的工件,而且要保證這些數據源的確是相同的也需花一番功夫。那麼,能不能將這些數據源集中管理,最好是做成一個統一的模塊,需要時就將該模塊引入而不必直接操作數據源本身呢?數據模塊(DataMole)是解決這個問題最好的答案。簡單說來,數據模塊是用來集中管理數據源的一個窗體,該窗體可被需要的地方隨時引入。
但本人在開發這個系統時,開始使用了一下數據模塊,但在使用過程中卻碰到了一些問題。並且考慮這個系統使用到的TADOQuery控制項比較多,如果使用數據控制項可能會帶來管理上的麻煩,如弄混各個數據控制項的作用。還考慮到使用動態生成ADOQuery可能會更節省資源。所以在本人的系統中,開始做的第一個模塊「借閱者個人模塊」中還稍微使用了一下數據模塊。但在後面做的兩個模塊中大多都是用動態生成ADOQuery來實現的。並且由於SQL語句是動態加入的所以datamole中的控制項也不會多。
§5.3啟動畫面的實現
啟動畫面是為了給用戶一個良好的印像,加深軟體的親和力,沒有實際的功能,在Form1窗體中加入了Image和Time組件。啟動畫面的窗體略,主要的源代碼如下:
§5.4用戶登錄窗體的的實現
本窗體是為三種不同的用戶(一般用戶,工作人員,管理員)提供選擇以進入不同的模塊,滿足不同用戶的需求。源代碼比較簡單,略。
§5.5用戶密碼認證窗體的的實現
本窗體是為了讓工作人員或圖書館管理員按照用戶名和密碼進行登錄,並且跟據用戶名檢查Keyer表中的「許可權」欄位,以分辯進入圖書館管理人員模塊還是進入工作人員模塊。窗體界面、源代碼如下
§5.6借閱者服務模塊的實現
借閱者服務窗體的功能主要是圖書的查詢,個人借閱情況查看及個人部分信息的修改。界面圖如下:
5.6.1圖書查詢功能的實現
在本系統中,任何人都有許可權使用查詢功能,不做任何限制。界面如下,
由於實現的查詢功能有多種,如按圖書編號、圖書名稱等欄位進行完全體配查找和部分體配的模糊查找,還有按多個條件進行邏輯與或是邏輯或的多條件查找。其中實現的方法者差不多,所以只給出多條件查找的代碼,如下:
5.6.2借閱者登錄功能的實現
這個功能的實現與工作人員和管理人員登錄功能實現的方法大致一樣,並且還要簡單。是從User表中查到到借閱證號與密碼,看與用戶輸入的是否一致。如果一致,那麼用戶就可查看自已的借閱情況並維護自己的部分信息。源代碼與借閱者登錄界面都略。
5.6.3借閱者借閱情況功能的實現
當借閱者正確登錄到系統後,此功能將被激活,使用戶能查看到自身的借閱情況。在此系統中,信息的顯示一般用ListView來實現,只在較少的情況下用到了DBgrid,因為我覺得ListView更好實現,並能使信息數據對用戶的完全分離。
在這里跟據借閱者的不同要求實現借閱情況的查詢,有檢查所有的借閱情部、某本書的借閱情況、和根據已借閱天數的來查詢。其中根椐借閱天數來查詢更有代表性,有方式一和方式二。以下給出此功能的源代碼
按借閱天數查詢方式一
按借閱天數查詢方式二
5.6.4借閱者個人資料維護功能的實現
此功能實現當前借閱者部份資料的修改,但借書證號和身份類別這樣的信息不允許修改,這是圖書館管理員模塊的功能。在此界面中點擊修改按鈕將出現「修改」窗體(Form8),點擊修改密碼按鈕將出現groupbox8,在這里進行密碼修改。關鍵源代碼如下。
這里給出個人部分信息修改的源代碼:
這里給出密碼修改的源代碼:
5.7工作人員-圖書借閱/歸還模塊的實現
5.7.1工作人員進行圖書借閱功能實現
在這個功能中,工作人員輸入借閱者的借閱證號和所要借閱的圖書的圖書編號,然後點擊借閱按鈕就可進行圖書借閱。考慮到實際中可能會出現只知圖書名而不知圖書編號的情況,在此界面下方加入了一個轉換功能,可以把圖書名稱轉換成圖書編號,再進行圖書借閱。
在借閱完成後會生借閱報表以便借閱者檢查和確認,借閱報表的列印效果如下圖,實現比較簡單,略去實現過程。
5.7.2工作人員進行圖書歸還功能實現
在此功能中,工作人員根據借閱者的借書證號和歸還的圖書編號進行圖書的歸還工作。並且根據現實中可能會出現的只知圖書名不知圖書編號的歸還情況,所以加入了按書籍名稱進行歸還的功能。這個功能是圖書借閱功能中把圖書名稱轉換成圖書編號的一種改進方法,這樣就不用如借閱功能中一樣要先轉換再借閱了。歸還完成後,同樣會列印出歸還報表以便用戶檢查和確認。
5.8圖書館管理員模塊的實現
5.8.1圖書館管理員圖書管理功能的實現
在這個功能中可以在(*圖書編號)中輸入圖書編號,點查找按鈕後就會在各個相應的組件中顯示出信息,或按圖書名稱模糊查找到所要的記錄,在各個相應的組件中顯示第一條記錄的信息,也可在下端的ListView組件中點擊某一條記錄,在各個相應的組件中也會顯示所選記錄的信息。在入庫功能中只要不是相同的圖書編號並且帶*號提示的欄位不為空就可插入新的圖書記錄。刪除則刪除那些Book表中的圖書記錄,如果借出還可依用戶要求連帶刪除owner表中的記錄。因為圖書修改與圖書入庫的功能與工作人員記錄修改和工作人員記錄添加的實現過程一樣,所以下面僅給出刪除功能的源代碼,如下
5.8.2圖書館管理員工作人員和管理員管理功能的實現
在此功能中可以加入工作人員或是管理員,或是修改他們的密碼、許可權。
在此功能中如果選中ListView中的記錄,則在右邊相應的組件中顯示出信息,並且管理員還可對這些記錄進行修改或加入新的記錄。並且也可以點刪除按鈕刪除選中的一條或多條記錄。刪除功能與圖書記錄的刪除一般,所以下面只給出添加與修改的實現過程。
5.8.3圖書館管理員修改圖書類別及統記功能的實現
在此窗體中能對圖書的類別進行刪除,添加和修改,這模塊的功能的實現過程與圖書記錄的刪除,添加和修改一樣的,但是這個窗體還能跟據圖書類別進行統計,還可根據Book表和owner表統計出圖書總數目,庫存圖書數目,借出圖書數目及借閱過期的圖書數目。在這里給出統計圖書總數目,庫存圖書數目,借出圖書數目及借閱過期的圖書數目的實現過程中的幾個函數和過程
5.8.4圖書館管理員借閱者管理功能的實現
查詢借閱者可根據借閱者的借書證號或姓名或身份編號查找到借閱者的信息,也可以實行模糊查找,這個功能的實現與前面圖書查找的實現過程一般,就不再詳細說明。
5.8.5圖書館維護借閱者管理功能的實現
此功能能對借閱者信息進行查看添加、刪除、修改。在這里給出刷新按鈕的實現過程
5.8.6圖書館身份維護功能的實現
這一部分是對借閱者身份進行管理,能對身份進行添加、刪除、修改。並且同樣的在listview中選中某條或多條記錄時會在相應的右邊的組件中顯示出信息。此功能實現過程與前面所敘有雷同,略。
5.8.7圖書館借閱者統計功能的實現
此功能按借閱者身份進行統計,得出具有某種身份的借閱者總數,此種身份的並借閱圖書的借閱者數和所借閱的圖書數,在下面給出實現過程。
5.8.8圖書館統計借閱過期記錄功能的實現
列印出的借閱過期催還報表如下圖所示:
此報表能顯示按借書證號升序排列的借閱信息超過限定時限的信息,其中主要的SQL語句如下:
5.9系統信息顯示的實現
顯過本系統的信息,並且右邊的字向上滾動顯示,主要實現如下:
另外,虛機團上產品團購,超級便宜

② 如何優化一個有100萬條記錄的資料庫表

一:如果有唯一欄位的,創建主鍵和索引,提高查詢主鍵欄位效率;
二:如果這些數據是變更的,可以通過時間來創建分區;
三:如果部分老數據都是不需要的數據(不常用),可以定期將老數據備份到其他位置;
四:如果是查詢的話,可以通過分頁查詢的形式進行,不要一次性讀取過多數據。

③ 記錄條數很多的資料庫優化設計問題

首先,需要看看是否真的需要產生這么多數據,是否可以每隔一段時間就匯總一次上發上去?
如果確實需要存儲這么多數據的話,建議考慮分表,也就是說,表名前綴一樣,但是,根據具體的情況動態創建分表,1天260W,1個月也有將近上億的數據了,也是挺多的了。另外,還可以考慮針對不同的客戶端,插入不同的表,從兩個維度來進行分表處理。這樣的話,一個客戶端平均一個月就是300W的數據,數據量就會小很多了,如果覺得表太多的話,可以幾個客戶端使用一個表

④ 怎樣進行sql資料庫的優化

1、資料庫空間是個概述,在sqlserver里,使用語句 exec sp_spaceused 'TableName' 這個語句來查。

⑤ 資料庫結構設計最優化問題

你這個就是很普通的資料庫樹形結構,網上討論的很多了,自己選擇一個合適的方案就行了,搜索一下 資料庫樹形結構

⑥ 誰知道資料庫優化設計方案有哪些

●資料庫性能的優化
一個資料庫系統的生命周期可以分成:設計、開發和成品三個階段。在設計階段進行資料庫性能優化的成本最低,收益最大。在成品階段進行資料庫性能優化的成本最高,收益最小。
資料庫的優化通常可以通過對網路、硬體、操作系統、資料庫參數和應用程序的優化來進行。最常見的優化手段就是對硬體的升級。根據統計,對網路、硬體、操作系統、資料庫參數進行優化所獲得的性能提升,全部加起來只佔資料庫系統性能提升的40%左右,其餘的60%系統性能提升來自對應用程序的優化。許多優化專家認為,對應用程序的優化可以得到80%的系統性能的提升。
●應用程序的優化
應用程序的優化通常可分為兩個方面:源代碼和SQL語句。由於涉及到對程序邏輯的改變,源代碼的優化在時間成本和風險上代價很高,而對資料庫系統性能的提升收效有限。

⑦ 如何設計、優化 多個 多對多的資料庫表

若表比較多,每一個表裡面的數據比較多的話,若在查詢數據 Where a.ColName1=b.ColName1 and b.ColName2=c.ColName2……等查詢語句的時候,會導致速度比較慢
這樣最好對這些關聯欄位ColNam1,ColNam2……等欄位增加索引,能明顯加快查詢速度。

⑧ 如何保證數據安全性 MySQL資料庫設計優化技巧

1、優化設計的技巧
(1) 如果一個欄位需要經常更改,則採用以空間換時間的設計方法
最常見的例子是用戶積分登錄次數的累加,按照範式設計,在users表中建立一個欄位us_scores,以後需要在用戶積分改變時採用update的語句進行修改。但是知道 update語句的執行速度是很慢的,為了避免大量重復使用它,優化的設計方案是建立us_scores表,存儲每次增加的積分,在查詢是採用SQL語句的sum方法來計算之。
(2) 關聯欄位類型盡可能定義為數字類型
(3) 表的序列欄位必須是數字類型
(4) 若資料庫有移植的可能性,不使用存儲過程及觸發器
(5) 建立恰當的索引
索引的建立是加快資料庫查詢的基本技巧之一,通常的建議是,只有百萬級的記錄的表格才應該建立索引。
,命名都應該作為非常重要的事情來看待,表、序列、欄位、索引的命名技巧可以歸結如下:
(1) 關聯欄位名稱必須相同,名稱以基礎表的欄位名稱為准
(2) 序列名字跟表欄位名字相同
(3) 關聯表的名稱應該是被關聯的表用「_」連接起來組成的
(4) 欄位定義的前兩位是表名的縮寫,第三位是下劃線
一,保證規范,序列名稱必須是唯一的,而且,一般的序列就是這個表的id欄位。如果不加前綴,那麼欄位都叫做id就會違背惟一性原則。
第二,為了將來關聯查詢語句的書寫方便。
(5) 索引的名字和表的名字相同
(6) 常用欄位採用固定定義
為了提高大數據量的表格的查詢速度,可以採用建立適當的索引方式。如果一個表只有一個索引,建議索引的名字跟表相同,如果有多個索引,則為表名稱加下劃線加索引列名稱。
最安全的設計方案是,Web資料庫和測試資料庫分離。Web資料庫許可權只被管理員一個人掌握。
關於MySQL資料庫設計
的優化措施還需要經過資料庫設計人員的不斷發掘,從資料庫設計中不斷的發現問題,提出解決問題的方法,才能將資料庫的性能優化的更好更全面。

⑨ 資料庫性能優化有哪些措施

1、調整數據結構的設計。這一部分在開發信息系統之前完成,程序員需要考慮是否使用ORACLE資料庫的分區功能,對於經常訪問的資料庫表是否需要建立索引等。

2、調整應用程序結構設計。這一部分也是在開發信息系統之前完成,程序員在這一步需要考慮應用程序使用什麼樣的體系結構,是使用傳統的Client/Server兩層體系結構,還是使用Browser/Web/Database的三層體系結構。不同的應用程序體系結構要求的資料庫資源是不同的。

3、調整資料庫SQL語句。應用程序的執行最終將歸結為資料庫中的SQL語句執行,因此SQL語句的執行效率最終決定了ORACLE資料庫的性能。ORACLE公司推薦使用ORACLE語句優化器(Oracle Optimizer)和行鎖管理器(row-level manager)來調整優化SQL語句。

4、調整伺服器內存分配。內存分配是在信息系統運行過程中優化配置的,資料庫管理員可以根據資料庫運行狀況調整資料庫系統全局區(SGA區)的數據緩沖區、日誌緩沖區和共享池的大小;還可以調整程序全局區(PGA區)的大小。需要注意的是,SGA區不是越大越好,SGA區過大會佔用操作系統使用的內存而引起虛擬內存的頁面交換,這樣反而會降低系統。

5、調整硬碟I/O,這一步是在信息系統開發之前完成的。資料庫管理員可以將組成同一個表空間的數據文件放在不同的硬碟上,做到硬碟之間I/O負載均衡。

6、調整操作系統參數,例如:運行在UNIX操作系統上的ORACLE資料庫,可以調整UNIX數據緩沖池的大小,每個進程所能使用的內存大小等參數。

資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型資料庫系統都在各個方面得到了廣泛的應用。

在信息化社會,充分有效地管理和利用各類信息資源,是進行科學研究和決策管理的前提條件。資料庫技術是管理信息系統、辦公自動化系統、決策支持系統等各類信息系統的核心部分,是進行科學研究和決策管理的重要技術手段。

在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的「倉庫」,並根據管理的需要進行相應的處理。

例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。

(9)資料庫設計優化擴展閱讀

資料庫,簡單來說是本身可視為電子化的文件櫃--存儲電子文件的處所,用戶可以對文件中的數據進行新增、截取、更新、刪除等操作。

資料庫指的是以一定方式儲存在一起、能為多個用戶共享、具有盡可能小的冗餘度的特點、是與應用程序彼此獨立的數據集合。

在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的"倉庫",並根據管理的需要進行相應的處理。

例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個范圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。

⑩ 資料庫的優化包括哪些方面呀

資料庫的優化說起來很簡單。
就像打水的木桶一樣,降低瓶頸。首先要對資料庫運行情況做分析。
看哪些等待時間較多,有哪些瓶頸。比如是cpu?IO?硬解析較多?cache命中率低?再分別處理。,

從資料庫整體來說,一般主要還是根據主機配置情況和實際使用情況做一些配置調整比如SGA的容量。增加數據文件,合理分配表空間,合理分區,降低IO熱點等。

但大多數時候資料庫優化都會在SQL上體現出來,一般有問題的資料庫多半是有執行計劃異常,或者是表設計不合理等造成某些SQL執行效率極低,影響這個資料庫性能。

熱點內容
java插件瀏覽器 發布:2024-09-23 17:16:02 瀏覽:258
微信支付進去手勢密碼哪裡改 發布:2024-09-23 17:02:08 瀏覽:327
我的世界2g伺服器內存 發布:2024-09-23 16:57:55 瀏覽:581
正則表達式預編譯html案例 發布:2024-09-23 16:53:22 瀏覽:941
文章腳本 發布:2024-09-23 16:48:20 瀏覽:758
sna2008演算法 發布:2024-09-23 16:36:49 瀏覽:504
哥倫比亞大學訪問學者 發布:2024-09-23 16:08:19 瀏覽:571
devc怎麼配置gcc編譯環境 發布:2024-09-23 15:52:26 瀏覽:446
血族第二季ftp 發布:2024-09-23 15:49:58 瀏覽:528
清楚手機瀏覽器緩存 發布:2024-09-23 15:47:24 瀏覽:518