tác giả:được viết bởiHerouth Maoz
Lưu ý của biên tập viên:Điều này ban đầu xuất hiện trên thư Liệt kê để trả lời câu hỏi: "Sự khác biệt giữa kèo bóng đá pháp chính và các ràng buộc duy nhất? ".
Chủ đề: Re: [Câu hỏi] kèo bóng đá pháp chính | ĐỘC NHẤT Sự khác biệt giữa: kèo bóng đá pháp chính (trường, ...) và Độc đáo (lĩnh vực, ...) - Đây có phải là bí danh? - Nếu kèo bóng đá pháp chính đã là duy nhất, thì tại sao Có một loại kèo bóng đá pháp khác có tên là duy nhất?
kèo bóng đá pháp chính là (các) trường được sử dụng để xác định một hàng cụ thể. Ví dụ: các số an sinh xã hội xác định một người.
Một sự kết hợp đơn giản của các trường không liên quan gì đến xác định hàng. Nó chỉ đơn giản là một ràng buộc toàn vẹn. Vì Ví dụ, tôi có bộ sưu tập các liên kết. Mỗi bộ sưu tập được xác định bởi một số duy nhất, đó là kèo bóng đá pháp chính. kèo bóng đá pháp này được sử dụng trong quan hệ.
Tuy nhiên, ứng dụng của tôi yêu cầu mỗi bộ sưu tập cũng sẽ có kèo bóng đá pháp cái tên duy nhất. Tại sao? Để kèo bóng đá pháp người muốn sửa đổi kèo bóng đá pháp bộ sưu tập sẽ có thể xác định nó. Nó khó biết hơn nhiều, Nếu bạn có hai bộ sưu tập có tên là "Khoa học cuộc sống", The One được gắn thẻ 24433 là cái bạn cần và cái được gắn thẻ 29882 là không.
Vì vậy, người dùng chọn bộ sưu tập bằng tên của nó. Do đó chúng tôi Hãy chắc chắn rằng, với cơ sở dữ liệu, tên đó là duy nhất. Tuy nhiên, không Bảng khác trong cơ sở dữ liệu liên quan đến bảng bộ sưu tập của Tên bộ sưu tập. Điều đó sẽ rất không hiệu quả.
Hơn nữa, mặc dù là duy nhất, tên bộ sưu tập không Trên thực tế, xác định bộ sưu tập! Ví dụ, nếu ai đó quyết định Thay đổi tên của bộ sưu tập từ "Khoa học cuộc sống" thành "Sinh học", Nó vẫn sẽ là cùng kèo bóng đá pháp bộ sưu tập, chỉ với kèo bóng đá pháp tên khác. Miễn là tên là duy nhất, thì ổn thôi.
Vì vậy:
kèo bóng đá pháp chính:
được sử dụng để xác định hàng và liên quan đến nó.
là không thể (hoặc khó) để cập nhật.
Không nên cho phép nulls.
Trường duy nhất:
được sử dụng như kèo bóng đá pháp quyền truy cập thay thế cho hàng.
có thể cập nhật, miễn là chúng được giữ duy nhất.
nulls có thể chấp nhận được.
Đối với lý do tại sao không có kèo bóng đá pháp không duy nhất nào được xác định rõ ràng trong tiêu chuẩnSQLCú pháp? Vâng, kèo bóng đá pháp phải hiểu Các chỉ số đó phụ thuộc vào triển khai.SQLkhông xác định việc triển khai, chỉ đơn thuần là quan hệ giữa dữ liệu trong cơ sở dữ liệu.Postgreskhông cho phép các chỉ số không đơn độc, nhưng Các chỉ số được sử dụng để thực thiSQLPhím là luôn luôn duy nhất.
Do đó, bạn có thể truy vấn bảng bằng bất kỳ sự kết hợp nào của các cột của nó, Mặc dù thực tế là bạn không có chỉ mục trên các cột này. Các Các chỉ mục chỉ là kèo bóng đá pháp trợ giúp thực hiện mà mỗiRDBMScung cấp cho bạn, để gây ra thường được sử dụng Truy vấn để được thực hiện hiệu quả hơn. kèo bóng đá pháp sốRDBMScó thể cung cấp cho bạn các biện pháp bổ sung, chẳng hạn như Giữ một kèo bóng đá pháp được lưu trữ trong bộ nhớ chính. Họ sẽ có một đặc biệt Lệnh chẳng hạn
Tạo MemStore trên <Bảng Cột <Cols(Đây không phải là kèo bóng đá pháp lệnh hiện có, chỉ là kèo bóng đá pháp ví dụ).
Trên thực tế, khi bạn tạo kèo bóng đá pháp chính hoặc kết hợp duy nhất của các trường, không nơi nào trongSQLĐặc điểm kỹ thuật có nói rằng một chỉ mục được tạo ra, cũng như truy xuất dữ liệu bằng kèo bóng đá pháp sẽ hiệu quả hơn Quét tuần tự!
Vì vậy, nếu bạn muốn sử dụng kết hợp các trường không độc đáo như một kèo bóng đá pháp thứ cấp, bạn thực sự không cần phải chỉ định Bất cứ điều gì - chỉ cần bắt đầu lấy bằng sự kết hợp đó! Tuy nhiên, nếu Bạn muốn làm cho việc truy xuất hiệu quả, bạn sẽ phải dùng đến phương tiện của bạnRDBMSNhà cung cấp đưa ra bạn - có thể là kèo bóng đá pháp chỉ mục, lệnh memstore tưởng tượng của tôi hoặc kèo bóng đá pháp thông minhRDBMStạo ra các chỉ số mà không có kiến thức của bạn dựa trên thực tế là bạn đã gửi nó nhiều truy vấn dựa trên sự kết hợp cụ thể của các kèo bóng đá pháp ... (nó học hỏi từ kinh nghiệm).