- Giới thiệu SQL
- SQL là gì
- Các khái niệm RDBMS
- Database là gì
- Cú pháp SQL cơ bản
- Kiểu dữ liệu
- Toán tử
- Biểu thức (Expression)
- Lệnh Create Database
- Lệnh Drop Database
- Lệnh Select Database
- Lệnh Rename Database
- Lệnh Create Table
- Lệnh Drop Table
- Lệnh Delete Table
- Lệnh Rename Table
- Lệnh Truncate Table
- Lệnh ALter Table
- Sao chép bảng
- Bảng tạm (Temp Table)
- Truy vấn Update
- Truy vấn Insert
- Truy vấn Select
- Mệnh đề Order By
- Mệnh đề Group By
- Từ khóa Distinct
- Sắp xếp kết quả
- Mệnh đề Where
- Mệnh đề AND & OR
- Mệnh đề WITH
- Mệnh đề Like
- Mệnh đề Top
- Mệnh đề Union
- Giá trị NULL
- Cú pháp Alias
- Chỉ mục (Index)
- Sử dụng View
- Mệnh đề Having
- SQL Transaction
- Toán tử Wildcard
- Truy vấn con
- Sử dụng Sequence
- Xử lý bản sao
- SQL Injection
- Ràng buộc (Constraint)
- Ràng buộc NOT NULL
- Ràng buộc DEFAULT
- Ràng buộc UNIQUE
- Ràng buộc PRIMARY KEY
- Ràng buộc FOREIGN KEY
- Ràng buộc CHECK
- Ràng buộc INDEX
- Sử dụng Join
- Inner Join
- Left Join
- Right Join
- Full Join
- Self Join
- Cartesian Join
- Hàm hữu ích
- Hàm xử lý Date
- Hàm xử lý chuỗi
- Hàm xử lý số
- First Normal Form (1NF)
- Second Normal Form (2NF)
- Third Normal Form (3NF)
- Tuning DB
- Tài liệu SQL tham khảo
First Normal Form (1NF) trong SQL
First Normal Form (1NF) thiết lập các qui tắc cơ bản cho một Database đã được tổ chức:
Định nghĩa các cột dữ liệu cần thiết, bởi vì chúng trở thành các cột trong một bảng. Đặt các cột dữ liệu có liên quan với nhau trong một bảng.
Bảo đảm rằng không có việc lặp lại các nhóm dữ liệu nào.
Bảo đảm rằng có một Primary Key.
Qui tắc đầu tiên của 1NF
Bạn phải định nghĩa các cột dữ liệu. Nghĩa là kiểm tra dữ liệu để được lưu giữ, tổ chức dữ liệu vào trong các cột, định nghĩa kiểu dữ liệu của mỗi cột, và cuối cùng đặt các cột dữ liệu liên quan với nhau vào trong bảng riêng của chúng.
Ví dụ, bạn đặt tất cả cột liên quan tới vị trí trong bảng Location, liên quan tới thành viên trong bảng MemberDetail, …
Qui tắc thứ hai của 1NF:
Bước tiếp theo để bảo đảm rằng không có sự lặp lại các nhóm dữ liệu. Chúng ta xem xét bảng sau:
CREATE TABLE SINHVIEN( ID INT NOT NULL, TEN VARCHAR (20) NOT NULL, TUOI INT NOT NULL, KHOAHOC CHAR (25), TENSACH VARCHAR(155) );
Nếu hiển thị một sinh viên với nhiều lần mượn sách khác nhau khác nhau, thì nó sẽ cho:
ID | TEN | TUOI | KHOAHOC | TENSACH |
---|---|---|---|---|
100 | Hoang | 19 | CNTT | Mang_May_Tinh |
100 | Hoang | 19 | CNTT | Lap_Trinh_C |
100 | Hoang | 19 | CNTT | Tu_Tuong_Ho_Chi_Minh |
Nhưng theo 1NF, chúng ta cần bảo đảm rằng không có sự lặp lại các nhóm dữ liệu. Vì thế, chúng ta chia bảng trên thành 2 phần và kết hợp chúng bởi một key như sau:
Bảng SINHVIEN:
CREATE TABLE SINHVIEN( ID INT NOT NULL, TEN VARCHAR (20) NOT NULL, TUOI INT NOT NULL, KHOAHOC CHAR (25), PRIMARY KEY (ID) );
Bảng này sẽ có các bản ghi sau:
ID | TEN | TUOI | KHOAHOC |
---|---|---|---|
100 | Hoang | 19 | CNTT |
Bảng MUONSACH:
CREATE TABLE MUONSACH( ID INT NOT NULL, SINHVIEN_ID INT NOT NULL, TENSACH VARCHAR(155), PRIMARY KEY (ID) );
Bảng này sẽ có các bản ghi sau:
ID | SINHVIEN_ID | TENSACH |
---|---|---|
10 | 100 | Mang_May_Tinh |
11 | 100 | Lap_Trinh_C |
12 | 100 | Tu_Tuong_Ho_Chi_Minh |
Qui tắc thứ ba của 1NF
Qui tắc cuối cùng của 1NF là tạo một Primary Key cho mỗi bảng mà chúng ta đã tạo.