Data Models & Query Languages

Relational Model vs Document Model

  • Document Model
    • Great for: One-to-Many
    • Weak Support: Many-to-Many, Many-to-One (Application-level Join)
  • Relational Model
    • Great for: One-to-Many
    • Support: Many-to-Many, Many-to-One (Native Join)
  • Graph Model
    • Great for: Many-to-Many
    • Support: One-to-Many, Many-to-One

One to Many

一個常見的例子是「使用者與訂單」之間的關係。 假設您正在設計一個電子商務平台,每個使用者可以有多個訂單,但每個訂單只能屬於一個使用者。

在資料庫中,您可以建立兩個相關聯的表格:「使用者表格」和「訂單表格」。 使用者表格可能包含使用者的詳細資訊,例如使用者ID、姓名、電子郵件等。而訂單表格可能包含訂單的相關資訊,例如訂單ID、使用者ID、訂單日期等。

這裡是一個簡單的示意圖:

使用者表格

使用者ID | 姓名 | 電子郵件
-----------------------
   1   | 張三 | example@example.com
   2   | 李四 | example2@example.com

訂單表格

訂單ID | 使用者ID | 訂單日期
----------------------------
   1  |    1    | 2023-06-01
   2  |    1    | 2023-06-05
   3  |    2    | 2023-06-02
    ... (其他訂單資訊)

在這個例子中,使用者表格中的使用者ID與訂單表格中的使用者ID相關聯,建立了「一對多」的關係。張三(使用者ID為1)有兩個訂單(訂單ID為1和2),而李四(使用者ID為2)只有一個訂單(訂單ID為3)。

這種「一對多」的關係在許多不同的應用中都很常見,例如部門與員工、作者與文章、課程與學生等。它能夠幫助您組織和管理相關聯的資料。

Many to One

「多對一」關係在資料庫設計中也很常見。一個典型的例子是「學生與班級」之間的關係。假設您正在建立一個學校管理系統,其中每個班級可以擁有多個學生,但每個學生只能屬於一個班級。

為了建立這種關係,您可以在資料庫中建立兩個相關聯的表格:「班級表格」和「學生表格」。班級表格可能包含班級的相關資訊,例如班級ID、班級名稱、教室等。而學生表格可能包含學生的詳細資訊,例如學生ID、姓名、生日等,並且有一個欄位來儲存所屬班級的ID。

這裡是一個簡單的示意圖:

班級表格

班級ID | 班級名稱 | 教室
-----------------------
   1   |   一年級 |  A101
   2   |   二年級 |  B203

學生表格

學生ID |  姓名  |    生日    | 班級ID
-----------------------------------
   1   | 張三  | 2005-03-15 |   1
   2   | 李四  | 2006-06-22 |   1
   3   | 王五  | 2005-09-10 |   2
   ...  (其他學生資訊)

在這個例子中,學生表格中的班級ID與班級表格中的班級ID相關聯,建立了「多對一」的關係。一年級(班級ID為1)有兩個學生(學生ID為1和2),而二年級(班級ID為2)有一個學生(學生ID為3)。

「多對一」的關係也可以在其他情境中使用,例如員工與部門、商品與分類等。這種關係能夠幫助您組織和管理資料,並支援各種查詢和分析需求。

Many to Many

「多對多」關係在資料庫設計中也很常見,它表示兩個實體之間可以相互關聯且互相擁有多個對應項目。 一個常見的例子是「學生與課程」之間的關係。一個學生可以選修多個課程,同時一個課程也可以有多個學生。

為了建立這種「多對多」的關係,通常需要使用一個中介表格(稱為關聯表格)來跟踪兩個實體之間的關聯。讓我們以「學生」和「課程」為例來說明。

學生表格

學生ID |  姓名  |    生日    |
-----------------------------
   1   | 張三  | 2005-03-15 |
   2   | 李四  | 2006-06-22 |
   3   | 王五  | 2005-09-10 |
   ... (其他學生資訊)

課程表格

課程ID |  課程名稱  |  授課教師  |
-------------------------------
   1   |   數學   |   張老師  |
    2  |   英文   |   李老師  |
    3  |   物理   |   王老師  |
    ...  (其他課程資訊)

關聯表格(學生與課程之間的關聯)

學生ID | 課程ID |
-----------------
   1   |   1   |
   1   |   2   |
   2   |   2   |
   3   |   1   |
   3   |   3   |
   ... (其他關聯資訊)

在這個例子中,關聯表格用於跟踪學生和課程之間的關聯。張三(學生ID為1)選修了數學(課程ID為1)和英文(課程ID為2);李四(學生ID為2)選修了英文(課程ID為2);王五(學生ID為3)選修了數學(課程ID為1)和物理(課程ID為3)。

這種「多對多」的關係在許多場景中都非常常見,例如學生與課程、文章與標籤、商品與訂單等。 透過關聯表格的使用,您可以輕鬆地追蹤和管理多對多關係的資料。

© Kimi Tsai all right reserved.            Updated : 2023-07-12 09:04:53

results matching ""

    No results matching ""

    results matching ""

      No results matching ""