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

Làm thế nào và tại sao phải thêm khóa chính vào bảng cơ sở dữ liệu SQL của tôi khi tôi đã có một chỉ mục

Khóa chính là một ràng buộc chỉ định rằng các giá trị trong (các) cột của nó phải là duy nhất (lẫn nhau) và không được rỗng. Điều này để đảm bảo có thể xác định duy nhất mọi hàng trong bảng, điều này hữu ích nhất khi muốn tạo các khóa ngoại tham chiếu đến bảng này. Nó vẫn đáng có nếu bạn không có các bảng khác, vì nó sẽ ngăn bảng của bạn rơi vào trạng thái xấu, ví dụ:bạn có nhiều hơn một giá trị nguồn giống nhau vào một ngày cụ thể.

(Các) trường khóa chính hầu như sẽ luôn có chỉ mục trên đó cũng như chúng thường được sử dụng để tra cứu và tham gia, nhưng hai khái niệm này tách biệt nhau.

Một số DBMS (ví dụ:MySQL, SQL Server) tự động tạo chỉ mục nhóm trên khóa chính, có nghĩa là dữ liệu trong bảng được sắp xếp trên đĩa theo (các) trường bao gồm khóa chính để làm cho các hoạt động phổ biến ở trên nhanh hơn. Tuy nhiên, postgres không thực hiện việc này theo mặc định.

Bạn có thể chỉ định khóa chính khi tạo bảng bằng cú pháp sau:

create table datatable 
(
    date date, 
    yesterday real, 
    today real, 
    tomorrow real, 
    reading real, 
    source varchar,
    PRIMARY KEY (source, date)
)

Bạn cũng có thể thêm một trường số nguyên mới, tự động tăng dần để hoạt động như khóa chính của bạn (thường được gọi là khóa thay thế hoặc khóa nhân tạo ). Bạn có thể muốn làm điều này nếu bạn không có bất kỳ ứng cử viên tốt nào khác trong các mục dữ liệu của mình, nhưng nó cũng có thể có những lợi ích khác (ví dụ:THAM GIA có khả năng nhanh hơn).

create table datatable 
(
    id serial primary key,
    date date, 
    yesterday real, 
    today real, 
    tomorrow real, 
    reading real, 
    source varchar
)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nối một chuỗi và một số trong PostgreSQL

  2. Liệt kê các trợ cấp và đặc quyền cho một chế độ xem cụ thể hóa trong PostgreSQL

  3. Cách sử dụng Joda-Time với java.sql.Timestamp

  4. Làm cách nào để chỉ định cơ sở dữ liệu đang hoạt động hiện tại cho tập lệnh khởi tạo của vùng chứa postgres docker?

  5. Có thể thay đổi thiết kế bảng PostgreSQL bằng LibreOffice Base không?