Database Schema Design
Database Schema Design
Phần tiêu đề “Database Schema Design”Principles và best practices trong việc thiết kế database schema.
Normalization
Phần tiêu đề “Normalization”1NF (First Normal Form)
Phần tiêu đề “1NF (First Normal Form)”- Atomic values (không có arrays/nested objects)
- Mỗi column có unique name
- Order không quan trọng
2NF (Second Normal Form)
Phần tiêu đề “2NF (Second Normal Form)”- Đạt 1NF
- Không có partial dependencies
3NF (Third Normal Form)
Phần tiêu đề “3NF (Third Normal Form)”- Đạt 2NF
- Không có transitive dependencies
Relationships
Phần tiêu đề “Relationships”-- One-to-ManyCREATE TABLE authors ( id SERIAL PRIMARY KEY, name VARCHAR(100));
CREATE TABLE books ( id SERIAL PRIMARY KEY, title VARCHAR(200), author_id INTEGER REFERENCES authors(id));
-- Many-to-ManyCREATE TABLE students ( id SERIAL PRIMARY KEY, name VARCHAR(100));
CREATE TABLE courses ( id SERIAL PRIMARY KEY, name VARCHAR(100));
CREATE TABLE enrollments ( student_id INTEGER REFERENCES students(id), course_id INTEGER REFERENCES courses(id), PRIMARY KEY (student_id, course_id));Indexes
Phần tiêu đề “Indexes”-- Single columnCREATE INDEX idx_users_email ON users(email);
-- Composite indexCREATE INDEX idx_posts_user_createdON posts(user_id, created_at);
-- Unique indexCREATE UNIQUE INDEX idx_users_username ON users(username);Best Practices
Phần tiêu đề “Best Practices”- Meaningful names - Rõ ràng, consistent
- Primary keys - Luôn có
- Foreign keys - Enforce relationships
- Indexes - Cho columns thường query
- NOT NULL - Khi appropriate
- Default values - Khi hợp lý