diff --git a/docs/chapter4/Ch04Keyword.md b/docs/chapter4/Ch04Keyword.md new file mode 100644 index 0000000..0ef503a --- /dev/null +++ b/docs/chapter4/Ch04Keyword.md @@ -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. 반정규화(비정규화) +> 하나 이상의 테이블에 데이터를 중복하여 배치하는 최적화 기법 + + + diff --git a/src/mission/chapter4/ch4_image_01.png b/src/mission/chapter4/ch4_image_01.png new file mode 100644 index 0000000..e3bf483 Binary files /dev/null and b/src/mission/chapter4/ch4_image_01.png differ