07/05/2018, 15:35

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ữ ...

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:

IDTENTUOIKHOAHOCTENSACH
100Hoang19CNTTMang_May_Tinh
100Hoang19CNTTLap_Trinh_C
100Hoang19CNTTTu_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:

IDTENTUOIKHOAHOC
100Hoang19CNTT

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:

IDSINHVIEN_IDTENSACH
10100Mang_May_Tinh
11100Lap_Trinh_C
12100Tu_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.

0