본문 바로가기

mysql16

[Database] - 정규화 (1NF, 2NF, 3NF, BCNF) 정규화 (1NF, 2NF, 3NF, BCNF)정규화(Normalization)란정규화란 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정입니다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 됩니다. 이를 구분하여 높아질수록 이상현상은 줄어들게 됩니다.즉, 쉽게 말하면 테이블 간에 중복된 데이터를 허용하지 않는다는 것입니다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있습니다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있습니다.정규화의 장단점1. 정규화 장점데이터베이스 변경 시 이상 현상(Anomaly)을 제거할 수 있습니다.정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장.. 2024. 11. 8.
[프로그래머스 / SQL] - 노선별 평균 역 사이 거리 조회하기 노선별 평균 역 사이 거리 조회하기 - LV.2문제지하철 역 간 거리 정보를 담은 SUBWAY_DISTANCE 테이블이 있습니다.테이블의 컬럼은 LINE, NO, ROUTE, STATION_NAME, D_BETWEEN_DIST, D_CUMULATIVE의 컬럼이 존재하고 각각 호선, 순번, 노선, 역 이름, 역 사이 거리, 노선별 누계 거리를 의미합니다.문제테이블에서 노선별로 노선, 총 누계 거리, 평균 역 사이 거리를 조회하는 SQL문을 작성하는 문제입니다.총 누계 거리는 테이블 내 존재하는 역들의 역 사이 거리의 총 합을 뜻하고 총 누계 거리와 평균 역 사이 거리는 각각 TOTAL_DISTANCE, AVERAGE_DISTANCE로 하고,총 누계 거리는 소수 둘쨰자리에서, 평균 역 사이의 거리는 소수 세.. 2024. 11. 5.
[프로그래머스 / SQL] - 자동차 평균 대여 기간 구하기 자동차 평균 대여 기간 구하기 - LV.2문제자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블이 있습니다.테이블은 HISTORY_ID, CAR_ID, START_DATE, END_DATE의 컬럼이 존재하고 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다.문제테이블에서 평균 대여 기간이 7일 이상인 자동차를자동차 ID와 평균 대여 기간(컬럼명:AVERAGE_DURATION) 리스트를평균 대여 기간은 소수점 두 번째 자리에서 반올림하고결과는 대여 기간을 기준으로 내림차순 정렬, 대여 기간이 같으면 자동차 ID를 기준으로 내림차순 정렬하는 문제입니다.프로그래머스 코드SELECT를 이용하여 조회하고 싶은 컬럼.. 2024. 11. 4.
[프로그래머스 / SQL] - 연도 별 평균 미세먼지 농도 조회하기 연도 별 평균 미세먼지 농도 조회하기 - LV.2문제전국 월별 미세먼지 정도를 담은 AIR_POLLUTION 테이블이 있습니다.AIR_POLLUTION 테이블은 LOCATION1, LOCATION2, YM, PM_VAL1, PM_VAL2의 컬럼이 존재하고 각각 지역구분1, 지역구분2, 측정일, 미세먼지 오염도, 초미세먼지 오염도를 의미합니다.문제는수원지역의 연도 별 평균 미세먼지 오염도와 평균 초미세먼지 오염도를평균 미세먼지 오염도는 PM10, 평균 초미세먼지 오염도는 PM2.5로 하고,값은 소수 셋째 자리에서 반올림하여연도 기준 오름차순 정렬하여 출력하는 문제입니다.프로그래머스 코드우선 조회해야 하는 컬럼을 SELECT 뒤에 작성합니다.여기서 년도는 월과 일을 제외하고 출력되어야 하고 컬럼명은 YEAR.. 2024. 10. 29.
[프로그래머스 / SQL] - 물고기 종류 별 잡은 수 구하기 물고기 종류 별 잡은 수 구하기 - LV.2문제잡은 물고기의 정보를 담고 있는 FISH_INFO 테이블과 물고기의 이름에 대한 정보를 담고 있는 FISH_NAME_INFO 테이블이 있습니다.FISH_INFO 테이블은 ID, FISH_TYPE, LENGTH, TIME의 컬럼이 존재하고 각각 물고기의 ID, 물고기의 종류(숫자), 잡은 물고기의 길이, 물고기 잡은 날짜를 나타냅니다.FISH_NAME_INFO 테이블은 FISH_TYPE, FISH_NAME의 컬림이 존재하고 각각 물고기의 종류(숫자), 물고기의 이름(문자)를 나타냅니다.FISH_NAME_INFO에서 물고기의 종류 별 물고기의 이름과 잡은 수를 출력하는 문제입니다.출력될 때 물고기의 이름 컬럼은 FISH_NAME, 잡은 수 컬럼은 FISH_COU.. 2024. 10. 28.