16일차: ~8.4 셀프체크 (종이책: p.247-264)
상품 유형별 집계. 그룹바이 활용하기
주문 총액 -> 세 테이블을 조인하여 select
상위 3개 튜플만 가져오기
-> group by name order by sum(count) desc, name asc limit 3;
17일차: ~9.2 다양한 위치에서의 서브쿼리 (종이책: p.266-282)
서브쿼리란? -> 쿼리 안의 또 다른 쿼리
1. 중첩구조다
2. 메인쿼리와 독립적으로 실행된다
3. 다양한 위치에서 사용 가능하다
4. 단일 값 또는 다중 값을 반환한다. 단일값은 비교연산자와 다중 값은 in, any, all, exists와 함께 사용
5. 조건 필터링 결과 또는 데이터 집계 결과를 반환한다.
amount - (select avg(amount) from payments) as '평균 결제 금액과의 차이' 이런 식으로도 활용 가능!
SELECT AVG(sub.total_count) as '1회 주문 시 평균 상품 개수'
FROM (
SELECT order_id, SUM(count) AS total_count
FROM order_details
GROUP BY order_id -> 마지막에 ;를 삭제하고
) AS sub ; 여기에 달아야함! !
-> 이런 식으로 from 절에도 서브쿼리가 들어갈 수 있음. but, 별칭이 필수다! 안쓰면 오류 뜸
즉, 테이블을 서브쿼리로 구성해서 넣을 수 있으므로 당연히도 join에도 가능!
18일차: ~9.4 셀프체크 (종이책: p.283~298)
IN, ANY, ALL, EXISTS
IN -> 집합에 포함되는 대상을 찾음
ANY -> 하나라도 만족하는 대상을 찾음 '또는' 조건이 충족하는 대상
ALL -> 모든 요소를 만족하는 대상을 찾음 '그리고' 조건을 충족하는 대상
EXISTS -> 하나 이상의 행을 반환하는 경우 boolean형태로 추출
EXISTS의 경우, 상관쿼리가 존재함. 상관쿼리는 메인쿼리의 각 행에 대해 반복 실행되는 서브쿼리로 서브쿼리가 메인쿼리의 칼럼 값을 참조 ! 또한, 서브쿼리의 select 절에 관련 칼럼을 반환하는 것보다 상수1을 반환하는 것이 성능 면에서 더 좋다.
상관쿼리의 특징
1. 의존성 - 서브쿼리는 메인쿼리의 값을 참조함 (원래 서브쿼리는 독립성을 지님)
2. 반복 실행 - 서브쿼리는 메인쿼리의 각 행에 대해 반복적으로 실행됨
3. 성능 저하 - 메인쿼리의 각 행마다 서브쿼리를 실행하여 성능이 저하됨. 데이터양이 많을 경우 더 심함
NOT EXISTS는 EXISTS의 반대..!
19일차: ~10.3 데이터 모델링 실습: 쇼핑몰 DB (종이책: p.302-327)
데이터 모델링이란 현실 세계의 어떤 사물이나 현상을 추상화(모형화)하여 데이터 간 구조와 관계를 정의한 데이터 모델을 만드는 과정
데이터 모델링의 이점
1. 비즈니스 요구사항을 반영
2. 의사소통 개선에 기여
3. 데이터 무결성을 보장
4. 성능을 최적화
5. 유연한 확장이 가능
6. 비용을 절감
현실세계를 모델링 -> 개념적 데이터 모델링 -> 논리적 데이터 모델링 -> 물리적 데이터 모델링 -> 구현
개념적 모델링: 개체, 관계를 정의하는 과정. 핵심 엔티티를 찾고 관계를 연결
논리적 모델링: 개념적 모델링의 결과 데이터의 세부 내용을 정의하는 단계
물리적 모델링: 특정 DBMS에 맞게 최적화하는 단계
엔티티란, 데이터베이스에서 관리하려는 핵심 대상 쉽게 말해 테이블로 만들어질 대상을 의미함.
속성이란, 컬럼명으로 엔티티의 특성이나 정보를 나타내는 항목
속성에는 식별자가 있다. 인스턴스를 고유하게 식별하는 데 사용하는 속성 또는 속성의 조합
식별자 - 유일성, 불변성, 존재성, 최소성을 만족해야 함
식별자는 기본, 대체, 외래 식별자가 있다. 키와 같은 용어임!
관계란 두 엔티티 간 연결된 방식
카디널리티란, 한 인스턴스가 다른 엔티티 몇개와 연결되는 지를 나타냄
카디널리티에 따라 일대일, 일대다, 다대다 관계가 정의된다.
선택적 관계: 카디널리티가 0부터 시작하며, 관계를 나타내는 직선에 원을 추가
필수적 관계: 카디널리티가 1부터 시작하며, 관계를 나타내는 직선에 수직선을 추가해서 나타냄
물리적 모델링에서 말하는 DBMS는 oracle이나 mysql을 의미함.
20일차: ~10.5 셀프체크 (종이책: p.328-338)
정규화란, 데이터 모델링을 할 때, 데이터가 중복으로 저장되는 것을 최소화하고 무결성을 보장하기 위해 데이터를 구조화하는 작업
제1정규형~ 제5정규형까지 있음.
일반적으로 제3정규형까지 만족하면 충분히 올바른 설계라 할 수 있음
테이블을 잘못 설계했을 경우 anomaly(이상현상)이 발생할 수 있
제1정규형 - 원자화가 핵심. 더 이상 분해할 수 없을 때까지 잘게 속성을 나눠야 함.
제2정규형 - 부분 함수 종속을 제거하는 것이 핵심. 기본키가 아닌 일반속성이 기본키의 전체 속성에 의해 결정되어야 함
완전 함수 종속 -> 일반 속성이 기본키 전체에 종속된 경우
부분함수종속 -> 일반 속성이 기본키의 일부에만 종속된 경우
제3정규형 - 이행적 함수 종속을 제거하는 것. 기본키가 아닌 일반속성은 다른 일반 속성에 의해 결정되지 않아야 한다.
-> 만일 이행적 함수 종속이 생길 경우, 테이블을 나눠야 제거할 수 있음.
'학습 기록 > 코딩 자율학습단 18기' 카테고리의 다른 글
| 코딩 자율학습단 18기 후기 (0) | 2025.12.16 |
|---|---|
| 코딩 자율학습단 18기 SQL 데이터베이스 3주차 (1) | 2025.12.15 |
| 코딩 자율학습단 18기 SQL 데이터베이스 2주차 (0) | 2025.12.15 |
| 코딩 자율학습단 18기 SQL 데이터베이스 1주차 (0) | 2025.11.23 |
| 코딩 자율학습단 참여 및 도서후기 (0) | 2025.11.23 |