슈퍼키, 후보키 및 프라이머리 키
어떤 사람이 아래의 간단한 예시로 나의 의심을 풀고 슈퍼키, 후보키, 프라이머리키를 식별할 수 있을까?
나는 그들 사이의 차이점을 설명하는 많은 게시물과 웹사이트들이 있다는 것을 안다.하지만 모두 일반적인 정의인 것 같습니다.
예:
Student (StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber)
위의에서 알 수 .StudentNumber
을 사용하다
하지만 슈퍼키에 대해서는 어떤 속성 조합을 슈퍼키에 묶을 수 있는지 좀 헷갈리네요.
후보 키에 대해서는 어떤 후보 키라도 프라이머리 키로서 적합하기 때문에 그 정의에 혼란이 있습니다.
,, 음, 음, 음 등의 요?PhoneNumber
는 가 될 수 A가 키라고 합니다).PhoneNumber
) 1명의 학생에게만 해당)
설명해 주셔서 감사합니다!
교과서적인 정의를 원하지 않기 때문에 대략적으로 말하면, 슈퍼 키는 행을 고유하게 정의하는 열 집합입니다.
이 세트에는 1개 이상의 요소를 포함할 수 있으며 테이블에는 여러 개의 슈퍼 키를 사용할 수 있습니다.이 작업은 일반적으로 기능 종속성을 통해 수행됩니다.
이 예에서는 다음과 같이 가정합니다.
StudentNumber unique
FamilyName not unique
Degree not unique
Major not unique
Grade not unique
PhoneNumber not unique
이 경우 슈퍼키는 학생 번호를 포함하는 모든 조합입니다.
다음은 슈퍼키입니다.
StudentNumber
StudentNumber, FamilyName
StudentNumber, FamilyName, Degree
StudentNumber, FamilyName, Degree, Major
StudentNumber, FamilyName, Degree, Major, Grade
StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber
StudentNumber, Degree
StudentNumber, Degree, Major
StudentNumber, Degree, Major, Grade
StudentNumber, Degree, Major, Grade, PhoneNumber
StudentNumber, Major
StudentNumber, Major, Grade
StudentNumber, Major, Grade, PhoneNumber
StudentNumber, Grade
StudentNumber, Grade, PhoneNumber
StudentNumber, PhoneNumber
여기서 Phone Number가 (요즘 누가 전화를 공유하는지) 고유하다고 가정하면 위에 열거한 것 외에 다음도 슈퍼키입니다.
PhoneNumber
PhoneNumber, Grade,
PhoneNumber, Major, Grade
PhoneNumber, Degree, Major, Grade
PhoneNumber, FamilyName, Degree, Major, Grade
PhoneNumber, Major
PhoneNumber, Degree, Major
PhoneNumber, FamilyName, Degree, Major
PhoneNumber, StudentNumber, FamilyName, Degree, Major
PhoneNumber, Degree
PhoneNumber, FamilyName, Degree
PhoneNumber, StudentNumber, FamilyName, Degree
PhoneNumber, FamilyName
PhoneNumber, StudentNumber, FamilyName
후보 키는 단순히 "가장 짧은" 슈퍼키입니다.첫 번째 슈퍼키 목록(전화번호가 고유하지 않음)으로 돌아가면 가장 짧은 슈퍼키는 Student Number입니다.
프라이머리 키는 보통 후보 키일 뿐입니다.
슈퍼키는 테이블 내의 가능한 모든 튜플세트에 대해 값이 항상 일의임을 보증하는 속성 세트입니다.
후보 키는 "최소" 슈퍼키입니다.즉, 고유한 슈퍼키 속성의 최소 서브셋을 의미합니다.따라서 후보 키에서 Atribute를 삭제하면 고유하지 않게 됩니다.
프라이머리 키는 후보 키일 뿐입니다.프라이머리 키와 다른 후보 키 사이에는 차이가 없습니다.
속성 이름 목록만 기준으로 키에 대해 가정하는 것은 그다지 유용하지 않습니다.속성 간에 어떤 종속성이 유지되어야 하는지 알아야 합니다.그렇긴 하지만, 당신이 옳다고 생각합니다. Student Number는 당신의 예에서 후보 키가 될 가능성이 높습니다.
캠비움의 대답을 늘어놓는다면PhoneNumber
와 함께 독특하기도 합니다.StudentNumber
그리고나서candidate keys
다음과 같습니다.-{StudentNumber}
,{PhoneNumber}
.
여기서 우리는 추측할 수 없다.{StudentNumber,PhoneNumber}
싱글로서candidate key
왜냐하면 한 가지 속성을 생략하면StudentNumber
우리는 여전히 독특한 속성을 가지고 있다.{PhoneNumber}
따라서, 정의 위반candidate key
.
Primary key:
1개 선택candidate key
하필이면candidate keys
2개 있습니다.candidate keys
우리가 선택할 수 있도록{StudentNumber}
~하듯이primary key
.
Alternate keys:
남은 음식candidate keys
, 선택 후primary key
부터candidate keys
는 대체 키입니다. {PhoneNumber}
.
compound key:
복합 키는 엔티티 오카렌스를 일의로 식별하는2개 이상의 아트리뷰트로 구성된 키입니다.단순 키는 Atribute가 1개뿐인 키입니다.복합 키는 다른 고유한 단순 키 및 비키 속성으로 구성될 수 있지만 다른 복합 키는 포함할 수 없습니다.
composite key:
복합키에는 적어도1개의 복합키와 1개의 속성이 포함되어 있습니다.복합 키에는 단순 키 및 비키 속성도 포함될 수 있습니다.
언급URL : https://stackoverflow.com/questions/8337309/superkey-candidate-key-primary-key
'programing' 카테고리의 다른 글
클래스 소품을 사용하여 재료 UI에서 여러 클래스를 추가하려면 어떻게 해야 합니까? (0) | 2023.02.23 |
---|---|
do_숏코드가 작동하지 않습니다. (0) | 2023.02.23 |
Postgre를 사용하여 데이터 소스를 생성할 때 예외 발생Spring Boot SQL 드라이버 (0) | 2023.02.23 |
레일에서 JSON을 렌더링할 때 관련 모델 포함 (0) | 2023.02.23 |
Json을 반환하지만 원하지 않는 뒤로 슬래시 "\"를 포함합니다. (0) | 2023.02.23 |