Tại sao từ chối các phím tổng hợp có lợi cho tất cả các bảng sử dụng một khóa chính có tên là id? Nguyên nhân nói chung là tất cả ORM đều tuân theo điều này.Tại sao một khóa chính lại tốt hơn khóa tổng hợp?
EDIT
Tôi chỉ mới bắt đầu học Ruby on Rails và trong cuốn sách của sự phát triển nhanh nhẹn bởi thực tế có một dòng: --- Rails thực sự không làm việc quá tốt trừ khi mỗi bảng có một số khóa chính. Đó là ít cầu kỳ về tên của cột. Cùng loại dòng tôi đọc khi tôi đang học Doctrine.
EDIT2 Vui lòng kiểm tra liên kết này. Tôi càng ngày càng bối rối thêm về điều này: --- Composite primary keys versus unique object ID field
Từ liên kết ở trên: -
* khóa chính nên liên tục và vô nghĩa; các khóa không thay thế thường thất bại một hoặc cả hai yêu cầu, cuối cùng là
Nếu khóa không đổi, bạn có thể gặp vấn đề cập nhật trong tương lai nếu khóa không có ý nghĩa, có nhiều khả năng thay đổi, tức là không phải là hằng số; xem ở trên
Lấy một ví dụ đơn giản, phổ biến: một bảng các mục Khoảng không quảng cáo. Nó có thể hấp dẫn để làm cho số mặt hàng (mã số SKU, mã vạch, mã phần, hoặc bất cứ điều gì) khóa chính, nhưng sau đó một năm sau tất cả các số mục thay đổi và bạn còn lại với một bản cập nhật rất lộn xộn toàn bộ vấn đề cơ sở dữ liệu ...
EDIT: có một vấn đề bổ sung thực tế hơn triết học. Trong nhiều trường hợp, bạn sẽ tìm thấy một hàng cụ thể bằng cách nào đó, sau đó cập nhật nó hoặc tìm lại nó (hoặc cả hai). Với các phím tổng hợp, có nhiều dữ liệu hơn để theo dõi và hạn chế hơn trong mệnh đề WHERE để tìm lại hoặc cập nhật (hoặc xóa). Nó cũng có thể là một trong những phân đoạn quan trọng có thể đã thay đổi trong thời gian chờ đợi !. Với một phím thay thế, luôn luôn chỉ có một giá trị duy trì (ID thay thế) và theo định nghĩa, nó không thể thay đổi, mà đơn giản hóa tình hình đáng kể. *
Bạn có thể trích dẫn nguồn của mình không? Tôi sử dụng cả hai: khóa tổng hợp và khóa chính ID dựa trên trình tự. Đôi khi người ta thích hợp hơn người kia. – FrustratedWithFormsDesigner
Bạn đang sử dụng ORM nào mà những người ủng hộ luôn sử dụng các phím đơn giản trên các phím tổng hợp? Tôi đã không bao giờ gặp phải một ORM mà không chơi độc đáo với các phím tổng hợp. Theo hiểu biết của tôi, không có lý do chính đáng để đưa ra ví dụ một bàn giao nhau một chìa khóa thay thế của riêng nó. –
@FrustratedWithFormsDesigner @Iain Galloway Tôi đọc điều này trong khi học Doctrine và bây giờ tôi gặp phải điều tương tự khi học Ruby trên đường ray. Hãy cho tôi biết nếu bạn muốn số trang chính xác của cuốn sách mà dòng này được viết .. Tôi là người mới bắt đầu Vì vậy, tôi yêu cầu cho điều thực sự. Không phải qua questiong hoặc tranh luận về điều này. Có nghĩa là tại sao họ đang sử dụng trường ID này. ?? –