資料庫管理 (Database Management)

avatar-img
發佈於軟體開發
更新 發佈閱讀 8 分鐘

1. 什麼是資料庫 (What is a Database)? 🤔

  • 定義: 資料庫是有組織地儲存和管理資料的集合。這些資料通常以結構化的方式儲存,便於檢索、更新和分析。
  • 例子: 學校的學生名冊、公司的客戶資料、產品庫存清單、銀行交易紀錄、網站的使用者資訊等等,都可以儲存在資料庫中。

2. 資料庫管理系統 (Database Management System, DBMS) 🧑‍💻

  • 定義: DBMS 是一種軟體,用於創建、管理和維護資料庫。它允許使用者和應用程式以安全、高效的方式與資料庫互動,而無需直接操作底層的檔案系統。
  • 功能:
    • 資料定義 (Data Definition): 定義資料的結構、型別、約束等。
    • 資料操作 (Data Manipulation): 增、刪、改、查資料。
    • 資料安全與保護 (Data Security & Protection): 實施存取控制、資料加密、備份與恢復等。
    • 資料完整性 (Data Integrity): 確保資料的準確性和一致性。
    • 多使用者存取控制 (Multi-user Access Control): 管理多個使用者同時存取資料庫。

3. 資料庫的類型 (Types of Databases) 🧩

市面上有很多種資料庫,它們有不同的結構和適用情境:

  • 關聯式資料庫 (Relational Database) 🌐 (RDBMS):
    • 概念: 這是目前最常見的資料庫類型。它將資料儲存在一個或多個表格 (Table) 中,每個表格由行 (Row)列 (Column) 組成。表格之間透過關聯 (Relationship) 連結,就像透過共同的欄位(例如學生 ID)來連接學生資訊表和選課表。
    • 比喻: 就像 Excel 表格一樣,每個表格有固定的欄位,表格之間可以互相參照。
    • 特性:
      • 結構化 (Structured): 資料儲存嚴格按照預定義的結構(表格、欄位)。
      • ACID 特性: 原子性 (Atomicity): 交易要嘛全部成功,要嘛全部失敗,沒有中間狀態。 一致性 (Consistency): 交易完成後,資料庫從一個有效狀態轉移到另一個有效狀態。 隔離性 (Isolation): 多個交易同時進行時,彼此不影響,就像單獨執行一樣。 持久性 (Durability): 交易一旦提交,其變更就是永久的,即使系統故障也不會丟失。
      • 使用 SQL 語言操作。
    • 常見的關聯式資料庫系統: MySQLPostgreSQLMicrosoft SQL ServerOracle Database
    • 適用情境: 銀行交易、電商訂單、使用者管理等需要高度資料一致性和結構化的應用。
  • 非關聯式資料庫 (Non-Relational Database) 或 NoSQL 資料庫 🚫💾:
    • 概念: 相對於關聯式資料庫,NoSQL 資料庫不使用表格、行、列的結構,而是以更靈活的方式儲存資料。它們為特定類型應用程式的資料儲存和檢索而設計。
    • 比喻: 就像一個大倉庫,你可以把東西裝在各種不同形狀的箱子裡 (文件、鍵值對、圖形),而不是非得放進固定的格子裡。
    • 常見類型:
      • 鍵值資料庫 (Key-Value Database): 最簡單的 NoSQL,每個資料都是一個鍵值對。例如 Redis (常用於快取)、DynamoDB (AWS)。
      • 文件資料庫 (Document Database): 資料以文件形式儲存(通常是 JSON 或 BSON 格式)。適合儲存非結構化或半結構化資料。例如 MongoDB。
      • 列式資料庫 (Column-Family Database): 以列而不是行的方式儲存資料。適合處理大量分散式資料。例如 Cassandra。
      • 圖形資料庫 (Graph Database): 用於儲存節點和邊的關係,擅長處理複雜的關係網路。例如 Neo4j (常用於社群網路、推薦系統)。
    • 特性:
      • 彈性結構 (Flexible Schema): 資料模型不嚴格固定,容易應對資料結構的變化。
      • 高擴展性 (High Scalability): 容易水平擴展以處理大量資料和高併發。
      • 效能高 (High Performance): 對於某些特定類型資料的存取非常快速。
      • 最終一致性 (Eventual Consistency): 在分散式環境下,資料可能在一段時間後才達到一致性,而不是立即一致。
    • 適用情境: 社群媒體、物聯網、大數據分析、即時應用程式、內容管理系統等需要高擴展性和靈活資料結構的應用。

4. SQL (Structured Query Language) 💬

  • 定義: SQL 是標準的查詢語言,用於與關聯式資料庫進行通訊和管理資料。它是資料庫專業人員和開發者必備的技能。
  • 基本操作:
    • 查詢資料 (SELECT): 從資料庫中讀取資料。
      • SELECT * FROM Customers; (查詢 Customers 表格中的所有資料)
      • SELECT ProductName, Price FROM Products WHERE Category = 'Electronics'; (查詢類別為 'Electronics' 的產品名稱和價格)
    • 插入資料 (INSERT): 將新資料添加到表格中。
      • INSERT INTO Customers (CustomerID, Name, Email) VALUES (1, '張三', 'zhangsan@example.com');
    • 更新資料 (UPDATE): 修改表格中現有的資料。
      • UPDATE Products SET Price = 1000 WHERE ProductID = 5;
    • 刪除資料 (DELETE): 從表格中移除資料。
      • DELETE FROM Customers WHERE CustomerID = 1;
    • 建立表格 (CREATE TABLE): 建立新的資料庫表格。
    • 修改表格 (ALTER TABLE): 修改表格的結構。
    • 刪除表格 (DROP TABLE): 刪除整個表格。

5. 資料庫設計 (Database Design) 📐

  • 正規化 (Normalization): 是一種資料庫設計原則,旨在減少資料冗餘(重複資料)和提高資料完整性。透過將大型表格拆分為多個較小的、相關的表格,並定義表格之間的關係。這有助於避免更新異常、刪除異常和插入異常。
  • 實體關係圖 (Entity-Relationship Diagram, ERD): 一種視覺化工具,用於表示資料庫中實體(例如客戶、產品)及其之間的關係。
  • 索引 (Indexing): 為了加速資料庫查詢而創建的一種特殊資料結構。就像書的目錄或字典的字母索引一樣,可以幫助資料庫系統快速找到所需的資料,而無需掃描整個表格。
留言
avatar-img
留言分享你的想法!
avatar-img
hello maple
4會員
81內容數
各種工作及生活中的小小紀錄
hello maple的其他內容
2025/06/03
本文介紹8種重要的資安措施,包括防火牆、入侵偵測/防禦系統、防毒軟體、存取控制、加密、安全更新、備份與復原,以及安全意識培訓,並以淺顯易懂的白話比喻說明其功能與重要性,適合對資安概念有初步瞭解或想要進一步學習的讀者。
Thumbnail
2025/06/03
本文介紹8種重要的資安措施,包括防火牆、入侵偵測/防禦系統、防毒軟體、存取控制、加密、安全更新、備份與復原,以及安全意識培訓,並以淺顯易懂的白話比喻說明其功能與重要性,適合對資安概念有初步瞭解或想要進一步學習的讀者。
Thumbnail
2025/06/03
這篇文章深入淺出地介紹七種常見的網路資安威脅,包含惡意軟體、網路釣魚、分散式阻斷服務攻擊、中間人攻擊、SQL 注入、跨站腳本攻擊和社會工程,並以生活化的比喻說明其攻擊原理、行為和例子,有助於讀者瞭解這些網路威脅並提升自身資安意識。
Thumbnail
2025/06/03
這篇文章深入淺出地介紹七種常見的網路資安威脅,包含惡意軟體、網路釣魚、分散式阻斷服務攻擊、中間人攻擊、SQL 注入、跨站腳本攻擊和社會工程,並以生活化的比喻說明其攻擊原理、行為和例子,有助於讀者瞭解這些網路威脅並提升自身資安意識。
Thumbnail
2025/05/27
這篇文章以淺顯易懂的比喻,說明資安的三大要素:機密性、完整性、可用性。透過「私房錢」的例子,幫助讀者理解這些概念的重要性、如何實現以及常見方法。
Thumbnail
2025/05/27
這篇文章以淺顯易懂的比喻,說明資安的三大要素:機密性、完整性、可用性。透過「私房錢」的例子,幫助讀者理解這些概念的重要性、如何實現以及常見方法。
Thumbnail
看更多
你可能也想看
Thumbnail
已經存在在table裡面的那些record做更新。 ※ 語法 UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, … [WHERE
Thumbnail
已經存在在table裡面的那些record做更新。 ※ 語法 UPDATE [LOW_PRIORITY] [IGNORE] table_name SET column_name1 = expr1, column_name2 = expr2, … [WHERE
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
※ 把record加到table有兩種方式: VALUES • SELECT ※ 語法 INSERT INTO VALUES 語法: Record 代表一組值的集合,每個值對應到表格中的一個欄位(column)。 INSERT INTO 語法用來指定要插入資料的表格。 需要提供一個
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
這篇內容,將會講解什麼是資料型態,以及與資料型態相關的知識。包括資料型態的簡介、實數、布林值、 字串、陣列。
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ GROUP BY 用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。 ※ 語法 SELECT column1, column2, ..., aggregate_function(column) FROM
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 語法 SELECT select_list FROM table_name​ ※ 解析順序 From:從哪裡拿? SELECT:要 "拿什麼" 資料? ※ 使用場景: Single column(單一欄位): Multiple column(多個欄位): All colu
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
※ 關聯式資料庫(RDBMS)是什麼? 關聯式資料庫(RDBMS)是一種傳統的資料庫系統,以結構化查詢語言(SQL)為基礎,將資料儲存於預定義的表格中。這些表格包括行和列,彼此之間存在明確的關聯性。 ※ 關聯式資料庫(RDBMS)有兩個重要元素: 關聯(Relational): 關聯式資料庫
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
Thumbnail
本文介紹了如何使用資料樞紐分析的功能來整理所需的資料,並設定圖表的中文字型,最後提供了繪圖的程式碼範例。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News