mohjj mo
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    3
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    ###### tags: `說明` :::danger 筆記內容用於個人學習,大都整理自公開的網路資訊,再加上自己的學習心得 ::: --- [TOC] --- ## ANSI/SPARC 資料庫三層 將 **DBMS** 分成三層 - **外部層**(External level) 外部綱要或稱為使用者視界(View)。負責不同使用者所需要觀看的部分資料,而將資料庫的其他部分隱藏起來。 - **概念層**(Conceptual level) 概念綱要主要是集中在描述整個資料庫的結構,與資料庫管理系統無關,通常會使用一個象徵性的資料模型來描述概念綱要。概念綱要==最常使用實體關聯模型(ER Model)==,利用圖形方法表示,稱為實體關聯圖(ER Diagram),用來聚焦在描述實體、型態、關聯、運算和限制的細節。 - **內部層**(Internal level) 內部綱要是用來描述架構中的有關資料庫實際的儲存與存取路徑的完整資訊。針對所指定的資料庫管理系統建立實體資料模型,可以顯示資料是如何實作及儲存在資料庫。關聯式資料庫的實體資料模型是建立表格、關聯和定義索引。 ![](https://i.imgur.com/jlaYieo.png) :::info 如上圖所示 **概念綱要合併不同的外部鋼要而成的單一、完整的企業資料** ::: --- ## DDL,DML,DCL 結構化查詢語言(SQL)是標準的資料庫語言,廣泛使用於關聯式資料庫,包含了下列三個類型 - **資料定義語言(DDL)** Data Definition Language 用來定義資料庫、資料表、檢視表、索引、預存程序、觸發程序、函數等資料庫物件。可以用來建立、更新、刪除table,schema,domain,index,view 1. CREATE 建立資料庫的物件 2. DROP 刪除資料庫的物件 3. ALTER 變更資料庫的物件 - **資料處理語言(DML)** Data Manipulation Language 用來處理資料表裡的資料。 1. INSERT 新增資料到資料表中 2. DELETE 刪除資料表中的資料 3. UPDATE 更改資料表中的資料 4. SELECT 查詢 - **資料控制語言(DCL)** Data Control Language 用來控制資料表、檢視表之存取權限,提供資料庫的安全性。 1. GRANT 賦予使用者使用權限 2. REVOKE 取消使用者的使用權限 3. COMMIT 完成交易作業 4. ROLLBACK 將已變動的資料回復到交易開始的狀態 5. DENY ___ # 資料庫系統 ## RAID(Redundant Array of Independent Disks) **容錯式磁碟陣列** :::info :memo: ==RAID 0==: (striping) 分散儲存,速度最快 ==RAID 1==: (Mirrored) 鏡像,安全性最好 ==RAID 5==: (block-level striping with distributed parity) 儲存效能、資料安全和儲存成本兼顧的儲存解決方案 ::: RAID 1 (Mirrored) 容錯式磁碟陣列(RAID, Redundant Array of Independent Disks),舊稱容錯式廉價磁碟陣列(Redundant Array of Inexpensive Disks),簡稱磁碟陣列。其基本思想就是把多個相對便宜的硬碟組合起來,成為一個硬碟陣列組,使效能達到甚至超過一個價格昂貴、容量巨大的硬碟。根據選擇的版本不同,RAID比單顆硬碟有以下一個或多個方面的好處:增強資料整合度,增強容錯功能,增加處理量或容量。另外,磁碟陣列對於電腦來說,看起來就像一個單獨的硬碟或邏輯儲存單元。分為RAID-0,RAID-1,RAID-5,RAID-6,RAID-7,RAID-01,RAID-10,RAID-50,RAID-60。 RAID 0 RAID 0 RAID 0亦稱為帶區集。它將兩個以上的磁碟並聯起來,成為一個大容量的磁碟。在存放資料時,分段後分散儲存在這些磁碟中,因為讀寫時都可以並列處理,所以在所有的級別中,RAID 0的速度是最快的。但是RAID 0既沒有冗餘功能,也不具備容錯能力,如果一個磁碟(物理)損壞,所有資料都會遺失,危險程度與JBOD相當。 ![](https://i.imgur.com/tW8DDox.png) RAID 1 RAID 1 兩組以上的N個磁碟相互作鏡像,在一些多執行緒作業系統中能有很好的讀取速度,理論上讀取速度等於硬碟數量的倍數,與RAID 0相同。另外寫入速度有微小的降低。只要一個磁碟正常即可維持運作,可靠性最高。其原理為在主硬碟上存放資料的同時也在鏡像硬碟上寫一樣的資料。當主硬碟(物理)損壞時,鏡像硬碟則代替主硬碟的工作。因為有鏡像硬碟做資料備份,所以RAID 1的資料安全性在所有的RAID級別上來說是最好的。但無論用多少磁碟做RAID 1,僅算一個磁碟的容量,是所有RAID中磁碟利用率最低的一個級別。 ![](https://i.imgur.com/aUvies9.png) RAID 4 RAID 4 它與RAID 3不同的是它在分割時是以區段為單位分別存在硬碟中,但每次的資料存取都必須從同位元檢查的那個硬碟中取出對應的同位元資料進行核對,由於過於頻繁的使用,所以對硬碟的損耗可能會提高。(塊交織技術,Block interleaving) ![](https://i.imgur.com/YpfxTWt.png) RAID 5 RAID 5 RAID Level 5是一種儲存效能、資料安全和儲存成本兼顧的儲存解決方案。它使用的是Disk Striping(硬碟分割)技術。 RAID 5至少需要三個硬碟,RAID 5不是對儲存的資料進行備份,而是把資料和相對應的奇偶校驗資訊儲存到組成RAID5的各個磁碟上,並且奇偶校驗資訊和相對應的資料分別儲存於不同的磁碟上。當RAID5的一個磁碟資料發生損壞後,可以利用剩下的資料和相應的奇偶校驗資訊去恢復被損壞的資料。RAID 5可以理解為是RAID 0和RAID 1的折衷方案。RAID 5可以為系統提供資料安全保障,但保障程度要比鏡像低而磁碟空間利用率要比鏡像高。RAID 5具有和RAID 0相近似的資料讀取速度,只是因為多了一個奇偶校驗資訊,寫入資料的速度相對單獨寫入一塊硬碟的速度略慢,若使用「回寫快取」可以讓效能改善不少。同時由於多個資料對應一個奇偶校驗資訊,RAID 5的磁碟空間利用率要比RAID 1高,儲存成本相對較便宜。 ![](https://i.imgur.com/4UM42wi.png) ___ ## DMA(Direct Memory Access,DMA) **直接記憶體存取** 直接記憶體存取(Direct Memory Access,DMA)是電腦科學中的一種記憶體存取技術。它允許某些電腦內部的硬體子系統(電腦外設),可以獨立地直接讀寫系統記憶體,而不需中央處理器(CPU)介入處理 。在同等程度的處理器負擔下,DMA是一種快速的資料傳送方式。很多硬體的系統會使用DMA,包含硬碟控制器、繪圖顯示卡、網路卡和音效卡。 DMA 特徵 > `(1)`需要==特殊晶片==來處理輸出/輸入[color=red] > > 除了與硬體互動相關外,DMA也可為昂貴的記憶體耗費減負。比如大型的拷貝行為或scatter-gather操作,從中央處理器到專用的DMA引擎。Intel的高階伺服器包含這種引擎,它被稱為I/O加速技術(IOAT)[color=blue] > > > `(2)`再使用記憶體週期,DMA ==比 CPU 優先權較高== > > DMA的優先權較高, 會從CPU竊取記憶體週期(週期竊取 cycle-stealing)[color=blue] > > > `(3)`DMA 可以直接跟電腦周邊硬體溝通,==不需要經過 CPU== > `(4)`不屬於通道式 I/O > > ![](https://i.imgur.com/RNd7LgB.png)[color=blue] ___ ## 正規化(Normalization) ### 資料庫正規化 :::info | 正規化主要階段 |PDNTSPA | | :--------: | :-------- | |==1NF==| 除去重複群 | |==2NF==| 除去部分相依 | |==3NF==| 除去遞移相依 | |==BCNF==| 除去功能相依所造成的異常 | ::: 何謂正規化(Normalization)?就是結構化分析與設計中,建構 「資料模式」所運用的一個技術,其目的是為了==降低資料的「重覆性」== 與 ==避免「更新異常」== 的情況發生。 因此,就必須將整個資料表中重複性的資料剔除,否則在關聯表中 會造成新增異常、刪除異常、修改異常的狀況發生。 :::info 一般而言,正規化的精神就是讓資料庫中重複的欄位資料減到最 少,並且能快速的找到資料,以提高關聯性資料庫的效能。 ::: :::success 【目的】 1.降低資料重複性(Data Redundancy)。 2.避免資料更新異常(Anomalies)。 ::: ![](https://i.imgur.com/dl6bpjM.png) ![](https://i.imgur.com/GFMC2Qz.png) :::danger 正規化是==循序漸進的過程==,亦即資料表必須滿足第一正規化的條件之後,才能進行第二正規化。換言之,第二正規化必須建立在符合第一正規化的資料表上,依此類推。 ::: ![](https://i.imgur.com/RpTrj80.png) ___ ## 關聯式資料庫模型的資料結構 ### 關聯式資料庫模型的完整性限制條件 關聯式資料庫模型的完整性限制條件(Integrity Constraints)是資料庫設計的一部分,其目的是檢查資料庫儲存的資料和保障資料的正確性,不但可以防止授權使用者將不合法的資料存入資料庫,還能夠避免關聯表之間的資料不一致。 :::info :memo: :mega: > red K [color=red] > > 紅 K ![](https://i.imgur.com/KtOpp9l.png) [name=mohjj][time=2019 ,02 ,23][color=blue] | |red K |說明| | :--------: | :-------- |:-------- | |==**R**==| Reference Integrity| 所有外來鍵都必須能夠參考到另一個關聯表的主鍵值 |==**E**==| Entry Integrity | 關聯表的主鍵不可以是空值。 |==**D**==| Domain Constraints | 關聯表的屬性值一定是屬於定義域的單元值。 |==**K**==| Key Constraints | 關聯表一定擁有一個唯一和最小的主鍵(Primary Key) ### 違反 Reference Integrity 實際說明 ![](https://i.imgur.com/eimvR4H.png) ::: ![](https://i.imgur.com/NbNPCkZ.png) ![](https://i.imgur.com/UyaeTyQ.png) 資料依照一定的結構,存放在資料庫管理系統建立的檔案中,稱為資料庫,資料庫以資料表構成,每張資料表則由許多筆記錄所組成,每筆記錄又以許多欄位組合而成,每個欄位則存放著一筆資料。資料庫中的每個欄位,皆只能存放一筆資料,這些資料依循著一定的結構標準記錄各種訊息,例如文字、數字或日期,在資料表設計允許下,資料也可能會出現任何資訊都沒有的空值(Null)。 在部分關聯式資料庫結構中,則是將記錄定義為資料表中的縱向資料(資料行),欄位則是指表中的橫向資料(資料列)。 在關聯式資料表中,將每個資料表視為一個實體,每個實體則有屬性描述之,而這些屬性就稱為鍵值。鍵值依照功能和用途,有不同名稱:資料表內用來識別記錄及提供索引的鍵值,稱為主鍵;不同於主鍵,但也具備資料索引功能的稱為次要鍵;以及資料表中,引用其它表單內資料的外來鍵等。每張資料表不見得具有外來鍵或次要鍵,但一定具備一組主鍵。此外,資料表內的主鍵,可能不只用單一欄位記錄,也有可能是兩個欄位以上所組成的,這種主鍵稱為複合式主鍵。 ### ==**Metadata**== 元資料 元資料在英文的解釋,是指「介紹資料」的資料(Data about data)。在資料庫系統的領域中,是用來定義資料庫結構的資料。元資料的內容主要是敘述資料庫屬性的資訊。這些資訊描述了資料庫中,儲存資料的內容及特色,其中包含了儲存資料的實體路徑。 元資料的功能類似資料庫索引目錄,讓資料庫管理系統得以存取並運用資料庫內的資料。 :::danger Metadata 不包含資料內容 ::: ### ==**Table**== 資料表 資料表顧名思義,就是存放資料的表單,是由多筆記錄匯集而成。每個資料表皆具有一個表單名稱,在同一個資料庫的資料表,它的表單名稱皆不得重複。資料表的結構概念類似一般表格,具有行與列的特性,通常資料列的欄位數是固定的,並依照資料記錄多寡,而有不固定的行高。 在關聯式資料庫的定義中,每個資料表分別代表一個實體,例如員工這個實體,則可以將它轉換成員工資料表。 ### ==**Record**== 記錄 記錄是由一群有關聯性的欄位所集合而成。每一筆記錄,在資料表中代表著一列欄位,這些欄位存放的資料,在彼此之間都有一定的關聯。在關聯式資料庫中,每張資料表的資料列,則可視為該實體的屬性。例如員工資料表內,會記錄每位員工的資料,這些資料就是用來描述每位員工的屬性。而這些資料彼此間的關聯,在於每筆記錄的資料,皆具有一定的共通性。 ### ==**Field**== 欄位 資料庫中的欄位,就是存放資料的空間,類似微軟Excel中的儲存格。每一個欄位空間只能存放一筆資料。在設計資料表時,要先定義每個欄位的資料長度與型別為何,例如文字、數字、日期或是布林值。 部分的關聯式資料庫則將Field界定為與Column同義,因此欄位也可定義為資料表的縱向資料,而不同於上述的單一資料儲存格。 ### ==**Data**== 資料 資料在資料庫與系統分析等IT領域中,定義為原始的事實(Raw Facts),也就是單純記載一件事情的狀態,例如主要以字串或是數字的方式記載這些內容。例如員工資料表中的員工性別,就是描述每位員工性別狀態的實際情況。資料有可能是經過運算處理過的結果,例如員工的年資,並不是固定的值,而是計算到職日期與系統日期而得到的。資料也有可能不存在,並以空值的方式呈現。 ### ==**KEY**== 關聯式資料庫模型的鍵是一個重要觀念,關聯表的「鍵」(Keys)是指關聯表綱要中 ==**單一屬性或一組屬性的集合**== 。 ![](https://i.imgur.com/279S7tu.png) ### ==**SuperKey**== 超級索引鍵 在每個資料表中,除了有主鍵、次要鍵做為資料庫的資料索引外,也可以利用兩個以上的欄位做組合,而產生一組可以用作資料識別的新欄位,這種組合出來的欄位,就是超級索引鍵。以員工資料表為例,若是員工姓名這行資料會重複,則可以搭配員工編號,讓員工編號與員工姓名兩欄位結合,讓「員工編號+員工姓名」這組新的值鍵,成為超級索引鍵,提供資料索引的依據。 * 超鍵是關聯表綱要的單一屬性或一組屬性的集合,超鍵需要滿足唯一性: :::info 唯一性(Uniqueness):在關聯表絕不會有 2 個值組擁有相同的超鍵的值。 ::: * 換句話說,只需透過超鍵的識別,就可以在關聯表存取指定的值組。 ### ==**Candidate Key**== 候選鍵 在每一個關聯表至少擁有一個候選鍵,候選鍵是一個超鍵,不只滿足超鍵的唯一性,還 ==**需要滿足最小性**== :::info 最小性(Minimality):最小屬性數的超鍵,在超鍵中沒有一個屬性可以刪除,否則將違反唯一性。 ::: 關聯表的候選鍵需要同時滿足唯一性和最小性,簡單的說,候選鍵是最小屬性數的超鍵 :::warning 單一屬性的超鍵一定是候選鍵 ::: ### ==**Primary Key**== 主鍵 主鍵(Primary Key, PK)是關聯表各 ==**候選鍵中的其中之一**== ,而且只有一個。 是用來識別資料表的唯一值。每個主鍵在資料表中,都是獨一無二的。資料庫管理系統可以藉由這些欄位,識別資料表內的每一筆記錄,並提供資料索引。主鍵可以直接使用一組不重複的資料,或是由系統自動產生,像員工資料表的員工編號,是用系統自動產生的流水號。由於主鍵是提供資料庫索引的重要欄位,故設計資料表時要慎選主鍵,避免造成資料庫系統產生資料錯誤等嚴重問題。 **原則** * 絕對不是空值(Not Null):候選鍵的屬性值不能是空值,如果是複合鍵,所有屬性都保證不會是空值。 * 永遠不會改變(Never Change):候選鍵的屬性值永遠不會改變。 * 本身不是識別值(Non‐identifying Value):候選鍵的屬性值本身沒有其他意義。 ### ==**Alternate Keys**== 替代鍵 在候選鍵中**不是主鍵的其他候選鍵**稱為替代鍵,因為這些是可以用來替代主鍵的侯選鍵。 ![](https://i.imgur.com/KKMv2Op.png) ### ==**Foreign Key**== 外來鍵 這個欄位會存放其他資料表的主鍵,**主要用來確定資料的參考完整性**,只有經過確認的資料才能輸入,避免資料在建立時,因為其他資料不完整而導致資料完整性有缺陷。外來鍵的資料來源也可以是自己本身的主鍵,例如員工資料表裡面的主管編號,這就是一個外來鍵,裡面的資料就是參考本身的員工編號。當輸入員工主管的編號時,會去尋找該主鍵是否存在,確保資料完整性。 **外來鍵(特性)** * 外來鍵一定參考其他關聯表的主鍵(或候選鍵),這是兩個關聯表間的連結。 * 外來鍵在關聯表內不一定是主鍵。 * 外來鍵和參考的主鍵屬於相同定義域,不過 ==**屬性名稱可以不同**==。 * 外來鍵 ==**可以是空值 NULL**==。 * 外來鍵可以參考同一個關聯表的主鍵。 ### ==**Secondary Key**== 次要鍵 主要的功能是提供資料索引。資料庫系統中,除了主鍵這個唯一的識別值,可以用做索引外,也可以設定其他欄位用作資料索引,這類的鍵值並不是主鍵,但因為資料內容並不會重複,所以也可作為資料索引,這就是次要鍵。 在員工資料表中,員工姓名、到職日期等欄位都沒有重複,就可以做為次要鍵,提供不同於主鍵的資料索引。 ### 關聯式代數運算子 在關聯式代數運算子中屬於特殊關聯式運算子和其數學符號,如下所示: - 選取(**S**election):δ 在指定條件後,可以從關聯表選出指定條件的值組。**~(where)~** - 投影(**P**rojection):π 在關聯表只取出所需屬性的集合。**~(select)~** - 合併(Join): ![](https://i.imgur.com/iLcuxML.png) - 除法(Division):÷ ![](https://i.imgur.com/TRPC1h2.png) ![](https://i.imgur.com/NhhCaVK.png) ___ ## E-R MODEL 的二元關係型態 如果一個關係是有關兩個實體,則描述這樣關係的型態就稱為二元關係型態 二元關係型態的結構限制包括兩部份:==基數比==和==參與度== :::info 基數比用來表示一個實體最多可以跟幾個實體發生此類關係 > [color=red] > > 1:1 表示左邊的一個實體最多與右邊的一個實體發生此類關係,同時右邊的一個實體最多也只能跟左邊的一個實體發生此類關係 ![](https://i.imgur.com/4Gbnx5U.png) [color=blue] > > 1:N 表示左邊的一個實體最多與可跟右邊的多個實體發生此類關係,但右邊的一個實體最多也只能跟左邊的一個實體發生此類關係 ![](https://i.imgur.com/sbouaTs.png) [color=blue] > > M:N 表示左邊的一個實體最多與可跟右邊的多個實體發生此類關係,同時右邊的一個實體最多也能跟左邊的多個實體發生此類關係 ![](https://i.imgur.com/SJfzWo9.png) [color=blue] ::: :::success 參與度是衡量一個實體型態裡的每一實體是否至少需參與一個關係,若是,稱為 ***完全參與(以雙線表示)*** ,否則稱為 ***部分參與(以單線表示)*** ![](https://i.imgur.com/WPYv2Zi.png) ::: ___ ## OLAP,OLTP ### OLAP(On-Line Analytical Processing) 線上分析處理(On-Line Analytical Processing, OLAP)為一用以操作儲存在==靜態資料倉儲==內廣泛資源的軟體技術。其可透過快速的、一致的、交談式的界面對同一資料提供各種不同的呈現方式,供不同層面的使用者如分析師、經理及高階主管等使用,使其具備透析資料反應出來的資訊的能力。 OLAP有三項要件 * 1.動態多維度分析 * 2.可執行複雜計算 * 3.有時間導向處理能力 OLAP可操作於主從架構下的多使用者環境,且無論資料庫的大小及複雜度如何,均能提供一致的快速反應。透過OLAP伺服器,OLAP可利用過去的歷資料以及預測資料,提供各式各樣的假設性資料模式("what-if" data model),並可透過比較的方式,結合每個人的個人觀點,幫助使用者綜合企業資訊加以分析。 ### OLTP(On-Line Transaction Processing) 線上交易處理(On-Line Transaction Processing, OLTP)的特色是能夠處理大量的例行性交易資料,並經過應用程式的特定處理==將資訊存放於資料庫==,可以被即時地存取增刪。對管理活動層級而言,其所支援的對象屬於最基層的一般事務性與作業性交易。 線上交易所搜集到的歷史資料,可定期地以批次作業方式彙製成週期性報表如日報、週報、旬報、月報、季報及年報等,供中階或高階主管參考。一般而言,製作週期性報表常須掃瞄整個資料庫,消耗大量主機資源,若於線上系統執行這一類作業,對日常作業系統的影響甚鉅,故往往利用夜間或線上交易負荷較輕的時段執行。週期性彙總報表可以提供"who?"及"what?"等戰術性的資訊,例如:「上個月某產品的銷售量如何? ### OLAP 與 OLTP 相異之處 OLTP所搜集到的資料可以整合成資料倉儲(Data Warehouse)。資料倉儲通常使用關連式資料庫(Relational Database, RDB),OLAP則將「加工」後的資料組合成多維度的面向以提供策略性資訊的快速使用及分析。 * 資料與資訊的差異:OLTP只處理線上交易資料,資料倉儲將之儲存並加以管理。OLAP則將資料倉儲之料庫轉換成策略性資訊。隨著使用OLAP經驗的累積,決策者除了擁有使用資料的能力之外,同時會累積使用資訊甚或使用知識的能力。對OLAP而言,歷史資料(Historical data)係用以推斷未來,而組合資料(aggregate data)係用以估計所輸入的資料,除此之外,OLAP亦可執行資源配置及趨勢分析等複雜計算。 * 功能的差異:除了可以回答"who?"及"what?"問題之外,並可提供問題與假設("what if?" and "why?")的解答,資料倉儲則只能回答前兩者。OLAP可以提供未來行動的決策參考,為此,其所需的計算遠比單純的加總來得複雜。例如"若原料成本上漲5%而運費下降2%,對該項產品會有何種影響?售價應該如何調整才能適當反應成本的變化?"此外,可提供即時(Just-in-time, JIT)資訊為OLAP的另一項特點。 評量標準的差異:通常OLTP係以搜集及管理資料的能力來評量其好壞,而OLAP則以自原始資料創造資訊的能力來評量。 ___ ## 資料庫交易 ### 資料庫交易特性 :::info :memo: :mega: > Care AIDs [color=red] > > 性交易要小心 AIDS ( ==**C**== are ==**AID**== s) [name=mohjj][time=2019 ,02 ,23][color=blue] | |Care AIDs |說明| | :--------: | :-------- |:-------- | |==**C**==| Consistency| 交易完成時,全部的資料必須維持一致性的狀態 |==**A**==| Atomicity | 交易必須是不可部份完成(Atomic) 的工作 |==**I**==| Isolation | 並行的交易所做的修改,必須與其他任何並行的交易所做的修改隔離 |==**D**==| Durability | 交易完成之後,其作用便永遠存在於系統之中 ::: ___ ## 資料庫系統開發的生命周期 ### 資料庫設計的主要階段(Main Phases) ![](https://i.imgur.com/2gVlGse.png) 資料庫設計方法論 * ==**概念資料庫設計(Conceptual Database Design)**==: 將資料庫需求轉換成概念資料模型的過程,並沒有針對特定資料庫管理系統或資料庫模型。 * ==**邏輯資料庫設計(Logical Database Design)**==: 將概念資料模型轉換成邏輯資料模型的過程,邏輯資料庫設計是針對特定的資料庫模型來建立邏輯資料模型。 * ==**實體資料庫設計(Physical Database Design)**==: 將邏輯資料模型轉換成關聯式資料庫管理系統的一系列SQL指令敘述。 ___ ## IPSec ### 網際網路安全協定(英語:Internet Protocol Security,縮寫:IPsec) 是一個協定套件,透過對IP協定的封包進行==加密和認證==來保護IP協定的網路傳輸協定族(一些相互關聯的協定的集合)。 ___ ## TLS,SSL ### 傳輸層安全性協定(Transport Layer Security) ### 安全通訊協定(Secure Sockets Layer) TLS 及其前身 SSL 是一種安全協定,目的是為網際網路通訊提供安全及資料完整性保障。 :::info 網景公司(Netscape)在1994年推出首版網頁瀏覽器,網景領航員時,推出==HTTPS協定,以SSL進行加密==,這是SSL的起源。 ::: IETF將SSL進行標準化,1999年公布第一版TLS標準檔案。隨後又公布RFC 5246 (2008年8月)與 RFC 6176 (2011年3月)。在瀏覽器、電子郵件、即時通訊、VoIP、網路傳真等應用程式中,廣泛支援這個協定。主要的網站,如Google、Facebook等也以這個協定來建立安全連線,傳送資料。目前已成為網際網路上保密通訊的工業標準。 SSL包含記錄層(Record Layer)和傳輸層,記錄層協定確定傳輸層資料的封裝格式。傳輸層安全協定使用X.509認證,之後利用==非對稱加密演算==來對通訊方做身分認證,之後交換對稱金鑰作為會談金鑰(Session key)。這個會談金鑰是用來將通訊兩方交換的資料做加密,保證兩個應用間通訊的保密性和可靠性,使客戶與伺服器應用之間的通訊不被攻擊者竊聽。 ___ ## 阿姆斯壯定理 假設 A、B、C、D 為關聯表 R 的屬性中的四個任意子集合(Subset),而且 AB 表示 A 聯集 B。則阿姆斯壯定理如下: :::info 基本定理 - 反身性(Reflexivity):若 B 是 A 的子集合,則 A→B。 - ==擴增性(Augmentation)==:若 A→B,則 AC→BC。 - ==遞移性(Transitivity)==:若 A→B,且 B→C 則 A→C。 ::: :::warning 衍生定理 - ==分解性(Decomposition)==:若 A→BC 則 A→B 且 A→C。 - 聯合性(Union):若 A→B 且 A→C 則 A→BC。 - 虛擬遞移性(Pseudotransitive):若 A→B 且 BC→D 則 AC→D ::: ___ ___ ___ ___

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully