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ệ một đối một xảy ra khi mỗi mục nhập trong bảng đầu tiên có một và chỉ một đối tác trong bảng thứ hai. Mối quan hệ một-một được hiếm khi được sử dụng bởi vì nó thường hiệu quả hơn để chỉ cần đặt tất cả các thông tin trong một bảng duy nhất. Một số nhà thiết kế cơ sở dữ liệu tận dụng lợi thế của mối quan hệ này bằng cách tạo ra các bảng chứa một tập con của dữ liệu từ một bảng khác.
- Mối quan hệ một-nhiều là loại quan hệ cơ sở dữ liệu phổ biến nhất. Chúng xảy ra khi mỗi bản ghi trong Bảng A tương ứng với một hoặc nhiều bản ghi trong Bảng B, nhưng mỗi bản ghi trong Bảng B chỉ tương ứng với một bản ghi trong Bảng A. Ví dụ, mối quan hệ giữa bảng Giáo viên và bảng Học sinh trong trường tiểu học cơ sở dữ liệu có thể sẽ là mối quan hệ một-nhiều, bởi vì mỗi học sinh chỉ có một giáo viên, nhưng mỗi giáo viên có nhiều học sinh. Thiết kế một-nhiều này giúp loại bỏ dữ liệu trùng lặp.
- Mối quan hệ nhiều-nhiều xảy ra khi mỗi bản ghi trong Bảng A tương ứng với một hoặc nhiều bản ghi trong Bảng B, và mỗi bản ghi trong Bảng B tương ứng với một hoặc nhiều bản ghi trong Bảng A. Ví dụ, mối quan hệ giữa giáo viên và khóa học bảng có khả năng sẽ là nhiều-nhiều vì mỗi giáo viên có thể hướng dẫn nhiều hơn một khóa học, và mỗi khóa học có thể có nhiều hơn một giảng viên.
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:
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:
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