Tôi đã làm việc với một nhóm người đã xây dựng một hệ thống trong đó họ đã đặt ra một vài điều khoản mới trong quy trình và tôi muốn biết liệu có điều gì chuẩn hơn mà họ nên gọi nó không.
Về cơ bản, chúng có các bảng chứa thông tin được phiên bản, do đó, khóa duy nhất cho bảng là mã định danh cho tài liệu được theo dõi, cộng với số bản ghi (mặc dù, số bản ghi được tự động đánh số, vì vậy nó là duy nhất). Chúng đề cập đến các trường tạo nên số nhận dạng của tài liệu (nó thay đổi cho từng bảng), dưới dạng 'khóa chính' ... nhưng các trường cả riêng lẻ và tập thể (ví dụ: nếu nó có các trường A, B và C để có được một định danh duy nhất, họ có thể hoán đổi cho nhau tham khảo A như là ' một chìa khóa thủ' và A / B / C là ' những chìa khóa chính'
Nếu họ có cơ sở dữ liệu được chuẩn hóa, đây sẽ là một ứng cử viên rõ ràng cho khóa ngoại - nhưng nó không được chuẩn hóa, vì vậy nó không phải là một tham chiếu đến một bảng khác.
Có một số tên cho khái niệm này - một định danh để chọn một số khái niệm không phải là cái mà bảng dựa trên, nhưng đó không phải là khóa ngoại?
cập nhật: nó không phải là khóa thay thế, vì nó không xác định một bản ghi duy nhất trong bảng; nó xác định một nhóm các hồ sơ. Lấy bảng folowing:
id document_id version_no
-- ----------- ----------
1 1 1
2 2 1
3 1 2
4 2 2
5 2 3
Vì vậy, chúng tôi đang theo dõi siêu dữ liệu cho 5 đối tượng, đó là hai tệp khác nhau, một trong số đó đã được cập nhật một lần (2 phiên bản / phiên bản của nó) và một tệp đã được cập nhật hai lần.
Chúng tôi có những điều sau đây:
- khóa ứng viên: (id) hoặc (document_id, version_no)
- khóa tự nhiên: (document_id, version_no)
- khóa thay thế: (id)
- khóa chính: (id, document_id) (Tôi đã không chọn nó)
... nếu document_id
là mối quan hệ với một bảng khác, thì đó sẽ là khóa ngoại, nhưng 'khóa ngoại' thường cũng gây ra một ràng buộc (nghĩa là giá trị phải tồn tại trong một số bảng khác trước khi có thể sử dụng ở đây) .. Nhưng trong trường hợp này, nó không phải là. Vì vậy, có một số thuật ngữ khác để mô tả điều này như là một cái gì đó chọn một nhóm các đối tượng liên quan chứ không phải là một bản ghi ra khỏi bảng?
Định nghĩa đầu tiên về thay thế trên trang wikipedia cho phù hợp với khóa thay thế , nhưng đó không phải là cách sử dụng phổ biến của thuật ngữ này, trong đó hầu hết mọi người coi khóa thay thế để phù hợp với định nghĩa thứ hai:
- Surrogate (1): Định nghĩa này dựa trên định nghĩa được đưa ra bởi Hall, Owlett và Todd (1976). Ở đây một người thay thế đại diện cho một thực thể trong thế giới bên ngoài. Chất thay thế được hệ thống tạo ra bên trong nhưng vẫn hiển thị cho người dùng hoặc ứng dụng.
- Surrogate (2): Định nghĩa này dựa trên định nghĩa được đưa ra bởi Wieringa và De Jrid (1991). Ở đây một đại diện thay thế đại diện cho một đối tượng trong cơ sở dữ liệu. Người thay thế được hệ thống tạo ra bên trong và vô hình với người dùng hoặc ứng dụng.
cập nhật 2 : Về cơ bản, nếu bạn có một bảng xử lý phiên bản các bản ghi, nếu bạn di chuyển các bản ghi sang một bảng mới và lịch sử chỉnh sửa được lưu trữ, các trường liên kết trở lại bảng gốc sẽ được coi là khóa ngoại ... nhưng nếu bạn đã lưu trữ tất cả trong một bảng, mà không liên quan đến bảng phụ, có tên cho nhóm các trường xác định nhiều phiên bản của bản ghi không?
Lý do tôi hỏi là nhóm tôi làm việc cùng đã quyết định gọi nó là 'chìa khóa chính' và khi tôi lên tàu, tôi đã xem lại tất cả các tài liệu của họ và nói với họ rằng họ có lỗi đánh máy, và đó là "Khóa chính", nhưng họ giải thích rằng không, đó là cụm từ họ đã đặt ra để mô tả khái niệm này.
Tôi đang cố gắng xác định xem có một tên được chấp nhận trong cộng đồng cơ sở dữ liệu cho khái niệm này không.