🎯 Mục tiêu bài học
Sau bài học này, bạn sẽ:
- ✅ Hiểu Database Design là gì và tầm quan trọng của nó
- ✅ Nắm được quy trình thiết kế database (Design Process)
- ✅ Biết các khái niệm cơ bản: Table, Primary Key, Foreign Key
- ✅ Hiểu tổng quan về SQL Server và AdventureWorks database
- ✅ Biết các công cụ cần thiết và roadmap khóa học
🗄️ Database Design là gì?
Database Design (Thiết kế cơ sở dữ liệu) là quá trình tạo ra một mô hình chi tiết của database, định nghĩa cách dữ liệu được lưu trữ, tổ chức, và truy cập.
Tại sao Database Design quan trọng?
| Good Design | Bad Design |
|---|---|
| ✅ Query nhanh | ❌ Query chậm |
| ✅ Dữ liệu nhất quán | ❌ Data inconsistency |
| ✅ Dễ maintain | ❌ Khó sửa đổi |
| ✅ Scalable | ❌ Không scale được |
| ✅ Tiết kiệm storage | ❌ Lãng phí storage |
| ✅ Bảo mật tốt | ❌ Dễ bị tấn công |
Real-world Impact
"Một thiết kế database tốt có thể giảm 90% thời gian query và tiết kiệm hàng triệu đô la chi phí infrastructure."
Checkpoint
Database Design là gì và tại sao thiết kế database tốt lại quan trọng trong các hệ thống thực tế?
📐 Database Design Process
Database Design Lifecycle
2.1 Requirements Analysis
- Business requirements: Hệ thống cần làm gì?
- Data requirements: Cần lưu trữ dữ liệu gì?
- Functional requirements: Các operations cần hỗ trợ?
- Non-functional: Performance, security, scalability?
2.2 Conceptual Design
- Xác định Entities (thực thể)
- Xác định Attributes (thuộc tính)
- Xác định Relationships (quan hệ)
- Vẽ ERD (Entity-Relationship Diagram)
2.3 Logical Design
- Normalization (chuẩn hóa)
- Xác định Primary Keys
- Xác định Foreign Keys
- Xác định Data types
2.4 Physical Design
- Chọn DBMS (SQL Server)
- Thiết kế Indexes
- Thiết kế Partitions
- Tối ưu Storage
Checkpoint
Hãy liệt kê 5 bước trong quy trình thiết kế database (Database Design Lifecycle)?
📊 Các khái niệm cơ bản
Database Concepts
3.1 Table (Bảng)
1-- Ví dụ: Table lưu thông tin khách hàng2CREATE TABLE Customers (3 CustomerID INT PRIMARY KEY,4 FirstName NVARCHAR(50),5 LastName NVARCHAR(50),6 Email NVARCHAR(100),7 Phone VARCHAR(20)8);3.2 Primary Key (Khóa chính)
- Unique: Không trùng lặp
- Not NULL: Không được null
- Immutable: Không nên thay đổi
- Mỗi table chỉ có 1 Primary Key
3.3 Foreign Key (Khóa ngoại)
- Tạo relationship giữa các tables
- Đảm bảo referential integrity
- Giá trị phải tồn tại trong table tham chiếu
1-- Foreign Key example2CREATE TABLE Orders (3 OrderID INT PRIMARY KEY,4 CustomerID INT,5 OrderDate DATE,6 FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID)7);Checkpoint
Sự khác biệt giữa Primary Key và Foreign Key là gì? Cho ví dụ minh họa.
🛠️ SQL Server Overview
Tại sao chọn SQL Server?
| Feature | Benefit |
|---|---|
| Enterprise-grade | Dùng cho production lớn |
| T-SQL | Ngôn ngữ mạnh mẽ |
| SSMS | GUI quản lý tốt |
| Integration | Tích hợp .NET, Azure |
| Security | Row-level security, encryption |
| Performance | Query optimizer, indexing |
SQL Server Editions
11. **Express** (Free)2 - Max 10GB database3 - 1GB RAM4 - Học tập, development5 62. **Developer** (Free)7 - Full features8 - Chỉ cho development9 103. **Standard** (Paid)11 - Production workloads12 - Basic HA13 144. **Enterprise** (Paid)15 - Full features16 - Mission-criticalCheckpoint
SQL Server có những edition nào? Edition nào phù hợp cho việc học tập và phát triển?
📚 AdventureWorks Database
Trong khóa học này, chúng ta sẽ sử dụng AdventureWorks - sample database của Microsoft.
Về AdventureWorks
- Công ty giả định: Adventure Works Cycles
- Business: Sản xuất và bán xe đạp
- Phạm vi: Sales, Production, HR, Purchasing
Download và Restore
1-- 1. Download từ:2-- https://github.com/Microsoft/sql-server-samples/releases/download/adventureworks/AdventureWorks2025.bak34-- 2. Restore database trong SSMS:5RESTORE DATABASE AdventureWorks20256FROM DISK = 'C:\Backup\AdventureWorks2025.bak'7WITH MOVE 'AdventureWorks2025' TO 'C:\Data\AdventureWorks2025.mdf',8 MOVE 'AdventureWorks2025_log' TO 'C:\Data\AdventureWorks2025_log.ldf';Schema Overview
AdventureWorks Schemas
Explore AdventureWorks
1-- Xem tất cả schemas2SELECT DISTINCT TABLE_SCHEMA3FROM INFORMATION_SCHEMA.TABLES4ORDER BY TABLE_SCHEMA;56-- Xem tables trong schema Sales7SELECT TABLE_NAME8FROM INFORMATION_SCHEMA.TABLES9WHERE TABLE_SCHEMA = 'Sales';1011-- Xem sample data12SELECT TOP 10 * FROM Sales.Customer;13SELECT TOP 10 * FROM Production.Product;Checkpoint
AdventureWorks database có những schema chính nào? Schema nào chứa thông tin bán hàng?
🔧 Công cụ cần thiết
6.1 SQL Server Management Studio (SSMS)
- Download: https://docs.microsoft.com/sql/ssms/download
- GUI quản lý SQL Server
- Query editor với IntelliSense
- Visual database diagrams
6.2 Azure Data Studio
- Cross-platform (Windows, Mac, Linux)
- Modern interface
- Notebooks support
- Extensions
6.3 VS Code + mssql Extension
- Lightweight
- Integrated với development
- Good for T-SQL editing
Checkpoint
Hãy kể tên 3 công cụ phổ biến để làm việc với SQL Server?
🗺️ Roadmap khóa học
Database Design Learning Path
Nội dung chi tiết
| Bài | Chủ đề | Nội dung |
|---|---|---|
| 1 | Overview | Giới thiệu, concepts cơ bản |
| 2 | ERD | Entity-Relationship Modeling |
| 3 | Normalization | 1NF, 2NF, 3NF, BCNF |
| 4 | Keys & Constraints | PK, FK, Unique, Check |
| 5 | Data Types | Chọn data type phù hợp |
| 6 | Creating Tables | DDL, CREATE TABLE |
| 7 | Views | Virtual tables, use cases |
| 8 | Stored Procedures | T-SQL programming |
| 9 | Indexes | B-Tree, optimization |
| 10 | Performance Tuning | Query optimization |
| 11 | Security | Permissions, encryption |
| 12 | Project | Thiết kế database hoàn chỉnh |
Checkpoint
Khóa học được chia thành mấy phần chính? Phần nào tập trung vào tối ưu hiệu năng?
📋 Prerequisites
Kiến thức cần có
- ✅ SQL cơ bản (SELECT, INSERT, UPDATE, DELETE)
- ✅ Hiểu khái niệm table, column, row
- ✅ Biết dùng SSMS hoặc Azure Data Studio
Nếu chưa biết SQL
Học khóa SQL Basics trước khi bắt đầu khóa này.
Checkpoint
Bạn cần có những kiến thức nền tảng nào trước khi bắt đầu khóa học này?
🚀 Bài tiếp theo
Bài tiếp theo: Entity-Relationship Diagram (ERD)
Học cách mô hình hóa dữ liệu với ERD - công cụ quan trọng nhất trong database design!
