Lý thuyết
25 phút
Bài 1/12

Giới thiệu Thiết kế Cơ sở dữ liệu

Tổng quan về database design, tầm quan trọng và các khái niệm cơ bản

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 DesignBad 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àng
2CREATE 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 example
2CREATE 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?

FeatureBenefit
Enterprise-gradeDùng cho production lớn
T-SQLNgôn ngữ mạnh mẽ
SSMSGUI quản lý tốt
IntegrationTích hợp .NET, Azure
SecurityRow-level security, encryption
PerformanceQuery optimizer, indexing

SQL Server Editions

markdown
11. **Express** (Free)
2 - Max 10GB database
3 - 1GB RAM
4 - Học tập, development
5
62. **Developer** (Free)
7 - Full features
8 - Chỉ cho development
9
103. **Standard** (Paid)
11 - Production workloads
12 - Basic HA
13
144. **Enterprise** (Paid)
15 - Full features
16 - Mission-critical

5. 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.bak
3
4-- 2. Restore database trong SSMS:
5RESTORE DATABASE AdventureWorks2025
6FROM 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ả schemas
2SELECT DISTINCT TABLE_SCHEMA
3FROM INFORMATION_SCHEMA.TABLES
4ORDER BY TABLE_SCHEMA;
5
6-- Xem tables trong schema Sales
7SELECT TABLE_NAME
8FROM INFORMATION_SCHEMA.TABLES
9WHERE TABLE_SCHEMA = 'Sales';
10
11-- Xem sample data
12SELECT 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)

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àiChủ đềNội dung
1OverviewGiới thiệu, concepts cơ bản
2ERDEntity-Relationship Modeling
3Normalization1NF, 2NF, 3NF, BCNF
4Keys & ConstraintsPK, FK, Unique, Check
5Data TypesChọn data type phù hợp
6Creating TablesDDL, CREATE TABLE
7ViewsVirtual tables, use cases
8Stored ProceduresT-SQL programming
9IndexesB-Tree, optimization
10Performance TuningQuery optimization
11SecurityPermissions, encryption
12ProjectThiế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!