Skip to content

Commit

Permalink
Merge pull request #15 from SSUMC-6th/sof/#13
Browse files Browse the repository at this point in the history
[sof] Chapter 4. DATABASE 설계 & AWS RDS 설정
  • Loading branch information
ryogaeng authored May 8, 2024
2 parents 9a4f799 + 1add454 commit 9fe831c
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions docs/chapter4/Ch04Keyword.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Chapter 4. Database 설계 & AWS RDS 설정

#### 유일성 : 하나의 키값으로 튜플을 유일하게 식별할 수 있는 성질을 의미함. (중복X) / 최소성 : 키를 구성하는 속성들 중 꼭 필요한 최소한의 속성들로만 키를 구성하는 성질

# 1. 수퍼키
> 유일성 o, 최소성 x, 유일성의 특성을 만족하는 속성들의 집합. 중복된 값이 존재하지 않는다. 서로 구분만 가능하면 수퍼키라 할 수 있다.
- [학생번호]의 경우 중복되는 경우가 없기 때문에 유일성을 만족하므로 슈퍼키가 될 수 있다.
- [이름,나이,성별]의 경우 이 세가지 모두가 일치하는 사람이 존재할 수 있으므로 유일성을 만족하지 못한다. 따라서 수퍼키로 사용할 수 없다.
- [학생번호,나이,성별]의 경우 학생번호 한가지만으로 각 튜플(레코드,행)을 구별할 수 있기 때문에 유일성을 만족한다. 따라서 수퍼키로 사용할 수 있다.

# 2. 후보키
> 유일성 o, 최소성 o, 수퍼키 중에서 최소성을 만족하는 키를 칭한다. 즉, 유일성과 최소성을 모두 만족하는 속성들의 집합이다.
## 이와 같이 수퍼키가 있다고 할때, [학생번호,나이,성별]의 경우, 학생번호가 있다면 나이와 성별은 특정 학생을 구별할 때 필요없다. 없어도 전혀 문제가 안됨. 여기서 나이와 성별을 제거한 [학생번호]의 경우 최소성을 만족하며 후보키가 될 수 있다.

# 3. 기본키
> 유일성 o, 최소성 o (후보키의 특징)이며 해당 레코드를 식별할 때 기준이 되는 키
- 값의 변동이 잦은 후보키는 기본키로 부적절함
- NULL값을 가질수 있는 속성이 포함된 후보키는 부적절하다.
- 후보키중 단순한 키를 기본키로 선택한다.
- 하나의 테이블에는 반드시 하나의 기본키만 존재한다.

# 4. 외래키
> 테이블간의 관계를 나타낼때 사용하며, 다른 테이블의 기본키를 참조해 외래키로 사용
- 한 테이블의 외래키는 연결되어있는 다른 테이블의 기본키중 하나다.
- 외래키 설정을 따로 하지 않아도 데이터 조회가 가능하지만, 굳이 하는 이유는 데이터 무결성 때문
- 무결성: 데이터가 항상 정확한 값을 유지하는 성질

# 5. 복합키
> 두개 이상의 컬럼을 묶어서 하나의 기본키로 지정하는것
- 기본키는 하나의 테이블에 하나만 존재할 수 있음. 또한 기본키는 하나 이상의 컬럼으로 구성되어 있음
- 기본키가 만약 복합키라면. 복합키 또한 당연히 유일성과 최소성을 만족해야함

# 6. 대체키
> 기본키를 제외한 나머지 후보키들을 의미한다.
# 7. ER다이어그램 (ERD)
> 데이터베이스 구조를 시각적으로 나타내는 도구로 엔터티, 속성, 관계로 표현
## 관계의 cardinality
- 일대일(1:1) : 한 엔티티의 인스턴스가 다른 엔티티의 단 하나의 인스턴스와만 연관될 때 (예: 각 부서에는 하나의 매니저가 있다).
- 일대다(1:N) : 한 엔티티의 인스턴스가 다른 엔티티의 여러 인스턴스와 연관될 때 (예: 한 교수가 여러 코스를 가르칠 수 있다).
- 다대다(N:M) : 한 엔티티의 여러 인스턴스가 다른 엔티티의 여러 인스턴스와 연관될 때 (예: 여러 학생이 여러 코스를 수강할 수 있다).

# 8. 정규화
> 관계형 데이터베이스를 설계할 때 중복을 최소화하는 것
- 1정규화, 2정규화, 3정규화, BCNF는 알고 가자

# 9. 반정규화(비정규화)
> 하나 이상의 테이블에 데이터를 중복하여 배치하는 최적화 기법


Binary file added src/mission/chapter4/ch4_image_01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9fe831c

Please sign in to comment.