Computer >> Máy Tính >  >> Lập trình >> SQL

Mô hình mối quan hệ một-nhiều


Trong cơ sở dữ liệu "bảng phân công lớp học", một giáo viên có thể dạy không hoặc nhiều lớp, trong khi một lớp do một (và chỉ một) giáo viên dạy. Trong cơ sở dữ liệu "công ty", người quản lý quản lý không hoặc nhiều nhân viên, trong khi một nhân viên được quản lý bởi một (và chỉ một) người quản lý. Trong cơ sở dữ liệu "bán sản phẩm", một khách hàng có thể đặt nhiều đơn hàng; trong khi một đơn đặt hàng được đặt bởi một khách hàng cụ thể. Loại mối quan hệ này được gọi là một-nhiều.

Mối quan hệ một-nhiều không thể được biểu diễn trong một bảng. Ví dụ:trong cơ sở dữ liệu "bảng phân công lớp học", chúng ta có thể bắt đầu bằng một bảng có tên là Giáo viên, bảng này lưu trữ thông tin về giáo viên (chẳng hạn như tên, văn phòng, điện thoại và email). Để lưu trữ các lớp do mỗi giáo viên dạy, chúng ta có thể tạo các cột class1, class2, class3, nhưng gặp phải vấn đề ngay lập tức về số lượng cột cần tạo. Mặt khác, nếu chúng ta bắt đầu với một bảng được gọi là Lớp lưu trữ thông tin về một lớp học, chúng ta có thể tạo thêm các cột để lưu trữ thông tin về (một) giáo viên (chẳng hạn như tên, văn phòng, điện thoại và email). Tuy nhiên, vì một giáo viên có thể dạy nhiều lớp, nên dữ liệu của nó sẽ được sao chép thành nhiều hàng trong Lớp bảng.

Để hỗ trợ mối quan hệ một-nhiều, chúng ta cần thiết kế hai bảng:ví dụ:một bảng Các lớp để lưu trữ thông tin về các lớp với classID là khóa chính; và một bảng Giáo viên để lưu trữ thông tin về giáo viên với teacherID làm khóa chính. Sau đó, chúng ta có thể tạo mối quan hệ một-nhiều bằng cách lưu trữ khóa chính của bảng Teacher (tức là teacherID) ("một" -end hoặc bảng cha) trong các lớp của bảng ("nhiều" -end hoặc bảng con), như minh họa bên dưới.

Mô hình mối quan hệ một-nhiều

Cột teacherID trong bảng con Các lớp được gọi là khóa ngoại. Khóa ngoại của bảng con là khóa chính của bảng mẹ, được sử dụng để tham chiếu đến bảng mẹ.