# 資料庫基本概念 ## 目錄 > :::spoiler 清單 > [TOC] > ::: --- ### 基本觀念 > 常用的基礎格式為csv,以逗點區隔value ### Relational Model (關聯式模型) > 將data以entities(實體)跟attributes(屬性)進行組織 - Entity (實體) > 一個抽象的概念,用於定義並歸納同類物件。 > e.g. 人、建築物 > 通常會轉換為table > 在圖形上通常用方型 - Attributes (屬性) > 實體的特性 > 通常會轉換為fields > record as rows and field as columns > 在圖形上通常用橢圓形 - Relation (關係) > 表達實體之間的意義 > 在圖形上即為實體之間的連接線 ### RDBMS (Relational Database Management System) 關聯式資料庫管理系統 - DB2 (IBM) - SQL server (Microsoft) - MySQL (Oracle) > 最大宗的開源資料庫,但相對不安全 - PostgreSQL > 開源且適合商用的資料庫 > 不同DB之間的語法會有差異,但SQL的語法基本相容 ### ACID特性 - Atomicity 原子性 > 要求交易全部完成或全部取消,確保不可停滯在中間某個環節 - Consistency 一致性 > 資料庫在交易前後均保持一致性 - Isolation 隔離性 > 多個並發交易之間互不干擾 - Durability 持久性 > 交易提交後,對數據庫中數據的修改是永久性的 > 基於ACID原則,以確保交易正確可靠 ### Database特性 - logical data structure (邏輯資料模型) > 資料以實體儲存,因此需要有載體運作才能存取 - Partitioning (可切割) > 資料的存儲是可分離與組合的 - Caching (快取) > 支援記憶體快取 - Data Dictionary (資料字典) > 存在內部表格和視圖 - Backup and recovery (備份與還原) > 確保在系統故障時的資料恢復救援 - Clustering (集群) > 提供高可用性,使系統在集群中一個或多個服務器故障時仍能不間斷地運行 ### 邏輯與實體單元  - Schma (綱要) > 描述資料庫架構規劃 - Tablespace (資料表空間) > 基於硬碟分配,可無限擴展 主要類型有 - permanent (永久) > User不應存取SYSTEM的tablespace > SYSAUX不應有任何User區段(segments),僅供應用程式使用 - undo (撤回) - 一個DB可以有多個undo tablespace,但同一時間只能有一個undo tablespace被啟用 - 用於撤回操作,同時為DML語句的choose語句提供閱讀一致性,這些choose語句在同一個或一組table上運行 - "Snapshot too old" 為嘗試查詢數據時,由於undo中沒有足夠的資訊來構建所需的Snapshot(快照) - temporary (臨時) - 可以將多個temporary tablespace組成群組  - DB中可以有多個Temporary tablespace在線上並啟用 - Temporary tablespace group必須包含至少一個Temporary tablespace - Temporary tablespace group能為單一User的多個sessions(對話)提供不同臨時表空間 - Segment > 由一個或多個extent組成 - Extent > 由data block組成的連續資料,會保留部分空間紀錄儲存位置連結資訊 - OS block > 系統分區 ### 邏輯結構  ### Bigfile tablespace > 單一大檔案設定 ### Optimal Flexible Architecture (OFA) 預設tablespace  ### Segment or datafile segregation 區分存放不同tablespaces的原則 > 大小差異較大的資料 > 不同類型的資料 > 不同應用程式 > 使用頻率差異較大的資料 > 靜態與動態的資料 ### 資料庫空間配置的思考重點 - Datafiles 放置位置是最大影響因素 - 最大化 I/O trhoughput - 最大化整體資料庫效能 ### 實體關聯模型(Entity-Relationship Model) - Entity (實體) - Attribute (屬性) - Key and Primary Key (PK) - Relationship #### Table Layout (資料表佈局)   > 建立好layout後,創建Table > Entity -> Table > Attributes -> Columns > Keys -> value ### Normalization (正規化) > 刪除重複和不一致的相依屬性,避於冗餘,提升關聯式資料庫的管理性 #### 正規化架構 3NF (Third Normal Form) > 正規化的規則,稱為正規形式 (Normal Form) - 第一正規形式 (1NF) > 處理單一table出現重複資料 - 刪除各個資料表中的重複資料群,也就是不要在一個資料表中使用多個欄位儲存類似的資料。 - 為每一組關聯的資料建立不同的資料表。 - 使用主索引鍵 (Key) 識別每一組關聯的資料。 - 第二正規形式 (2NF) > 處理多個table用到同樣資料 - 為可套用於多筆記錄的多組值,建立不同的資料表。 - 使用外部索引鍵,讓這些資料表產生關聯。 - 記錄不應依賴資料表主索引鍵之外的索引鍵,但是必要時可使用複合索引鍵。 - 第三正規形式 (3NF) > - 刪除不依賴索引鍵的欄位。 > 記錄中的值如果不是該筆記錄之索引鍵的一部分,就不屬於資料表。 一般而言,只要欄位群組的內容可以套用至資料表中一筆以上的記錄時,您就可以考慮將這些欄位放置在不同的資料表中 ### Table - A table is the method used to store user data - We have very little control on how data is stored in a regular table - Rows may stored in any order, depending on the activity on the table #### Naming Conventions - Must begin with a letter - Can be 1-30 characters long - Must contain only A-Z, a-z, 0-9, _, $, and # - Must not duplicate the name of another object owned by the same user - Must not be an Oracle Server reserved word ### 名詞定義 - Instance (實例) > 獨立可執行的個體 --- ###### tags: `Database`
×
Sign in
Email
Password
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