기본키 편집하기

이동: 둘러보기, 검색

경고: 로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다. 로그인하거나 계정을 생성하면 편집자가 아이디(ID)으로 기록되고, 다른 장점도 있습니다.

편집을 되돌릴 수 있습니다. 이 편집을 되돌리려면 아래의 바뀐 내용을 확인한 후 저장해주세요.
최신판 당신의 편집
1번째 줄: 1번째 줄:
[[파일:기본키 표시.png|썸네일|300픽셀|기본키 테이블 표시]]
+
'''기본키'''(Primary Key,PK)는 주 키 또는 프라이머리 키라고 하며, 후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 없으며, 후보키의 성질을 갖는다. 즉, 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키이다. 또한, Null 값을 가질 수 없기 때문에 튜플에서 기본 키로 설정된 속성에 Null 값이 있어서는 안 된다.  
 
+
<ref> , 〈[https://moonibot.tistory.com/61 기본키]〉, 《[database] 키의 개념 및 종류 - 슈퍼키, 후보키, 기본키, 대체키, 외래키》, 2020-01-09</ref>
'''기본키'''<!--기본 키-->(Primary Key; PK)는 '''주 키'''<!--주키--> 또는 '''프라이머리 키'''<!--프라이머리키-->라고 하며, 후보키 중에서 특별히 선정된 키로 중복된 값을 가질 수 없으며, 후보키의 성질을 갖는다. 즉, 유일성과 최소성을 가지며 튜플을 식별하기 위해 반드시 필요한 키이다. 영어 약자로 '''PK'''(피케이)라고 한다. 기본키는 Null 값을 가질 수 없기 때문에 [[튜플]]에서 기본 키로 설정된 속성에 Null 값이 있어서는 안 된다.<ref> , 〈[https://moonibot.tistory.com/61 기본키]〉, 《[database] 키의 개념 및 종류 - 슈퍼키, 후보키, 기본키, 대체키, 외래키》, 2020-01-09</ref> 릴레이션 스키마를 표현할 때 기본키는 속성 아래 밑줄을 그어 표시한다.
+
릴레이션 스키마를 표현할 때 기본키는 속성아래 밑줄을 그어 표시한다.
 +
[[파일:기본키 표시.png|800픽셀|섬네일|가운데|기본키 테이블 표시]]
  
 
==개요==
 
==개요==
키(key)는 [[데이터베이스]]에서 조건에 만족하는 [[튜플]]을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 [[속성]]을 말한다. 키의 종류로는 [[기본키]](Priamry),[[후보키]](Candidate Key),[[대체키]](Alternate Key),[[수퍼키]](Super Key),[[외래키]](Foreign Key)가 있다. 그 중 기본키는 후보키 중에서 선택한 주키(Main Key)로 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다. 속성값으로는 널(Null)값을 가질 수 없으며 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.<ref>〈[https://coding-factory.tistory.com/220 기본키 개요]〉, 《[DB기초] 여러가지 키([[기본키]], [[후보키]], [[외래키]] 등)의 종류와 개념》, 2018-08-14</ref>
+
키(key)는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 애트리뷰트를 말한다. 키의 종류로는 [[기본키]](Priamry),[[후보키]](Candidate Key),[[대체키]](Alternate Key),[[수퍼키]](Super Key),[[외래키]](Foreign Key)가 있다. 그 중 기본키는 후보키 중에서 선택한 주키(Main Key)로 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다. 속성값으로는 널(Null)값을 가질 수 없으며 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.
 +
<ref> , 〈[https://coding-factory.tistory.com/220 기본키 개요]〉, 《[DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념》, 2018-08-14</ref>
  
 
[[파일:키구성.png|500픽셀|섬네일|가운데|키 구성도]]
 
[[파일:키구성.png|500픽셀|섬네일|가운데|키 구성도]]
18번째 줄: 20번째 줄:
 
[고려사항]을 보면 고객 릴레이션에 존재하는 (고객ID)와 (고객이름,주소)라는 두 후보키 중 무엇을 선택하는 것이 좋을까? 인터넷 홈페이지에 고객으로 가입할 때를 보면 고객ID는 꼭 입력해야 하지만 고객이름이나 주소는 입력하지 않아도 되는 경우가 많다. 이런 경우에는 고객이름이나 주소는 널(Null)값을 가질 수 있으므로 (고객ID)를 기본키로 선택하는 것이 좋다.
 
[고려사항]을 보면 고객 릴레이션에 존재하는 (고객ID)와 (고객이름,주소)라는 두 후보키 중 무엇을 선택하는 것이 좋을까? 인터넷 홈페이지에 고객으로 가입할 때를 보면 고객ID는 꼭 입력해야 하지만 고객이름이나 주소는 입력하지 않아도 되는 경우가 많다. 이런 경우에는 고객이름이나 주소는 널(Null)값을 가질 수 있으므로 (고객ID)를 기본키로 선택하는 것이 좋다.
  
* 값이 자주 변경될 수 있는 속성이 포함된 후보키는 기본키로 부적합하다.
+
* 값이 자주 변경될 수 있는 속성이 포함된 푸보키는 기본키로 부적합하다.
기본키는 다른 튜플과 구별되는 값을 가지고 널(Null)값은 허용하지 않으므로 이를 확인하는 작업이 필요하다. 그런데 값이 자주 변경되는 속성으로 구성된 후보키를 기본키로 선택하게 되면 속성 값이 바뀔 때마다 적합 여부를 판단해야 하므로 번거롭다. 그러므로 값이 자주 변경되지 않는 속성으로 구성된 후보키를 기본키로 선택하는 것이 좋다. [고려사항]의 고객 릴레이션에 존재하는 (고객ID)와 (고객이름,주소)라는 두 후보키를 보자. 보통 주소는 고객ID와 이름보다 변경될 가능성이 높다. 그러므로 주소 속성이 포함되지 않는 (고객ID) 후보키를 기본키로 선택하는 것이 좋다.
+
기본키는 다른 튜플과 구별되는 값을 가지고 널(Null)값은 허용하지 않으므로 이를 확인하는 자업이 필요하다. 그런데 값이 자주 변경되는 속성으로 구성된 후보키를 기본키로 선택하게 되면 속성 값이 바뀔 때마다 적합 여부를 판단해야 하므로 번거롭다. 그러므로 값이 자주 변경되지 않는 속성으로 구성된 후보키를 기본키로 선택하는 것이 좋다. [고려사항]의 고객 릴레이션에 존재하는 (고객ID)와 (고객이름,주소)라는 두 후보키를 보자. 보통 주소는 고객ID와 이름보다 변경될 가능성이 높다. 그러므로 주소 속성이 포함되지 않는 (고객ID) 후보키를 기본키로 선택하는 것이 좋다.
  
 
*단순한 후보키를 기본키로 선택한다.
 
*단순한 후보키를 기본키로 선택한다.
25번째 줄: 27번째 줄:
  
 
==활용==
 
==활용==
테이블 생성 시 기본키 삽입방법
+
테이블 생성 시 이본키 삽입방법
 
     CREATE TABLE Member (
 
     CREATE TABLE Member (
 
           ID int NOT NULL PRIMARY KEY,
 
           ID int NOT NULL PRIMARY KEY,
36번째 줄: 38번째 줄:
  
 
==참고자료==
 
==참고자료==
* [https://terms.naver.com/entry.naver?docId=3431150&cid=58430&categoryId=58430 데이터베이스 개론 - 기본키]〉, 《네이버 지식백과》
+
* [database] 키의 개념 및 종류 - 슈퍼키, 후보키, 기본키, 대체키, 외래키〈[https://moonibot.tistory.com/61 기본키]〉, 2020-01-09《Tistory - moonibot》
* moonibot, [https://moonibot.tistory.com/61 (database) 키의 개념 및 종류 - 슈퍼키, 후보키, 기본키, 대체키, 외래키]〉, 《티스토리》, 2020-01-09
+
* [데이터베이스]릴레이션 키 개념&종류&특징〈[https://jhnyang.tistory.com/71 기본키 특징]〉, 2019-02-10《Tistory - 양햄찌가 만드는 세상》
* IT 양햄찌(jhnyang), 〈[https://jhnyang.tistory.com/71 (데이터베이스)릴레이션 키 개념& 종류(기본키, 슈퍼키, 대체키, 복합키, 후보기)&특징, 유일성 최소성이란?]〉, 《티스토리》, 2019-02-10
+
* [DB기초] 여러가지 키(기본키,후보키,외래키등)의 종류와 개념〈[https://coding-factory.tistory.com/220 기본키 개요]〉, 2018-08-14《Tistory - 코딩팩토리》
* 코딩팩토리, [https://coding-factory.tistory.com/220 (DB기초) 여러가지 키(기본키,후보키,외래키등)의 종류와 개념]〉, 《티스토리》, 2018-08-14
+
* 기본키〈[https://terms.naver.com/entry.nhn?docId=3431150&cid=58430&categoryId=58430&expCategoryId=58430 기본키 고려사항]〉, 《Naver 지식백과》
  
 
==같이 보기==
 
==같이 보기==
* [[키 (데이터베이스)|키]]
+
*[[데이터베이스]]
* [[대리키]]
+
*[[릴레이션]]
* [[수퍼키]]
+
*[[대리키]]
* [[외래키]]
+
*[[수퍼키]]
* [[후보키]]
+
*[[외래키]]
* [[릴레이션]]
+
*[[후보키]]
  
{{데이터|검토 필요}}
+
{{프로그래밍|검토 필요}}

해시넷에서의 모든 기여는 다른 기여자가 편집, 수정, 삭제할 수 있다는 점을 유의해 주세요. 만약 여기에 동의하지 않는다면, 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다 (자세한 사항은 해시넷:저작권 문서를 보세요). 저작권이 있는 내용을 허가 없이 저장하지 마세요!

취소 | 편집 도움말 (새 창에서 열림)