Dạng chuẩn 3

Dạng chuẩn 3 (3NF) là một dạng chuẩn được sử dụng trong chuẩn hóa dữ liệu để kiểm tra xem liệu tất cả các thuộc tính không khóa của một quan hệ có phụ thuộc chỉ vào các khóa candidate key của quan hệ hay không. Điều này có nghĩa là tất cả các thuộc tính không khóa là độc lập với nhau hay các thuộc tính không khóa không thể phụ thuộc bắc cầu vào một thuộc tính không khóa khác.

Dạng chuẩn 3 khác với dạng chuẩn 2 trong đó tất cả các thuộc tính không khóa trong 3NF được yêu cầu là phải phụ thuộc trực tiếp vào mỗi khóa candidate của quan hệ. 
Phát triển cao hơn 3NF, BCNF insists, in the words of Bill Kent, that "the relation is based on the key, the whole key and nothing but the key", to which some add "so help me Codd."

Định nghĩa hình thức

Gọi:

  là lược đồ quan hệ,
  là tập hơp các phụ thuộc hàm trên lược đồ quan hệ ,
  là tập con của các thuộc tính của , và
  là một thuộc tính của 

 là ở dạng chuẩn 3 nếu với mọi phụ thuộc hàm ở dạng  thì một trong các mệnh đề sau là đúng:

 ; có nghĩa là,  là một phụ thuộc hàm tầm thường, hoặc
  là một siêu khóa, hoặc
  là bộ phận của một vài khóa nào đó của 

Mọi quan hệ với phụ thuộc từng phần hoặc dựa vào bắc cầu đều vi phạm quy tắc dạng chuẩn 3.

Ví dụ

Xem xét quan hệ định nghĩa vài loại phụ tùng ô tô được mô tả như sau:

 + Mechanical part
   Part number(primary key)
  Manufacturer name
  Manufacturer address
   1000
  BMW
  Park Avenue
   1001
  Mitsubishi
  Lincoln Street
   1002
  BMW
  Park Avenue

Trong trường hợp này địa chỉ của nhà sản xuất (manufacturer address) không thuộc về quan hệ, do thông tin này chỉ mô tả về nhà sản xuất hơn là thông tin về phụ tùng. Do vậy, thông tin về địa chỉ của nhà sản xuất cần được chuyển sang một bảng khác với các thuộc tính:

 + Manufacturer
   Manufacturer name(primary key)
  Manufacturer address
   BMW
  Park Avenue
   Mitsubishi
  Lincoln Street

...và bảng dữ liệu ban đầu được sửa thành:

 + Mechanical part
   Part number(primary key)
  Manufacturer name
   1000
  BMW
   1001
  Mitsubishi
   1002
  BMW

Vấn đề của bảng dữ liệu không ở dạng chuẩn 3 là với mọi tên của nhà sản xuất, ta phải lưu thông tin về địa chỉ, điều này gây ra dư thừa dữ liệu.

Xem xét ví dụ sau:

 + Order
   Order Number(primary key)
  Customer Name
  Unit Price
  Quantity
  Total

   1000
  David
  $35.00
  3
  $105.00

   1001
  Jim
  $25.00
  2
  $50.00

   1002
  Bob
  $25.00
  3
  $75.00

Trong trường hợp này cột Total không thuộc về bảng vì Total có thể được suy ra từ việc nhân hai cột Unit Price và Quantity. Để chuyển về dạng chuẩn 3, bỏ cột Total ra khỏi bảng (trong một câu truy vấn dữ liệu, thay vì dùng "SELECT Orders.Total FROM Orders", ta sẽ sử dụng lệnh SELECT UnitPrice * Quantity FROM Orders).

 + Order
   Order Number(primary key)
  Customer Name
  Unit Price
  Quantity
   1000
  David
  $35.00
  3

   1001
  Jim
  $25.00
  2

   1002
  Bob
  $25.00
  3

Nguồn
 Ramakrishnan, Raghu and Johannes Gehrke. "Schema Refinement and Normal Forms." Database Management Systems, Third Edition. ISBN 0-07-246563-8. McGraw Hill. 14 tháng 8 năm 2002.
 Gupta, Gopal. "Third Normal Form (3NF)."  Single Valued Normalization. 1996.

 Tham khảo 

 Litt's Tips: Normalization
 Rules Of Data Normalization 
 Date, C. J. (1999),  An Introduction to Database Systems  (8th ed.). Addison-Wesley Longman. ISBN 0-321-19784-4.
 Kent, W. (1983) A Simple Guide to Five Normal Forms in Relational Database Theory, Communications of the ACM, vol. 26, pp. 120–125
 Date, C.J., & Darwen, H., & Pascal, F. Database Debunkings

 Liên kết ngoài 
 Database Normalization Basics  by Mike Chapple (About.com)
 An Introduction to Database Normalization  by Mike Hillyer.
 Normalization  by ITS, University of Texas.
 A tutorial on the first 3 normal forms by Fred Coulson
 Free PDF poster available by Marc Rettig
 Description of the database normalization basics by Microsoft
 Developing High Quality Data Models 
 Generic Data Modeling 
 The Gellish Language - A Universal Data Structure

3NF

de:Normalisierung (Datenbank)#Dritte Normalform (3NF)