Sự khác biệt giữa khóa chính và siêu khóa trong DBMS là gì


20

Tôi chưa quen với DBMS và tôi vẫn đang học lý thuyết.

Tôi đang thực sự bối rối với công việc kinh doanh quan trọng này và sau khi googling tôi đã thu hẹp nó xuống chỉ còn 2 khóa tôi không nhận được (khóa chính và siêu khóa).

Tôi có một vài câu hỏi về DBMS. Tôi sẽ biết ơn nếu bạn có thể trả lời chúng cho tôi.

1) Sự khác biệt giữa Khóa chính và Siêu khóa trong DBMS là gì? Đánh giá cao nếu bạn có thể sử dụng một ví dụ toàn diện để giải thích chính xác

2) quan trọng có thể Primary và Super chìa khóa cả có thể kết hợp nhiều cột để tạo thành khóa chính và khóa siêu?

3) Khóa chính là tập con của Super key hay ngược lại?


1
Một điều được che đậy rất nhiều là bản thân bộ tuple (hàng) là một siêu khóa. Vì mục đích là có thể xác định duy nhất hàng, tức là có thể xác định duy nhất bộ dữ liệu có chứa một tổ hợp giá trị cụ thể, nên một cách để làm điều đó là đã có sẵn tất cả các giá trị. Do đó, tuple là một siêu khóa cho chính nó, vì một khi chúng ta biết các giá trị trong bộ dữ liệu, thì rõ ràng chúng ta biết cách tìm ra bộ dữ liệu có các giá trị đó. Thoạt nghe có vẻ ngớ ngẩn nhưng nó thiết lập một giới hạn trên về những gì có thể là một siêu khóa cho một tuple - chính tuple.
Dave

@Dave Tập hợp tất cả các tên cột của một mối quan hệ / bảng (và do đó mỗi bộ / hàng của nó) là một siêu khóa của nó. Không phải "tuple (hàng) chính nó".
philipxy

@philipxy bạn nói đúng và tôi sai chính tả - Tôi đứng sửa. Cảm ơn đã thêm làm rõ.
Dave

Câu trả lời:


23

Một siêu chính chỉ đơn giản là một tổ chức phi-minimal Ứng viên chủ chốt , đó là để nói một với các cột bổ sung không yêu cầu nghiêm ngặt để đảm bảo tính độc đáo của hàng.

Một khoá chính là một tối thiểu Ứng viên chủ chốt , mà là để nói tất cả các cột thành phần được yêu cầu nghiêm ngặt để đảm bảo tính độc đáo.

Là một nhà phát triển / thiết kế cơ sở dữ liệu với 30 năm kinh nghiệm, tôi thậm chí chưa bao giờ nghe cụm từ Super Key cho đến khi tôi thấy câu hỏi này và tìm kiếm nó. Khái niệm về Super Key có vẻ phù hợp hơn với chủ đề về hiệu suất và thiết kế Lược đồ vật lý khi nó trực tiếp ánh xạ tới khái niệm về một chỉ mục không bao gồm duy nhất với các cột bổ sung để cải thiện truy vấn.


3
Điều này khá không chính xác. Bạn đang sử dụng superkey, CK & PK thay cho superkey, superkey & CK thích hợp. Một siêu khóa là một bộ ĐỘC ĐÁO. (Một CK là một siêu khóa "tối thiểu" Nếu nó phải là "CK tối thiểu" thì "tối thiểu" sẽ có nghĩa là "tùy ý".) SQL PK & UNIQUE KHÔNG NULL khai báo các siêu khóa. (SQL PK có thể hoặc không phải là PK.) Superkey rất quan trọng đối với định nghĩa của CK, điều này rất quan trọng để thiết kế bao gồm cả chuẩn hóa. Xem câu trả lời của tôi.
philipxy

1
Ngoài ra, cần có sự hiểu biết về SK để sử dụng Boyce-Codd NF
Tanckom

16

Super Keys: Super key là viết tắt của superset của một phím. Super Key là một tập hợp một hoặc nhiều thuộc tính được lấy chung và có thể xác định duy nhất tất cả các thuộc tính khác.

Ví dụ: chúng tôi đang có bảng

Book (BookId, BookName, Author)

Vì vậy, trong bảng này, chúng ta có thể có

   (BookId)
   (BookId,BookName)
   (BookId, BookName, Author)
   (BookId, Author)
   (BookName, Author)

Là siêu chìa khóa của chúng tôi. Mỗi siêu khóa có thể xác định duy nhất từng bộ dữ liệu (bản ghi).

Khóa ứng viên Khóa ứng viên là một siêu khóa không có bất kỳ thuộc tính dự phòng nào. Nói cách khác, khóa ứng viên là siêu khóa tối thiểu. Ví dụ, trong hình minh họa ở trên

   (BookId)
   (BookName,Author)

Hai khóa này có thể là khóa ứng viên, vì các khóa còn lại đang có các thuộc tính dự phòng. Các phương tiện trong bản ghi siêu khóa (BookId, BookName) có thể được xác định duy nhất bằng cách chỉ bookid và do đó Bookname là thuộc tính dự phòng

Khóa chính: Đây là khóa ứng viên được nhà thiết kế cơ sở dữ liệu chọn để xác định các thực thể trong một tập thực thể. HOẶC Một khóa được sử dụng để xác định duy nhất mỗi bản ghi được gọi là khóa chính.

Từ các khóa Ứng viên ở trên, bất kỳ ai cũng có thể là khóa chính. Và một cái khác không được chọn làm khóa chính sẽ được biết là khóa thay thế


Điều này trả lời câu hỏi và xứng đáng upvote.
srk

Cũng lưu ý rằng một tên khác cho alternative keysecondary keychúng giống nhau. Câu trả lời chính xác!
Wael Alshabani

2

Từ câu trả lời stackoverflow.com này của tôi :

Khóa ứng cử viên là một tập hợp các cột xác định duy nhất các hàng và không chứa tập hợp con nhỏ hơn ("đúng") của các cột xác định duy nhất các hàng.

Superkey là một tập hợp các cột xác định duy nhất các hàng. Vì vậy, một khóa ứng cử viên là một siêu khóa không chứa siêu khóa nhỏ hơn.

Trong SQL, bạn không thể khai báo khóa ứng viên trống. Ngoài ra, UNIQUE KHÔNG NULL và PRIMARY KEY (trong điều khoản của các ràng buộc chỉ có nghĩa là UNIQUE KHÔNG NULL) khai báo các siêu khóa, không phải là khóa mỗi se. Nếu tập hợp cột của khai báo không chứa tập hợp cột nhỏ hơn được khai báo là siêu khóa thì siêu khóa mà khai báo là khóa ứng cử viên.

Từ stackoverflow.com này, câu trả lời của tôi là một bảng đã cho:

Đối với bộ cột X và Y, chúng tôi có thể viết X -> Y . Chúng ta nói rằng X là tập xác định và Y là tập xác định của / trong phụ thuộc chức năng ( FD ) X -> Y.

Chúng ta nói X xác định theo chức năng Y và Y được xác định theo chức năng bởi X. Chúng ta nói X là định thức của X -> Y. Trong {C} -> Y, chúng ta nói C xác định theo chức năng Y. Trong X -> {C} chúng ta nói X chức năng xác định C. Khi X là siêu khối của Y ta nói X -> Y là tầm thường .

Chúng ta nói X -> Y giữ trong bảng T khi mỗi phần phụ của các giá trị cho X luôn luôn / chỉ xuất hiện với cùng một phần con của các giá trị cho Y. Hoặc chúng ta nói X -> Y là FD của / trong T. Khi X là định thức của một số FD trong bảng T, chúng ta nói X là một yếu tố quyết định của / trong T.

Một siêu khóa của bảng T là một tập hợp các cột có chức năng xác định mọi thuộc tính. Một chìa khóa ứng cử viên ( CK ) là một superkey chứa superkey không nhỏ. Chúng ta có thể chọn một CK làm khóa chính ( PK ) và sau đó gọi các khóa thay thế khác của CK . Một cột là số nguyên tố khi nó ở trong một số CK.

(Như tôi đã nhận xét ở đó, "Bốn câu in đậm cho FD, giữ, superkey và CK sẽ có hiệu lực.")

(Một bảng có CK trống bị ràng buộc chứa tối đa một hàng. Một tập hợp cột được xác định bởi tập hợp trống bị ràng buộc có cùng giá trị subrow trong mỗi hàng.)


1

Khóa Một khóa là một hoặc một tổ hợp của nhiều trường. Mục đích của nó là truy cập hoặc lấy các hàng dữ liệu từ bảng theo yêu cầu. Các khóa được xác định trong bảng để truy cập hoặc sắp xếp dữ liệu được lưu trữ nhanh chóng và trơn tru. Chúng cũng được sử dụng để tạo liên kết giữa các bảng khác nhau.

Các loại chìa khóa Các bảng hoặc quan hệ sau đây sẽ được sử dụng để xác định các loại khóa khác nhau.

Khóa chính Thuộc tính hoặc sự kết hợp của các thuộc tính xác định duy nhất một hàng hoặc bản ghi trong một mối quan hệ được gọi là khóa chính.

Khóa phụ Một trường hoặc kết hợp các trường làm cơ sở để truy xuất được gọi là khóa phụ. Khóa phụ là một lĩnh vực không độc đáo. Một giá trị khóa phụ có thể tham khảo nhiều hồ sơ.

Khóa ứng viên hoặc Khóa thay thế Một mối quan hệ có thể chỉ có một khóa chính. Nó có thể chứa nhiều trường hoặc kết hợp các trường có thể được sử dụng làm khóa chính. Một trường hoặc kết hợp các trường được sử dụng làm khóa chính. Các trường hoặc kết hợp các trường không được sử dụng làm khóa chính được gọi là khóa ứng cử viên hoặc khóa thay thế.

Khóa tổng hợp hoặc khóa ghép Một khóa chính bao gồm hai hoặc nhiều thuộc tính được gọi là khóa tổng hợp.

Khóa sắp xếp hoặc khóa điều khiển Một trường hoặc kết hợp các trường được sử dụng để sắp xếp vật lý dữ liệu được lưu trữ được gọi là khóa sắp xếp. Nó còn được gọi là phím điều khiển.

Một superkey là sự kết hợp của các thuộc tính có thể được sử dụng duy nhất để xác định một kỷ lục cơ sở dữ liệu. Một cái bàn có thể có nhiều siêu nhân. Các khóa ứng cử viên là một tập hợp con đặc biệt của các siêu khóa không có bất kỳ thông tin không liên quan nào trong đó.

Ví dụ cho siêu khóa: Hãy tưởng tượng một bảng có các trường Tên, Tuổi, SSN và <Tiện ích mở rộng điện thoại>. Bảng này có nhiều siêu khóa có thể. Ba trong số này là SSN, Gia hạn điện thoại và Tên. Trong số những người được liệt kê, chỉ SSN là khóa ứng viên, vì những người khác chứa thông tin không cần thiết để xác định duy nhất hồ sơ.

Khóa ngoài Khóa ngoại là một thuộc tính hoặc kết hợp các thuộc tính trong mối quan hệ có giá trị khớp với khóa chính trong mối quan hệ khác. Bảng trong đó khóa ngoại được tạo được gọi là bảng phụ thuộc. Bảng mà khóa ngoại mà nó đề cập được gọi là bảng cha.

đối với khóa Siêu tối thiểu tham khảo liên kết này, nó rõ ràng hơn ở đó http://www.answers.com/topic/superkey-1

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.