의미)
속성에 의미를 부여
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 라고 할수 없다.
'데이터베이스' 카테고리의 다른 글
정규화란? 정규화종류(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 |
댓글