The Exercise Archive created by Thai Phong Nguyen for the purpose of storing learning materials.

Foreign Key và Constraints

Khái niệm

Foreign Key (Khóa Ngoại) là một trường hoặc một nhóm các trường trong một bảng được dùng để tạo liên kết giữa dữ liệu trong bảng này với dữ liệu trong bảng khác. Khóa ngoại xác định rằng giá trị của một trường (hoặc nhóm trường) trong bảng này phải tồn tại dưới dạng giá trị của khóa chính trong bảng khác.

Constraint (Ràng Buộc) là các quy tắc áp đặt lên các cột trong bảng để duy trì tính toàn vẹn và tính chính xác của dữ liệu. Các loại ràng buộc khác nhau bao gồm:

  • NOT NULL: Bắt buộc giá trị của cột không được để trống.
  • UNIQUE: Đảm bảo rằng tất cả các giá trị trong một cột là duy nhất.
  • PRIMARY KEY: Kết hợp giữa NOT NULL và UNIQUE. Một bảng chỉ có thể có một khóa chính.
  • FOREIGN KEY: Tạo liên kết giữa các bảng bằng cách tham chiếu đến khóa chính của bảng khác.
  • CHECK: Đảm bảo rằng các giá trị trong cột thỏa mãn một điều kiện nhất định.
  • DEFAULT: Đặt giá trị mặc định cho một cột nếu không có giá trị nào được chỉ định.

Bảng Courses

CourseID CourseName
1 Mathematics
2 Physics
3 Chemistry

Bảng Students

StudentID Name CourseID
1 Alice 1
2 Bob 2
3 Charlie 3

Bảng Employees

EmployeeID FirstName LastName Email
1 John Doe john.doe@example.com
2 Jane Smith jane.smith@example.com

Bảng Products

ProductID ProductName Price CreatedDate
1 Widget 10.00 2024-07-23
2 Gadget 15.50 2024-07-23
Khám Phá Foreign Key và Constraints Trong SQL

Khám Phá Foreign Key và Constraints Trong SQL

Bảng Courses

Bảng Courses lưu thông tin về các khóa học.

CREATE TABLE Courses (
    CourseID INT PRIMARY KEY, -- Khóa chính
    CourseName VARCHAR(50) NOT NULL -- Không được để trống
);

Bảng Students

Bảng Students lưu thông tin về các sinh viên và khóa học mà họ đang theo học.

CREATE TABLE Students (
    StudentID INT PRIMARY KEY, -- Khóa chính
    Name VARCHAR(50) NOT NULL, -- Không được để trống
    CourseID INT, -- Mã khóa học
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID) -- Khóa ngoại tham chiếu tới Courses
);

Chèn dữ liệu mẫu

Thêm dữ liệu vào bảng Courses:

INSERT INTO Courses (CourseID, CourseName) VALUES (1, 'Mathematics');
INSERT INTO Courses (CourseID, CourseName) VALUES (2, 'Physics');
INSERT INTO Courses (CourseID, CourseName) VALUES (3, 'Chemistry');

Thêm dữ liệu vào bảng Students:

INSERT INTO Students (StudentID, Name, CourseID) VALUES (1, 'Alice', 1); -- Alice học Mathematics
INSERT INTO Students (StudentID, Name, CourseID) VALUES (2, 'Bob', 2); -- Bob học Physics
INSERT INTO Students (StudentID, Name, CourseID) VALUES (3, 'Charlie', 3); -- Charlie học Chemistry

Ví dụ về Constraints

Bảng Employees với ràng buộc NOT NULLUNIQUE:

CREATE TABLE Employees (
    EmployeeID INT PRIMARY KEY, -- Khóa chính
    FirstName VARCHAR(50) NOT NULL, -- Không được để trống
    LastName VARCHAR(50) NOT NULL, -- Không được để trống
    Email VARCHAR(100) UNIQUE -- Giá trị duy nhất
);

Bảng Products với ràng buộc CHECKDEFAULT:

CREATE TABLE Products (
    ProductID INT PRIMARY KEY, -- Khóa chính
    ProductName VARCHAR(50) NOT NULL, -- Không được để trống
    Price DECIMAL(10, 2) CHECK (Price > 0), -- Giá trị phải lớn hơn 0
    CreatedDate DATE DEFAULT GETDATE() -- Giá trị mặc định là ngày hiện tại
);

Tóm tắt

  • Bảng Courses có một khóa chính CourseID và một cột CourseName không được để trống.
  • Bảng Students có một khóa chính StudentID, một cột Name không được để trống, và một khóa ngoại CourseID tham chiếu đến CourseID trong bảng Courses.
  • Ví dụ về các ràng buộc khác như NOT NULL, UNIQUE, CHECK, và DEFAULT được áp dụng trong các bảng khác như EmployeesProducts.

Tính liên kết giữa các bảng

Bảng Courses lưu trữ thông tin về các khóa học. Mỗi khóa học có một CourseID là khóa chính.

Bảng Students lưu trữ thông tin về các sinh viên. Mỗi sinh viên có một StudentID là khóa chính và một CourseID là khóa ngoại tham chiếu đến CourseID trong bảng Courses. Điều này đảm bảo rằng mỗi sinh viên phải đăng ký vào một khóa học có sẵn trong bảng Courses.

Tổng kết

Bảng Courses: Lưu trữ thông tin về các khóa học với CourseID là khóa chính.

Bảng Students: Lưu trữ thông tin về các sinh viên với StudentID là khóa chính và CourseID là khóa ngoại tham chiếu đến Courses.

Bảng Employees: Ví dụ về ràng buộc NOT NULLUNIQUE.

Bảng Products: Ví dụ về ràng buộc CHECKDEFAULT.

No pain, no gain!
Cookie Consent
We serve cookies on this site to analyze traffic, remember your preferences, and optimize your experience.
Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.
Site is Blocked
Sorry! This site is not available in your country.