PDA

View Full Version : Một table tự quan hệ với chính nó (Table self-referencing)



phatnq2003
08-06-2007, 13:47
Lâu lâu rảnh rỗi ngồi tham khảo tài liệu. Thấy cái Table self-referencing khá thú vị, post lên đây để cùng mọi người tham luận.

Cái table self-referencing là gì?
Thông thường, khi bạn thiết lập một quan hệ, bạn cần có một table đặt quan hệ và một table quan hệ dựa trên một hoặc nhiều field thông qua một biểu thức quan hệ.
Chúng ta đã thường gặp các quan hệ 1-1, 1-nhiều, nhiều-nhiều; ở đó các table tham gia quan hệ là khác nhau. Nhưng ...

Giả sử, tôi có ứng dụng trong đó tôi cần quản lý nhân viên tôi thông qua một bảng sau:

EMPLOYEES
(
EmployeeID,
FirstName,
LastName,
Title,
...
ManagerID,
...
)

Trong đó EmployeeID là khóa và cũng chính là mã số của nhân viên.
ManagerID là mã số của người quản lý trực tiếp nhân viên đó.
Mà thông tin của người quản lý này cũng nằm trong bảng nhân viên, do vậy mã số ManagerID cũng chính là mã số EmployeeID của người quản lý đó.

Như vậy rõ ràng giữa ManagerID và EmployeeID có quan hệ với nhau. Chúng lại cùng trong bảng EMPLOYEES, nên trong tình huống này EMPLOYEES chính là một table self-reference.

Với khái niệm này, bạn sẽ không cần phải thiết kế nhiều bảng dữ liệu để giải quyết vấn đề tương tự như trên.

Có bạn nào đã từng gặp tình huống tương tự không?