14. 데이터베이스
SQL 문법과 그 변종들
- 묵시점(implicit) JOIN과 명시적(explicit) JOIN은 둘다 동등함.
- 어느 쪽을 사용할 것이냐는 개인 취향의 문제임.
비정규화 vs. 정규화 데이터베이스
- 정규화 데이터베이스는 중복을 최소화하도록 설계된 데이터베이스임.
- 대신 상당수의 일상적 질의를 처리하기 위해 JOIN을 많이 하게 되는 단점이 있음.
- 비정규화 데이터베이스는 읽는 시간을 최적화하도록 설계된 데이터베이스임.
- 대신 데이터베이스에 데이터를 중복해서 저장할 수 있음.
소규모 데이터베이스 설계
- 면접장에서 데이터베이스를 설계해 보라는 요청을 받을 수 있음.
1단계 : 모호성 처리
- 데이터베이스에 관계뙨 문제는 모호한 부분이 내포되어 있음.
- 설계 시작 전, 정확히 무엇을 설계해야 하는지 이해해야 함.
2단계 : 핵심 객체 정의
- 시스템의 핵심 객체가 무엇인지 살펴봐야 함.
- 보통 핵심 객체 하나당 하나의 테이블을 사용함.
3단계 : 관계 분석
- 핵심 객체의 윤곽을 잡고 나면 어떻게 테이블을 설계해야 할 지 감을 잡을 수 있음.
4단계 : 행위 조사
- 세부적인 부분을 채워 넣어야 함.
- 흔하게 수행될 작업들을 살펴봄.
- 관련된 데이터를 어떻게 저장하고 가져올 것인지 이해해야 함.
대규모 데이터베이스 설계
- 대규모 확장성이 높은 데이터베이스를 설계할 떄 JOIN 연산은 일반적으로 아주 느리다고 간주해야 함.
면접 문제
14.4 JOIN
- 서로 다른 종류의 JOIN은 어떤 것들이 있는가? 각각이 어떻게 다르고 어떤 상황에서 어떤 JOIN과 어울리는지 설명하라.
14.5 비정규화
- 비정규화(denormalization)란 무엇인가? 그 장단점을 설명하라.
14.7 성적 데이터베이스 설계
- 학생들의 성적을 저장하는 간단한 데이터베이스를 생각해 보자. 이 데이터베이스를 설계하고, 성적이 우수한 학생(상위 10%) 목록을 반환하는 SQL 질의문을 작성하라. 단, 학생 목록은 평균 성적에 따라 내림차순으로 정렬되어야 한다.
댓글