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. 반정규화
반정규화란? 정규화 해놓은거 다시 부분적으로 되돌려서 데이터 중복을 허용
왜? 조회 성능을 향상시키기 위해
왜 조회 성능이 향상됨? 조인이 줄어들기 때문
단점은? 데이터 중복이 발생하니 일관성 유지가 어려움
'자격증 > SQLD' 카테고리의 다른 글
[SQLD] SQLD 취득 후기 (2) | 2025.04.04 |
---|---|
[SQLD] 공부내용 - 기출 1,2,3회 오답노트 #003 (0) | 2025.03.04 |
[SQLD] 공부 내용 - SQL 기본 및 이해 #002 (0) | 2025.02.11 |