2009-12-03 34 views

Trả lời

9

Điều đó tùy thuộc.

  • Bạn có nhìn thấy dữ liệu của bạn hơn là tập các đối tượng (và cơ sở dữ liệu quan hệ chỉ là một phương tiện lưu trữ) hoặc tập hợp các sự kiện đại diện và phân tích natively bằng đại số quan hệ.

  • Một số ORM/Khung/Công cụ không có hỗ trợ tốt cho các khóa chính đa nguyên. Nếu bạn tình cờ sử dụng một trong số chúng, bạn sẽ cần thêm cột id.

  • Nếu đó chỉ là mối quan hệ nhiều-nhiều mà không có thêm dữ liệu liên quan, tốt hơn là tránh cột id bổ sung và có cả hai cột làm khóa chính.

  • Nếu bạn muốn thêm một số thông tin bổ sung vào liên kết này, sau đó nó sẽ trở thành một cái gì đó nhiều hơn sau đó mối quan hệ nhiều-nhiều của hai thực thể. Vì vậy, nó trở thành thực thể riêng của nó và nó sẽ được thuận tiện hơn nếu nó có id riêng của nó độc lập với các thực thể nó kết nối.

+0

+1 Bao gồm tất cả các cơ sở. – APC

1

Tôi sẽ tạo khóa chính category_id và product_id. Chỉ thêm tăng tự động nếu thứ tự sẽ có liên quan trong các lần sử dụng sau này.

2

Không, hoàn toàn không cần thiết, với điều kiện hai cột này đã thực thi chức năng của khóa chính.

Cột thứ ba này chỉ cần thêm nhiều không gian hơn vào bảng của bạn.

Nhưng ... Bạn có thể sử dụng nó để xem thứ tự các bản ghi của bạn được thêm vào bảng của bạn ở đâu. Đó là hàm duy nhất tôi có thể thấy trong cột này.

2

Bạn không cần thêm cột chỉ mục tăng tự động. Thực hành tiêu chuẩn là chỉ sử dụng hai cột hiện có làm khóa chính của bạn cho các bảng kết hợp M: M như bạn mô tả.

5

Bạn không cần để thêm cột chỉ số tăng thêm tự động, nhưng tôi (có thể là trái với hầu hết những người khác) vẫn khuyên bạn nên làm. Đầu tiên, nó dễ dàng hơn trong chương trình ứng dụng để tham chiếu đến một hàng bằng cách sử dụng một số duy nhất, ví dụ như khi bạn xóa một hàng. Thứ hai, đôi khi nó trở nên hữu ích để có thể biết thứ tự các hàng được thêm vào.

+0

Không sử dụng tính năng autonumber để áp đặt thứ tự thời gian tự nhiên trên các hàng.Những người thực hiện autonumber được tự do triển khai thuật toán phá vỡ mối tương quan này. –

0

Có một câu hỏi khái niệm - là products_categories một thực thể hay đơn giản là một bảng đại diện cho mối quan hệ giữa hai thực thể? Nếu đó là một thực thể thì ngay cả khi không có thuộc tính bổ sung nào, tôi vẫn ủng hộ cho một cột ID riêng cho thực thể đó. Nếu đó là mối quan hệ, nếu có các thuộc tính bổ sung (ví dụ: start_date, end_date hoặc một cái gì đó tương tự), tôi sẽ ủng hộ để có khóa chính nhiều cột.

Các vấn đề liên quan