大二上 數據庫 筆記整理___之後可能有用

第一章小結:
數據庫是一種按特定數據模型組織、存儲和管理數據的文件
 數據模型是描述數據、數據間關係及其約束的形式描述
 關係模型是目前大多數數據庫採用的數據模型
 數據庫系統:由用戶、數據庫應用程序、DBMS、數據庫組成 
DBMS是一類用於建立、操縱和管理數據庫的系統軟件 
DBMS有多種類型、多種功能 
數據庫應用系統與其它軟件系統同樣,分多個階段完成開發 
我的數據庫系統與企業級數據庫系統分別面向不一樣場合 
數據庫應用結構:集中式結構、客戶/服務器結構、分佈式結構
 Access軟件既是一個桌面數據庫管理系統,又是一個應用工具
 
第二章小結
問題:什麼是關係數據庫?
採用關係數據模型組織、存儲和管理數據的數據庫。
行:元組 列:屬性 關係:表
能夠把主鍵看做一個固定了的候選鍵(主鍵非空,外鍵非空)
代理鍵是自動生成的數字序列,代替複合主鍵
參照完整性就是指兩個表的主鍵取值要對應外鍵。但列名不必定要一致。
對關係數據模型的描述:
三個方面:
    數據結構:二維表
    數據操做:基於關係代數的數據集合操做
    數據約束:
實體完整性約束
參照完整性約束
用戶自定義約束
函數依賴:屬性依賴於主鍵        寫做:主鍵->(屬性)
在一個表中存在多組函數依賴,則說明關係不規範,拆分紅只有一組函數依賴的關係表
 
 
第三章小結
列約束字句
    check的用法
        check(屬性 in (’a’,’b’)),在這兩個裏面選一個有效
    unique 值惟一
    default缺省 default’a’,
表約束
    主鍵:constraint x_pk primary key(a,b),(可用列約束可用表約束)
    代理鍵:identity (m,n) m是初值,n是增量
    外鍵:只能用表約束。constraint a_fk foreign key(a)
    reference    另外一個表表名(主鍵名)
    On update cascade
在有參照完整性約束的狀況下刪除表會報錯
建立索引:create index a on表+列  做用:快速查詢
數據操縱sql語句:
    插入:insert into table values(‘ ‘,'')
    修改:update table
         Set a(列名)=‘'
         Where b(主鍵名)=''
    刪除:刪除一行:delect from table
                 Where a=‘’,
    查詢語句:
        select (能夠打*號)
        from table
        where 條件 (where sth between a and b)(sth like %sth %指代任意字符,like是一種匹配)
            書上只有where用了and,其餘地方並列都用逗號
        group by(having) 
        order by 列名 排序,默認升序,降序用desc,升序勇asc
        內置函數:count(*) as 名稱 from
                Min(列名),max(列名)   //注意在後面用as給查詢結果的列命名
                Len(列名),char字符的長度
        Group by相似於order by 是對查詢結果的操做,它能夠將查詢結果按照屬性分組,並在組內進行操做
        having 是表示限定條件  ,having 條件
        unique和distinct的區別,前者是表約束,後者是列約束
    group的理解:group通常和聚合函數一塊兒用,group by 有一個原則,就是 select 後面的全部列中,沒有使用聚合函數的列,必須出如今 group by 後面或者包含在having 後的聚合函數裏。
       where和having 的區別,where是在分組前的篩選,having是在分組後的篩選。內置函數通常不放在where中。having限制的是組不是列(它的處理範圍是在組間)
        多表關聯查詢:
            子查詢: where 主鍵 in
                            (
                            Select 外鍵
                                Balabala
                             )
                
        鏈接查詢:經常使用,注意在where中找到主鍵外鍵相等便可 善用as
        from a join b on 外鍵等於主鍵:就是鏈接查詢中把from和where合用
        外鏈接查詢:當查詢結果不匹配的時候,想要輸出不匹配的內容,就要用到外鏈接。由於以上的方法都是在匹配的前提下獲得的。
            Left/right/full join on(就是正常的join函數加一個前綴)
建立視圖:create view as
本章細節:sql語言類型:
            數據  定義/操做/查詢/控制
 
第四章小結
        e-r實體關係類型:
         | 表示強制 。
        表示可選  單線表示最小0最大1,多線表示最小0最大n,可是強制類型最小爲1。
        繼承關係:完整繼承(子類包含父類的全部狀況),比繼承多一個橫線,非完整繼承又有橫線又有叉
                       存在一個箭頭指向父類
        互斥關係:子類互不兼容。 圖中有一個叉
第五章:
          數據庫模型:概念數據模型;邏輯數據模型;物理數據模型;
          標識符是邏輯概念,主鍵是物理概念
          實體類型:強實體。  弱實體:依賴其餘實體才能存在
          若是弱實體屬性中存在依賴實體的標識符的屬性,就是id依賴。在圖中須要畫一個三角形,三角形的頂點指向強實體。
     刪除強實體以前要先刪除全部依賴的弱實體
概念數據模型的設計:
    自頂向下/自底向上/自內而外 /混合策略
邏輯模型到物理模型的轉換:
        非id依賴:主鍵仍是弱實體的標識符不變, 但把強實體的標識符放入弱實體做爲屬性之一
        ID依賴:強實體標識符放入後和弱實體的標識符一塊兒構成複合主鍵
        1:1關係的轉換:主鍵外鍵不區分
        1:n關係:將1表明的實體的標識符放入n表明的實體。可是不構成複合主鍵(主鍵不變)
    M:n關係:須要中間關聯表:包含以前兩表的全部標識符並做複合主鍵
繼承關係的轉換:
        父表中的主鍵放入子表,作主鍵和外鍵
函數依賴:
        形式:決定因子->依賴函數
        類型:
            徹底/部分/傳遞/多值%函數依賴
                部分:複合主鍵中,屬性只依賴於主鍵的一部分
                多值:非主屬性互相之間都依賴
                傳遞:x->y,y->z
關係式不規範的緣由:
    存在多個函數依賴關係
關係規範化範式:六種
    第一範式:屬性不可再分
    第二:消除部分依賴
    第三:消除傳遞
    巴斯德範式:全部函數依賴的決定因子都是候選鍵(決定因子要惟一)
    第四範式:茶消除多值依賴             
規範化程度太高:形成數據庫性能降低。
    反規範化:下降規範化程度:合併表
 
第六章重點
事務:概念:單個業務處理單元的一組數據庫訪問操做
        (默認一句sql語句爲一個事務)
         性質:要麼成功要麼失敗,不能部分
                  是dbms執行任務的最小單元/最小併發控制/最小故障恢復,可推上面
         特性:asid
                    原子性:不可分->要麼成功要麼失敗
                    一致性:屢次結果一致
                    隔離性:不相互影響
                    數據的改變是永久的
事務sql語言:
        開始:begin transaction
        回滾:rollback
        提交:commit
        數據保存:save transaction
事務編程:
            Begin 
            數據操做/查詢語言
            if error
            Rollback
            Commit
               事務編程中不能對數據庫進行操做,能夠對數據進行操做
併發控制:防止數據不一致/死鎖
 
數據故障分類:
        不可重複讀:兩次讀的過程當中,另外一個線程對數據的修改
        髒讀:  回滾過程當中另外一個線程對數據的讀取
        幻想讀://相似不可重複讀
        丟失更新:兩個數據修改進程交叉進行,其中一個作無用功
解決方法:併發事務調度:
        要想解決問題->調度順序:可串行化調度
    具體方案:
        事務鎖:
        二階段鎖定協議:事務分兩階段:
                 增加:只能得到鎖,不能釋放
                 縮減:釋放鎖,不能得到
                 二階段鎖定就能保證串行化
鎖:
    鎖的分類: 
        排它鎖:鎖定後不容許讀寫(也不能容許別的進程對它加鎖)
        共享鎖:鎖定後不容許寫,能夠讀
    資源鎖定粒度:
        粒度:數據的粗放程度
        從數據庫到元組,粒度愈來愈小        
加鎖協議
        一級加鎖協議:修改共享數據以前加排它鎖,事務結束後釋放         問題:不可重複讀 髒讀
        二級加鎖協議:一級基礎上,針對讀操做,加共享鎖,讀完就釋放   問題:不可重複讀
        三級加鎖協議:與二級不一樣的是事務結束後才釋放共享鎖
死鎖:兩個進程都在等待對方進行。宕機
        死鎖的解決方法:回滾一個操做
數據庫備份與恢復
        恢復:從備份副本中恢復
        備份方式:    
            備份文件恢復:
            事務日誌回滾:
 
第七章重點
數據庫應用程序結構
          表現層
          業務邏輯層
          數據訪問層
    數據庫應用程序的開發
        軟件
        數據庫
數據庫鏈接技術
        Odbc        微軟對數據庫訪問的一組api
        Jdbc        java API:創建與數據庫的鏈接 發送sql語句 處理結果
        Esql         嵌入式sql,把sql嵌入到宿主語言中
Web數據庫系統
        asp.net
        Jsp
遊標編程
        遊標是從結果集中每次提取一條記錄的方法
存儲過程:
        相似於腳本
        Create procedure a
                A char(10)
                B varchar(20)        output
          As 
        Select b from ~~~
        Where a=~~~
 
觸發器
        特殊的存儲過程:觸發以後自動執行
        當數據操做語句對特定表的數據進行操做的時候獲得觸發,保證對數據的處理符合語句定義的規則
                即實現參照完整性和數據一致性
         觸發器性能通常較低        
觸發器的組成:
        事件
        條件
        動做
        Create trigger A
        On table1 
        For    update 
        as
            If update(STUDENTid)
        Begin
            Update table2
                Set a.studentid=b.studentid
                From table1 as a,table2 as b
                Where a.x=b.x
相關文章
相關標籤/搜索