數(shù)據(jù)庫設(shè)計知識點(diǎn)總結(jié)
數(shù)據(jù)庫設(shè)計
1概念
1.1描述
數(shù)據(jù)庫設(shè)計是指對于一個給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能夠有效地存儲數(shù)據(jù)。
1.2數(shù)據(jù)庫設(shè)計包含四部分
需求分析概念結(jié)構(gòu)設(shè)計邏輯結(jié)構(gòu)設(shè)計物理結(jié)構(gòu)設(shè)計
1.3數(shù)據(jù)庫設(shè)計的原則
明白自己的系統(tǒng)為OLTP系統(tǒng)還是OLAP系統(tǒng)降低對數(shù)據(jù)庫功能的依賴嚴(yán)格遵從數(shù)據(jù)庫三范式適當(dāng)?shù)目紤]數(shù)據(jù)分塊
盡量保證記錄的唯一標(biāo)識存在
2概念結(jié)構(gòu)設(shè)計
2.1E--R圖設(shè)計
E--R圖分為局部E--R圖和全局E--R圖E--R模型基本符號實(shí)體的表示:長方形
聯(lián)系的表示:菱形,如1:1、1:n(m:1)、(m:n)屬性的表示:橢圓形
2.2確定實(shí)體與屬性的原則:
能作為屬性的盡量作為屬性而不要劃為實(shí)體
作為屬性的數(shù)據(jù)元素與實(shí)體之間的聯(lián)系只能是1:n的聯(lián)系作為屬性的數(shù)據(jù)項不能再用其他屬性加以描述,也不能與其他實(shí)體或?qū)傩园l(fā)生聯(lián)系。
3邏輯結(jié)構(gòu)設(shè)計
3.1概念
是將基本E--R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)的過程。
3.2邏輯結(jié)構(gòu)設(shè)計的過程分為
將概念結(jié)構(gòu)轉(zhuǎn)換為現(xiàn)有DBMS支持的關(guān)系、網(wǎng)狀或?qū)哟文P椭械哪骋环N數(shù)據(jù)模型從功能和性能要求上對轉(zhuǎn)換的模型進(jìn)行評價,看它是否滿足用戶要求對數(shù)據(jù)模型進(jìn)行優(yōu)化
3.3邏輯結(jié)構(gòu)設(shè)計的原則
一個實(shí)體型轉(zhuǎn)換為一個關(guān)系模型,實(shí)體的屬性就是關(guān)系的屬性,實(shí)體的鍵就是關(guān)系的鍵;一個聯(lián)系轉(zhuǎn)換為一個關(guān)系模式,與該聯(lián)系相連的每個實(shí)體型的鍵以及聯(lián)系的屬性都轉(zhuǎn)換為關(guān)系的屬性。
4配置數(shù)據(jù)庫連接
4.1步驟
1.打開powerdesigner,依次點(diǎn)擊:database--connect2.點(diǎn)擊connect,打開對話窗口:3.然后點(diǎn)擊Configuer按鈕,彈出數(shù)據(jù)源配置ConfiguerDataConnections對話框:
4.把頁簽切換到第三個ConnetionProfiles頁簽中,如果連接存在,選中就行,如果不存在,點(diǎn)擊addDataSource數(shù)據(jù)庫圖標(biāo)進(jìn)行新增,彈出ConnectionProfileDefinition對話框此對話框中需要輸入以下信息
Connectionprofilename:輸入數(shù)據(jù)庫連接文件名,它會自動加上后綴名.dcp;Directory:數(shù)據(jù)庫連接文件存放路徑;可以任意;Connetctiontype:選擇JDBC;DBMStype:數(shù)據(jù)庫類型選擇Oracle;
Servername:服務(wù)器名稱;也相當(dāng)于對應(yīng)PL/SQL登陸頁面的數(shù)據(jù)庫;Databasename:數(shù)據(jù)庫名字;Username:登陸數(shù)據(jù)庫名字;Password:密碼
JDBCDriverclass:驅(qū)動類;只要下拉框選擇就行;JDBCDriverJarURL:訪問的服務(wù)器路徑
JDBCconnectionfiles:驅(qū)動包;需要指向ojdbc14.jar或者其他驅(qū)動的包的按鈕路徑;5.點(diǎn)擊TestConnection按鈕進(jìn)行連接測試;
測試連接是否成功;成功會彈出成功或者失敗消息框,測試成功后。點(diǎn)擊確定按鈕,返回數(shù)據(jù)源配置ConfiguerDataConnections對話框,列表中就會多出一個.dcp文件,點(diǎn)擊確定即可。
5導(dǎo)出數(shù)據(jù)庫
5.1步驟
導(dǎo)出數(shù)據(jù)庫表方法如下:
1.啟動PowerDesigner
2.菜單:File->ReverseEngineer->Database出來NewPhysicalDataModel對話框,DBMS選擇ORACLEVersion10g選項,其他可以選擇默認(rèn)值,點(diǎn)擊“確定”按鈕,彈出DatabaseReverseEngineeringOptions對話框:
3.然后在下拉框中選擇我們之前建立的數(shù)據(jù)源文件,并再次輸入數(shù)據(jù)庫UserID和password,點(diǎn)擊Connection即可連接至數(shù)據(jù)庫,并得取所有的數(shù)據(jù)庫對象,在此我們選擇所有的Table。
6PowerDesigner
6.1描述
PowerDesigner是Sybase公司的CASE工具集,使用它可以方便地對管理信息系統(tǒng)進(jìn)行分析設(shè)計,他幾乎包括了數(shù)據(jù)庫模型設(shè)計的全過程。利用PowerDesigner可以制作數(shù)據(jù)流程圖、概念數(shù)據(jù)模型、物理數(shù)據(jù)模型,還可以為數(shù)據(jù)倉庫制作結(jié)構(gòu)模型,也能對團(tuán)隊設(shè)計模型進(jìn)行控制。他可以與許多流行的數(shù)據(jù)庫設(shè)計軟件,例如PowerBuilder,Delphi,VB等相配合使縮短開發(fā)時間和使系統(tǒng)設(shè)計更優(yōu)化。
powerdesigner是能進(jìn)行數(shù)據(jù)庫設(shè)計的強(qiáng)大的軟件,是一款開發(fā)人員常用的數(shù)據(jù)庫建模工具。使用它可以分別從概念數(shù)據(jù)模型(ConceptualDataModel)和物理數(shù)據(jù)模型(PhysicalDataModel)兩個層次對數(shù)據(jù)庫進(jìn)行設(shè)計。在這里,概念數(shù)據(jù)模型描述的是獨(dú)立于數(shù)據(jù)庫管理系統(tǒng)(DBMS)的實(shí)體定義和實(shí)體關(guān)系定義;物理數(shù)據(jù)模型是在概念數(shù)據(jù)模型的基礎(chǔ)上針對目標(biāo)數(shù)據(jù)庫管理系統(tǒng)的具體化。
7導(dǎo)入數(shù)據(jù)庫
7.1方法
將視圖切換到physical模型下,連接數(shù)據(jù)庫:單擊database\\databaseconnection,彈出下面窗口,進(jìn)行數(shù)據(jù)庫的連接。
鏈接完成后單擊tools\\forwardengineer\\schemagenerate,將彈出下面的窗口,單擊generate,即可將物理模型導(dǎo)入數(shù)據(jù)庫。
8實(shí)體
8.1實(shí)體間的關(guān)系
實(shí)體間的三種關(guān)系:
1.標(biāo)識關(guān)系(identifyingrelationship);2.多對多關(guān)系(many-to-manyrelationship);
3.非標(biāo)識關(guān)系(non-identifyingrelationship)。
標(biāo)識關(guān)系是指把實(shí)體1中的主鍵作為實(shí)體2中的外鍵,且作為實(shí)體2的主鍵,非標(biāo)識關(guān)系是指把實(shí)體1中的主鍵作為實(shí)體2中的外鍵,但不作為實(shí)體2的主鍵,8.2概念
Erwin中的實(shí)體有兩種:獨(dú)立實(shí)體和依賴實(shí)體。實(shí)體被指定作為獨(dú)立實(shí)體,或依賴實(shí)體,取決于其鍵的獲得方式。獨(dú)立實(shí)體由方角盒來指定,獨(dú)立實(shí)體不依賴于模型中任何其它實(shí)體來標(biāo)識;依賴實(shí)體被指定為圓角盒,依賴實(shí)體依存于模型中的其它實(shí)體,修改實(shí)體名
8.3修改實(shí)體名稱
方法一:單擊實(shí)體名,按F2鍵可以對實(shí)體名稱進(jìn)行修改;
方法二:右鍵單擊欲進(jìn)行修改的實(shí)體,選擇EntityProperties;
8.4方法三:雙擊實(shí)體修改。列的增刪
方法一:右鍵單擊所選實(shí)體≡tiue,在彈出的trbts窗口中添加境蛐薷氖糶裕?方法二:單擊所選實(shí)體,按tb鍵也可以進(jìn)行添加,刪除或修改操作。
擴(kuò)展閱讀:北大青鳥S2sql數(shù)據(jù)庫設(shè)計和高級查詢總結(jié)
第一章數(shù)據(jù)庫的設(shè)計
良好的數(shù)據(jù)庫設(shè)計
1、節(jié)省數(shù)據(jù)庫的存儲空間2、能夠保證數(shù)據(jù)的完整性
3、方便進(jìn)行數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)
糟糕的數(shù)據(jù)庫設(shè)計1、效率低下
2、更新和檢索數(shù)據(jù)時會出現(xiàn)許多問題
設(shè)計數(shù)據(jù)庫的步驟
1、需求分析階段分析客戶的業(yè)務(wù)和數(shù)據(jù)處理需求⑴收集信息
⑵標(biāo)識對象(實(shí)體)
⑶標(biāo)識每個對象需要存儲的詳細(xì)信息
⑷標(biāo)識對象之間的關(guān)系
2、概要設(shè)計階段繪制數(shù)據(jù)庫的E-R模型圖(實(shí)體關(guān)系圖)
3、詳細(xì)設(shè)計階段將E-R圖轉(zhuǎn)換為多張表,進(jìn)行邏輯設(shè)計,并應(yīng)用數(shù)據(jù)庫設(shè)計的三大規(guī)范進(jìn)行設(shè)計
4、代碼編寫階段
映射基數(shù)1一對一2一對多3多對一4多對多
實(shí)體關(guān)系圖
矩形表示實(shí)體集橢圓形表示屬性菱形表示關(guān)系集直線用來連接
設(shè)計數(shù)據(jù)庫問題1信息重復(fù)2更新異常
3插入異常(無法表示某些信息)4刪除異常(丟失有用的信息)
數(shù)據(jù)庫設(shè)計的三大規(guī)范理論
一第一范式的目標(biāo)是確保每列的原子性
二第二范式的目標(biāo)是確保表中的每列都和主鍵相關(guān)
三第三范式的目標(biāo)是確保每列都和主鍵直接相關(guān),而不是間接相關(guān)(不能傳遞依賴)
規(guī)范化和性能的關(guān)系
在必要的情況下允許適當(dāng)?shù)臄?shù)據(jù)冗余
第二章數(shù)據(jù)庫的實(shí)現(xiàn)
一建庫
uesmastergo
ifexists(select*fromsysdatabaseswherename="數(shù)據(jù)庫名字")
dropdatabase數(shù)據(jù)庫名--判斷這個數(shù)據(jù)庫名字是否存在,如果存在刪除createdatabase數(shù)據(jù)庫名on[primary]
(name="",filename="",
size="",建立數(shù)據(jù)庫的主文件如果需要建立次要文件(ndf)用逗號隔開maxsize="",filegrowth="")
logon(
name="",filename="",
size="",建立日志文件如果建立多個日志文件在后面用逗號隔開maxsize="",filegrowth="")
go--批處理
二建表ues數(shù)據(jù)庫名字
goifexists(select*fromsysobjectswherename="表名")droptable表名--判斷是否有這個名字的表createtable表名
(字段名數(shù)據(jù)類型列的特征
如stuidintidentity(1,1)notnull--identity表示是否為自動增長)go
三加約束
1主鍵約束(primarykeyconstraint)--constraint約束altertable表名
addconstraint約束名(PK_***)primarykey(約束的字段)2唯一約束(uniqueconstraint)altertable表名
addconstraint約束名(uq_***)unique(約束的字段)3檢查約束(checkconstraint)altertable表名
addconstraint約束名(ck_***)check(約束的條件)4默認(rèn)約束(defaultconstraint)
altertable表名
addconstraint約束名(df_***)default("默認(rèn)值")for約束的字段5外建約束(foreignkeyconstraint)altertable表名
addconstraint約束名(fk_***)foreignkey(約束的字段)references主表的表名(主表的字段)
總結(jié)
createdatabase建庫createtable建表addconstraint加約束dropdatabase刪庫droptable刪表dropconstraint刪約束
usemasterselect*fromsysdatabases判斷是否有庫名select*fromsysobjects判斷是否有表名
完整性
1實(shí)體完整性(保證數(shù)據(jù)是唯一的如主鍵\\唯一鍵\\標(biāo)示列)2引用完整性(保證兩表數(shù)據(jù)一致如外鍵)
3域完整性(保證數(shù)據(jù)的準(zhǔn)確性如檢查約束\\默認(rèn)約束\\非空)
三層安全模型
1登陸帳號--決定登陸服務(wù)windows身份驗(yàn)證
execsp_grantlogin"windows域名\\域帳戶"sql身份驗(yàn)證
execsp_addlogin"帳戶名","密碼"2數(shù)據(jù)庫用戶--訪問數(shù)據(jù)庫use數(shù)據(jù)庫名
goexecsp_grantdbaccess"登陸帳戶",("數(shù)據(jù)庫用戶")如果不寫數(shù)據(jù)庫用戶默認(rèn)為登陸帳號名3權(quán)限--在數(shù)據(jù)庫里的操作use數(shù)據(jù)庫名
gogrant權(quán)限(增,刪,改,查,建表(createtable))on表名to用戶名
第三章T-SQL編成
使用變量一局部變量
declare@變量名類型賦值:1、set@變量名=值2、select@變量名=值
二全局變量
@@error最后一個T-SQL錯誤的錯誤號
@@identity最后一次插入的標(biāo)示值@@language當(dāng)前使用的語言的名稱
@@max_connections可以創(chuàng)建的同時連接的最大數(shù)目@@rowcount受上一個sql語句影響的行數(shù)@@servername本地服務(wù)器的名稱
@@servicename該計算機(jī)上的sql服務(wù)的名稱@@timeticks當(dāng)前計算機(jī)上每刻度的微秒數(shù)@@transcount當(dāng)前連接打開的事物數(shù)@@versionsqlserver的版本信息
輸出語句
1、print局部變量或字符串
2、select局部變量as自定義列名(查詢語句的特殊應(yīng)用)
邏輯控制語句1、
if(條件)
begin--開頭語句
end--結(jié)束
else--為可選begin--開頭語句end--結(jié)束2、while(條件)語句[break]3、
case
when條件1then結(jié)果1when條件2then結(jié)果2[else其他結(jié)果]end
批處理語句
以一條命令的方式來處理一組命令的過程稱為批處理批處理的好處就是能夠簡化數(shù)據(jù)庫的管理
第四章高級查詢
一簡單子查詢
select***from表1where字段1>(子查詢)它等于一個等值內(nèi)連接
將子查詢和比較運(yùn)算符聯(lián)合使用,必須保證子查詢返回的值不能多與一個二in和notin子查詢
in后面的子查詢可以返回多條記錄
select***from表1where字段1in(notin)(子查詢)
三existsnotexists子查詢ifexists(子查詢)語句
如果子查詢的結(jié)果非空,則exists(子查詢)將返回真(true),否則返回假(false)
第五章事務(wù)、索引和試圖
一事務(wù):是一個整體,要么都成功,要么都失敗
事務(wù)時作為單個邏輯工作單元執(zhí)行的一系列操作。一個邏輯工作單元必須有4個屬性1原子性(atomicity)
事務(wù)是一個完整的操作。事務(wù)的各元素是不可分得2一致性(consistency)
當(dāng)事務(wù)完成時,數(shù)據(jù)必須處于一致狀態(tài)
3隔離性(isolation)
對數(shù)據(jù)進(jìn)行修改的所有并發(fā)事務(wù)是彼此隔離的,這表明事務(wù)必須是獨(dú)立的,它不應(yīng)以任何方式依賴于或影響其它事務(wù)4持久性(durability)
事務(wù)完成之后,它對系統(tǒng)的影響是永久的簡稱ACID二如何創(chuàng)建事務(wù)
開始事務(wù):begintransaction提交事務(wù):committransaction
回滾(撤銷)事務(wù):rollbacktransaction事務(wù)的分類有3種
1顯示事務(wù):用begintransaction明確指定事務(wù)的開始
2隱式事務(wù):通過設(shè)置setimplicit_transactionon語句,將隱式事務(wù)模式設(shè)置為打開3自動提交事務(wù):這是sqlserver的默認(rèn)模式它將每條單獨(dú)的T-SQL語句視為一個事務(wù).如果成功執(zhí)行,則自動提交.如果錯誤,則自動回滾.在這里用的了全局變量@@errordeclare@errorsumintset@errorsum=0語句
set@errorsum=@errorsum+@@error
三什么是索引
索引,它是sqlserver編排數(shù)據(jù)的內(nèi)部方法,相當(dāng)于字典中的目錄索引頁,數(shù)據(jù)庫中存儲索引的數(shù)據(jù)頁
通過索引可以大大提高數(shù)據(jù)庫的檢索速度,改善數(shù)據(jù)庫性能加快查詢的速度(通過平衡二叉樹)增\\刪\\改速度慢,所需要的空間大
索引可分為3類
1唯一索引:唯一索引不允許兩行具有相同的索引值.
創(chuàng)建了唯一約束,將自動創(chuàng)建唯一索引,為了最佳性能,建議使用主鍵的約束
2主鍵索引:在數(shù)據(jù)庫關(guān)系圖中為表定義一個主鍵將自動創(chuàng)建主鍵索引,主鍵索引是唯一索引的特殊類型.
3聚集索引:在聚集索引中,表中各行的物理順序與健值的邏輯(索引)順序相同.
非聚集索引:表中各行的物理順序與鍵值的邏輯順序不匹配.
在sqlserver中,一個表只能創(chuàng)建一個聚集索引,但可以有多個非聚集索引,設(shè)置某列為主鍵,該列就默認(rèn)為聚集索引
四建立索引
create[unique][clustered][nonclustered]indexix_(name)on表名(字段名)
withfillfactor=30
1unique指定唯一索引可選
2clusterednonclustered指定是聚集索引還是非聚集索引,可選
3fillfactor表示填充因子,指定0--100的值,該值指示索引頁填滿的空間所占的比例(百分比越小,所留得空白空間越大)什么情況下可以建立索引1該列用于頻繁搜索
2該列用于對數(shù)據(jù)進(jìn)行排序請不要對下面的列創(chuàng)建索引1列中僅包含幾個不同的值2表中僅包含幾行.
五什么是試圖
試圖使另一種查看數(shù)據(jù)庫中一個或多個表中的數(shù)據(jù)的方法.它是一種虛擬表
試圖通常用來進(jìn)行以下三種操作1篩選表中的行
2防止未經(jīng)許可的用戶訪問敏感數(shù)據(jù)3將多個物理數(shù)據(jù)表抽象為一個邏輯數(shù)據(jù)表(降低數(shù)據(jù)庫的復(fù)雜程度)好處
1對最終用戶的好處結(jié)果更容易理解獲得數(shù)據(jù)更容易2對開發(fā)人員的好處限制數(shù)據(jù)檢索更容易維護(hù)應(yīng)用程序更方便
六如何創(chuàng)建試圖
createviewview_(name)as
(select語句)
第六章存儲過程
一什么是存儲過程
存儲過程(procedure)類似于java語言中的方法,它是sql語句和控制流語句的預(yù)編譯集合。存儲過程的優(yōu)點(diǎn)
1允許模塊化程序設(shè)計2允許更快地執(zhí)行3減少網(wǎng)絡(luò)流量
4可作為安全機(jī)制使用存儲過程分為以下兩類1系統(tǒng)存儲過程
2用戶自定義的存儲過程
3擴(kuò)展存儲過程(系統(tǒng)定義好的,以xp_開頭)
二常用的系統(tǒng)存儲過程
所有的系統(tǒng)存儲過程的名稱都以sp_開頭
sp_databases(列出服務(wù)器上的所有數(shù)據(jù)庫)sp_helpdb(報告有關(guān)指定數(shù)據(jù)庫或所有數(shù)據(jù)庫的信息)sp_renamedb(更改數(shù)據(jù)庫的名稱)
sp_tables(返回當(dāng)前環(huán)境下可查詢的對象的列表)sp_columns(返回某個表列的信息)sp_help(查看某個表的所有信息)sp_helpconstraint(查看某個表的約束)
sp_stored_procedures(列出當(dāng)前環(huán)境中的所有存儲過程)
sp_password(添加或修改登陸帳號的密碼)
sp_helptext(顯示默認(rèn)值、未加密的存儲過程、用戶定義的存儲過程、觸發(fā)器或試圖的實(shí)際文本)
擴(kuò)展參數(shù)
execxp_cmdshelldos命令[no_output]
三用戶定義的存儲過程1創(chuàng)建不帶參數(shù)的存儲過程createproc[edure]存儲過程名
[@參數(shù)1數(shù)據(jù)類型[默認(rèn)值][output]@參數(shù)2數(shù)據(jù)類型[默認(rèn)值][output]]
assql語句
2創(chuàng)建步帶參數(shù)的存儲過程1輸入?yún)?shù)
可以在調(diào)用時向存儲過程傳遞參數(shù),此類參數(shù)可以用來在存儲過程中傳入值2輸出參數(shù)(引用傳遞)
如果希望返回值,則可以使用輸出參數(shù),輸出參數(shù)后有"output"標(biāo)記,執(zhí)行存儲過程后,將把返回值存放在輸出參數(shù)中,可供其它T-SQL語句讀取訪問3創(chuàng)建帶輸出參數(shù)的存儲過程
如果希望調(diào)用存儲過程后,返回一個或多個值,這時需要使用輸出(output)參數(shù)。使用輸出參數(shù)創(chuàng)建存儲過程時,在參數(shù)后面需要跟隨"output"關(guān)鍵字,調(diào)用時也需要在變量后跟隨"output"關(guān)鍵字
四處理錯誤信息
如果存儲過程變得越來越復(fù)雜,則需要在存儲過程中加入錯誤檢查語句raiserror({msg_id|msg_str}{,severity,state}[withoption[,...n]])
例raiserror("及格線錯誤,請指定0-100之間的分?jǐn)?shù),統(tǒng)計中斷退出",16,1)msg_id在sysmessages系統(tǒng)表中指定的用戶定義錯誤信息msg_str用戶定義的特定信息,最長255個字符
severity與特定信息相關(guān)聯(lián),表示用戶定義的嚴(yán)重性級別。用戶可使用的級別為0-18級(一般下為16)
19-25級是為sysadmin固定角色的成員預(yù)留的,并需要指定withlog選項20-為致命錯誤
state表示錯誤的狀態(tài),是1-127的值
option指示是否將錯誤記錄到服務(wù)器錯誤日至中
友情提示:本文中關(guān)于《數(shù)據(jù)庫設(shè)計知識點(diǎn)總結(jié)》給出的范例僅供您參考拓展思維使用,數(shù)據(jù)庫設(shè)計知識點(diǎn)總結(jié):該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請聯(lián)系我們及時刪除。