1. 스키마란?

데이터 베이스 구조와 제약 조건을 정의하는 설계도 또는 청사진

2. 3층 스키마?

외부, 개념, 내부 (외개인..) 스키마로 나누어져있음

스키마 역할 예시
외부 사용자에게 보여주는 데이터 고객은 본인 계좌만 조회, 직원은 모든 계좌 조회
개념 전체적인 구조 고객,계좌,거래 테이블이 있고, 고객과 연결
내부 물리적으로 저장하는 방식 인덱스, 파일 저장 위치 등 어떻게저장할지..

- GPT 질문 결과

3. 데이터 정규화

NF = 정규형, 정규화가 되었다는 뜻임

 

1NF - 하나의 원자값만 가져야함

예시)

홍길동 ex@email.com,
2ex@email.com

 

홍길동 ex@email.com,
홍길동 2ex@email.com

 

 

하는 이유

- 검색할때 방해됨

 

2NF - 부분 함수 종속 제거

1NF가 만족되었는데, primary key(기본키)가 복합키(2개 이상)인 경우도 있음 / 만약 기본키가 한개면 2NF 할 필요 X

기본키의 일부에만 의존하는 속성이 있어서는 안됨

예시)

회원번호 회원명 프로그램 가격
101 홍길동 헬스 5000
102 김철수 헬스 5000
102 김철수 골프 6000

출처 : https://www.youtube.com/watch?v=Y1FbowQRcmI

여기서는, 기본키(Primary Key)가 없음. (Unique한게 없음)

그래서 복합 기본키 (Composite Primary Key)를 만들 수 있음. 회원번호 속성과 프로그램 속성을 합치면 됨

만약 이런 상황에서 2NF를 진행하겠다고 하면, 가격 컬럼이 프로그램에 종속됨

가격 컬럼을 제거 (새로운 테이블에서 만들어주기) 하면됨

결과)

회원번호 회원명 프로그램
101 홍길동 헬스
102 김철수 헬스
102 김철수 골프
헬스 5000
골프 6000

 

하는 이유

- 안해놓으면 헬스 가격이 바뀌면 헬스 프로그램 - 가격을 하나하나 다 바꿔줘야함

 

3NF - 이행 함수 종속 제거

2NF가 만족된 상태에서, 기본키가 아닌 속성이 또 다른 기본키가 아닌 속성에 의존하면 안됨

즉, 키가 아닌 속성끼리 종속되면 안된다는 뜻

프로그램 강사 출신대
스쿼시 김철수 서울대
골프 김영희 연세대
헬스 김바둑 고려대
피티 김바둑 고려대

 

여기서 키는 "프로그램"이라고 했을때, 강사와 출신대는 키가 아닌데 종속관계임

(출신대는 강사에게 종속됨)

이 경우, 분리해주는게 3NF

 

하는 이유

- 김바둑씨가 만약 출신대학이 바뀌면 강사 - 김바둑의 출신대학을 하나하나 다 바꿔줘야함

 

4. 식별관계 vs 비식별관계

식별관계

부모 테이블의 기본키가 자식 테이블의 기본키 일부로 포함됨

예시 ) 

학생 , 성적 테이블 관계

학생 없이는 성적이 존재할 수가 없음

따라서, 식별관계임.

- Strong 결합 관계

비식별관계

부모 테이블의 기본키가 자식 테이블의 외래키로만 들어가고, 기본키에는 포함되지 않음

예시 )

학생, 장학금 테이블 관계

학생이 없어도 장학금이 존재할 수도 있음

따라서, 비식별관계

Weak 결합 관계

 

5. 반정규화

반정규화란? 정규화 해놓은거 다시 부분적으로 되돌려서 데이터 중복을 허용

왜? 조회 성능을 향상시키기 위해

왜 조회 성능이 향상됨? 조인이 줄어들기 때문

단점은? 데이터 중복이 발생하니 일관성 유지가 어려움

+ Recent posts