Giới thiệu Thiết kế Cơ sở dữ liệu
1. 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."
2. 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
3. Các khái niệm cơ bản
Database Concepts
Database
Structure
Tables
Columns
Rows
Constraints
Primary Key
Foreign Key
Unique
Objects
Views
Stored Procedures
Indexes
3.1 Table (Bảng)
SQL
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
SQL
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);4. 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
markdown
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-critical5. 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
SQL
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
AdventureWorks
Sales
Customer
SalesOrderHeader
SalesOrderDetail
Production
Product
ProductCategory
ProductInventory
HumanResources
Employee
Department
Person
Person
Address
Explore AdventureWorks
SQL
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;6. 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
7. 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 |
8. 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.
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!
