PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cột nào cho khóa ngoại:id hoặc bất kỳ cột nào khác và tại sao?

Khóa ngoại phải nhắm mục tiêu khóa chính hoặc ràng buộc duy nhất. Tham chiếu đến khóa chính là điều bình thường vì bạn thường muốn tham chiếu đến một hàng riêng lẻ trong một bảng khác và khóa chính là mã định danh của một hàng trong bảng.

Từ quan điểm kỹ thuật, không quan trọng việc khóa ngoại tham chiếu đến khóa chính hay một ràng buộc duy nhất khác, bởi vì trong PostgreSQL, cả hai đều được triển khai theo cùng một cách, sử dụng một chỉ mục duy nhất.

Đối với các ví dụ cụ thể của bạn, không có gì sai khi có size duy nhất cột vehicle_size là mục tiêu của khóa ngoại, mặc dù nó đặt ra câu hỏi tại sao bạn không tạo size khóa chính và bỏ qua id cột hoàn toàn. Mỗi bảng không cần phải có id là khóa chính dạng số được tạo tự động, ngoại trừ việc có thể có ORM và phần mềm khác mong đợi điều đó.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cú pháp postgresql regexp_matches không hoạt động như mong đợi

  2. trường được trích dẫn CSV chưa kết thúc trong Postgres

  3. quote_ident () không thêm dấu ngoặc kép vào tên cột trước

  4. Thiết lập dữ liệu liên tục cho Carto / Postgresql trên ACI

  5. Django-DB-Migrations:không thể ALTER TABLE vì nó có các sự kiện kích hoạt đang chờ xử lý