Định nghĩa về chỉ số chính và chỉ số phụ còn thiếu độ chính xác.
Sử dụng hai văn bản đại học phổ biến làm tài liệu tham khảo:
Nguyên tắc cơ bản về hệ thống cơ sở dữ liệu, Elmasri &Navathe định nghĩa chúng là:
Hệ thống cơ sở dữ liệu:Toàn tập, Garcia-Molina et. al định nghĩa chúng là:
Một số thuộc tính đúng với một trong hai định nghĩa ở trên:
- khóa chính có thể là chỉ số chính
- có thể có nhiều nhất 1 chỉ mục chính cho mỗi bảng
- các chỉ số chính xác định duy nhất nơi lưu giữ bản ghi trong bộ nhớ thực.
- Tất cả các chỉ số khác được phân loại là thứ yếu.
Tuy nhiên, nếu vị trí của các bản ghi trong tệp dữ liệu không được xác định bởi bất kỳ trường nào, thì không thể tạo chỉ mục chính.
Vì vậy, đối với các tệp được sắp xếp, sẽ có ý nghĩa khi nói về chỉ mục chính (sẽ là danh sách các trường dựa trên đó việc sắp xếp). Tôi không thể tìm thấy các ví dụ khác về cấu trúc tệp vật lý nơi có thể tạo chỉ mục chính.
Postgresql sử dụng cấu trúc heap để lưu trữ vật lý cho các bản ghi. Các đống không được sắp xếp (cảnh báo chơi chữ:chúng đã được sắp xếp). Do đó, ngay cả các khóa chính cũng được triển khai bằng cách sử dụng các chỉ số phụ và như vậy tất cả các chỉ số trong Postgresql đều là khóa phụ.
Các hệ thống RDBMS khác do triển khai các định dạng lưu trữ hỗ trợ các chỉ số chính:
- Mysql's InnoDB gọi đây là chỉ mục nhóm
- MSSQL cũng đề cập đến chỉ mục gốc dưới dạng chỉ mục được phân nhóm
- Oracle gọi đây là bảng được tổ chức theo chỉ mục
Ngôn ngữ trong Tài liệu Postgres không chính xác.
Điều này đúng.
Đây không phải là lý do tại sao tất cả các chỉ số đều là thứ yếu trong Postgresql. Các chỉ số chính cũng có thể được lưu trữ riêng biệt với vùng dữ liệu chính của bảng.