Giới thiệu về mối quan hệ cơ sở dữ liệu

Thuật ngữ cơ sở dữ liệu "quan hệ" hoặc "mối quan hệ" mô tả cách dữ liệu trong các bảng được kết nối.

Những người mới đến thế giới của cơ sở dữ liệu thường gặp khó khăn khi thấy sự khác biệt giữa cơ sở dữ liệu và bảng tính. Họ thấy các bảng dữ liệu và nhận ra rằng các cơ sở dữ liệu cho phép bạn sắp xếp và truy vấn dữ liệu theo những cách mới, nhưng không nắm được ý nghĩa của các mối quan hệ giữa dữ liệu cung cấp cho công nghệ cơ sở dữ liệu quan hệ.

Các mối quan hệ cho phép bạn mô tả các kết nối giữa các bảng cơ sở dữ liệu khác nhau theo những cách mạnh mẽ. Các mối quan hệ này sau đó có thể được tận dụng để thực hiện các truy vấn chéo bảng mạnh mẽ, được gọi là các kết nối.

Các loại mối quan hệ cơ sở dữ liệu

Có ba loại mối quan hệ cơ sở dữ liệu khác nhau, mỗi loại được đặt tên theo số hàng của bảng có thể có liên quan đến mối quan hệ. Mỗi loại trong số ba loại mối quan hệ này tồn tại giữa hai bảng.

Mối quan hệ tự tham khảo: Một trường hợp đặc biệt

Các mối quan hệ tự tham chiếu xảy ra khi chỉ có một bảng liên quan. Một ví dụ phổ biến là bảng Nhân viên chứa thông tin về người giám sát của từng nhân viên. Mỗi người giám sát cũng là một nhân viên và có người giám sát của riêng mình. Trong trường hợp này, có một mối quan hệ tự tham chiếu một-nhiều, vì mỗi nhân viên có một người giám sát, nhưng mỗi người giám sát có thể có nhiều hơn một nhân viên.

Tạo mối quan hệ với các khóa ngoại

Bạn tạo các mối quan hệ giữa các bảng bằng cách chỉ định khóa ngoài . Phím này cho cơ sở dữ liệu quan hệ biết cách các bảng có liên quan. Trong nhiều trường hợp, một cột trong Bảng A chứa các khóa chính được tham chiếu từ Bảng B.

Hãy xem xét lại ví dụ về các bảng Giáo viên và Học sinh. Bảng Giáo viên chỉ chứa ID, tên và cột khóa học:

Giáo viên
InstructorID Tên giáo viên Khóa học
001 John Doe Anh
002 Jane Schmoe môn Toán

Bảng Học sinh bao gồm ID, tên và cột khóa ngoài:

Sinh viên
Thẻ học sinh Tên học sinh Teacher_FK
0200 Lowell Smith 001
0201 Brian ngắn 001
0202 Corky Mendez 002
0203 Monica Jones 001

Cột Teacher_FK trong bảng Học sinh tham chiếu giá trị khóa chính của một người hướng dẫn trong bảng Giáo viên.

Thông thường, các nhà thiết kế cơ sở dữ liệu sẽ sử dụng "PK" hoặc "FK" trong tên cột để dễ dàng xác định khóa chính hoặc cột khóa ngoài.

Lưu ý rằng hai bảng này minh họa mối quan hệ một-nhiều giữa giáo viên và học sinh.

Mối quan hệ và tính toàn vẹn tham chiếu

Khi bạn đã thêm khóa ngoài vào bảng, bạn có thể tạo ràng buộc cơ sở dữ liệu để thực thi tính toàn vẹn tham chiếu giữa hai bảng. Điều này đảm bảo rằng mối quan hệ giữa các bảng vẫn nhất quán. Khi một bảng có khóa ngoài vào một bảng khác, khái niệm về tính toàn vẹn tham chiếu nói rằng bất kỳ giá trị khóa ngoài nào trong Bảng B phải tham chiếu đến một bản ghi hiện có trong Bảng A.

Triển khai mối quan hệ

Tùy thuộc vào cơ sở dữ liệu của bạn, bạn thực hiện các mối quan hệ giữa các bảng theo các cách khác nhau. Microsoft Access cung cấp một thuật sĩ dễ dàng cho phép bạn liên kết các bảng và cũng thực thi tính toàn vẹn tham chiếu.

Nếu bạn đang viết SQL trực tiếp, trước tiên bạn sẽ tạo bảng Giáo viên, khai báo một cột ID là khóa chính:

CREATE TABLE Giáo viên (

InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Teacher_Name VARCHAR (100),
Khóa học VARCHAR (100)
);

Khi bạn tạo bảng Sinh viên, bạn khai báo cột Teacher_FK là một khoá ngoại tham chiếu cột InstructorID trong bảng của giáo viên:

CREATE TABLE Học sinh (
StudentID INT AUTO_INCREMENT PRIMARY KEY,
Student_Name VARCHAR (100), Teacher_FK INT,
NGOẠI HỐI (Teacher_FK) TÀI LIỆU THAM KHẢO Giáo viên (InstructorID))
);

Sử dụng mối quan hệ để tham gia bảng

Khi bạn đã tạo một hoặc nhiều mối quan hệ trong cơ sở dữ liệu của mình, bạn có thể tận dụng sức mạnh của chúng bằng cách sử dụng các truy vấn SQL JOIN để kết hợp thông tin từ nhiều bảng. Kiểu nối kết phổ biến nhất là một SQL INNER JOIN, hoặc một phép nối đơn giản. Kiểu kết nối này trả về tất cả các bản ghi đáp ứng điều kiện kết nối từ nhiều bảng. Ví dụ, điều kiện JOIN này sẽ trả về Student_Name, Teacher_Name và Course nơi khóa ngoài trong bảng Students khớp với khóa chính trong bảng Teachers:

CHỌN Students.Student_Name, Teachers.Teacher_Name, Teachers.Course
TỪ học sinh
INNER JOIN Giáo viên
ON Students.Teacher_FK = Teachers.InstructorID;

Câu lệnh này tạo ra một bảng giống như sau:

Bảng trả về từ câu lệnh ghép nối SQL

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish