External Level 👉
Conceptual Level/ Logical Level 👉
Internal Level 👉
graph TD
%% 外部層(External Level)
A[View 1] <--> B[Conceptual Data Model]
C[View 2] <--> B
D[View 3] <--> B
%% 概念層(Conceptual Level / Logical Level)
B --> E[Logical Data Model]
%% 內部層(Internal Level)
E --> F[Physical Data Model]
🔖請參考課本 p.3-2
🔖請閱讀課本 pp. 3-3 至 3-5
erDiagram
CUSTOMERS ||--o{ ORDERS : "1:N"
ORDERS }o--|| PRODUCTS : "N:M"
CUSTOMERS {
INT CustomerID
VARCHAR Name
VARCHAR Email
VARCHAR Phone
TEXT Address
}
ORDERS {
INT OrderID
INT CustomerID
DATE OrderDate
DECIMAL TotalAmount
VARCHAR PaymentStatus
INT ProductID
INT Quantity
}
PRODUCTS {
INT ProductID
VARCHAR Name
VARCHAR Category
DECIMAL Price
INT StockQuantity
}
| 實體(Entity) | 屬性(Attributes) | 關係(Relationships) |
|---|---|---|
| Customers(顧客) | CustomerID, Name, Email, Phone, Address | 一位顧客可以下多筆訂單(1:N) |
| Orders(訂單) | OrderID, CustomerID, OrderDate, TotalAmount, PaymentStatus, ProductID, Quantity | 一筆訂單屬於一位顧客(N:1),且直接關聯產品 |
| Products(產品) | ProductID, Name, Category, Price, StockQuantity | 一筆訂單可包含多個產品(N:M) |
| 表格名稱 | 欄位名稱 | 資料型態 | 約束條件(Constraints) |
|---|---|---|---|
| Customers(顧客) | CustomerID | INT | PRIMARY KEY AUTO_INCREMENT |
| Name | VARCHAR(100) | NOT NULL |
|
| VARCHAR(255) | UNIQUE NOT NULL |
||
| Phone | VARCHAR(15) | ||
| Address | TEXT | ||
| Orders(訂單) | OrderID | INT | PRIMARY KEY AUTO_INCREMENT |
| CustomerID | INT | FOREIGN KEY REFERENCES Customers(CustomerID) ON DELETE CASCADE |
|
| OrderDate | DATE | NOT NULL DEFAULT CURRENT_DATE |
|
| TotalAmount | DECIMAL(10,2) | NOT NULL CHECK (TotalAmount >= 0) |
|
| PaymentStatus | VARCHAR(50) | CHECK (PaymentStatus IN ('Pending', 'Completed', 'Cancelled')) |
|
| ProductID | INT | FOREIGN KEY REFERENCES Products(ProductID) ON DELETE CASCADE |
|
| Quantity | INT | NOT NULL CHECK (Quantity > 0) |
|
| Products(產品) | ProductID | INT | PRIMARY KEY AUTO_INCREMENT |
| Name | VARCHAR(100) | NOT NULL |
|
| Category | VARCHAR(50) | ||
| Price | DECIMAL(10,2) | NOT NULL CHECK (Price > 0) |
|
| StockQuantity | INT | NOT NULL CHECK (StockQuantity >= 0) |
✅ AUTO_INCREMENT → CustomerID, OrderID, ProductID 自動增加,確保唯一性
✅ UNIQUE (Email) → 確保 Email 不重複,避免資料衝突
✅ CHECK 限制條件 → 避免錯誤資料輸入