Hãy tưởng tượng lược đồ như vậy.Phím tắt ngoài trong bảng
NOTE TABLE: NoteID, Note, DetailedTaskID, .....
DETAILED TASK TABLE: DetailedTaskID, WorkOrderID, .....
WORKORDER TABLE: WorkOrderID, ProjectID, .....
PROJECT TABLE: ProjectID, .....
Bây giờ với lược đồ này cho phép tôi muốn truy xuất tất cả các ghi chú được liên kết với một dự án cụ thể, tôi kết thúc với khá nhiều lần tham gia.
IE: Note JOIN DetailedTask JOIN WorkOrder JOIN Project
Vì vậy, câu hỏi của tôi là khi nào (nếu bao giờ) thích hợp để thêm cột "lối tắt" cho bảng (trong trường hợp này là ProjectID)?
Vì vậy, về cơ bản thay đổi bảng ghi chú này: NoteID, Note, DetailedTaskID, ProjectID
Tôi có thể xác nhận không? Khi bạn nói "ít nguy hiểm" tôi cho rằng bạn có nghĩa là một kịch bản mà một lỗi có thể gây ra một khóa ngoại để trỏ đến một dự án và một trỏ đến một dự án khác, đúng không? –
Chỉ cần như vậy. Trong trường hợp này, một sự giám sát trong mã của bạn (hoặc mã của người khác, được thêm vào sau) có thể cập nhật các khoá ngoại trong một bảng chứ không phải bảng khác. Hoặc, nó có thể chỉ cập nhật một số giá trị khóa ngoài được chuẩn hóa trong các hàng trong bảng thứ hai, nhưng không cập nhật các giá trị khác. Hoặc nó có thể cập nhật quá nhiều hàng trong bảng thứ hai. Và bạn có thể không thấy các lỗi này ngay lập tức, hoặc nhất quán, nếu đôi khi bạn nhận được các giá trị khóa ngoài từ bảng bình thường hóa và đôi khi từ bảng không chuẩn hóa. Nó có thể được thực hiện, nhưng chắc chắn rằng bạn có một nhu cầu thực sự để làm điều đó đầu tiên. –
Cảm ơn rất nhiều về đầu vào của bạn ... –