본문 바로가기
데이터베이스

키(key)란?

by 정구지개발자 2024. 12. 31.
728x90

의미)

속성에 의미를 부여

 

ex) 속성-> id, name, addr, age, (id,name), (id,addr), (id,age)....

 

종류)

기본키(primary key)

1. unique 특성을 가진다. 

2. index가 형성된다.

한문장 정리-->중복되는 값을 가지지  않으며 데이터를 쉽게 찾을 수있게 한다.( 내생각)

-> 하나의 튜플을 유일하게 식별할 수 있는 속성을 의미하는게 unique 따라서 튜플을 unique 하게 구분할수있다 (확장성생각) 

 

외래키(foreign key)

1. 중복 가능 

2. 기본키 참조

3. null 값 가능

4. 외래키 사용이유-> 데이터 중복을 최소화 하게 정규화를 하기 위해서 사용한다. 

 

ex)다음과 같은 테이블이 있을 경우 문제가 생길 수 있다.  pk는 id 이다 

id name addr age car
a 홍길동 aaa 12 123
b 머시기 bb 44 242
c 아이유 ccc 30 3333
c 아이유 ccc 30 4444

 

이때 id 가 중복되게 나오기 떄문에 crud 부분에서 문제가 생길수 있다 해결할려면?

따로 테이블을 만들어서 외래키가 기본키를 참조하도록 만든다

<member table>

id name addr age
a 홍길동 aaa 12
b 머시기 bb 44
c 아이유 ccc 30

<car table>

no(pk) car id
1 3333 c
2 4444 c
3 123 a

 

바로 위 테이블에서 id는 외래키가 된다.  외래키는 중복이 가능하다

만약에 member table에서 id c의 자료가 삭제된다면 car table 의 id c인 부분은 null 로 바뀐다

따라서 외래키는 1. 중복허용 2. null값 가능 3. 기본키 참조 라는 성격을 가진다. 

 

또한 member table -> 부모 릴레이션 car table -> 자식 릴레이션

 

 

만약에 car를 pk라고 정한다면 문제가 될수 있는 부분 -> 하나의 car를 두명이서 공유하고 있다면 car가 중복될수있으므로 pk라고 할수 없다

만약에 id를 pk 라고 정한다면 문제가 될수 있는 부분 -> 한명당 하나의 car만 가지고 있어야 하지만 그렇지 않기 때문에 중복이 되므로 pk 라고 할수 없다. 

 

 

 

728x90

'데이터베이스' 카테고리의 다른 글

정규화란? 정규화종류(1NF, 2NF, 3NF, BCNF, 4NF, 5NF)  (4) 2025.01.02
무결성이란?  (0) 2024.12.31
인덱스란?  (0) 2024.12.31
스키마, 인스턴스  (0) 2024.10.25
soft delete(논리 삭제) && hard delete(물리 삭제)  (0) 2024.04.30

댓글