스키마 설계 및 데이터 구조스키마 설계와 데이터 구조는 데이터베이스의 목적과 사용 방식에 따라 효율적인 구조를 설계하는 과정입니다. 일반적으로 Star Schema, Snowflake Schema와 같은 구조는 데이터 웨어하우스나 분석용 데이터베이스에서 사용되며, OLTP와 OLAP는 각기 다른 데이터 처리 방식에 특화된 시스템입니다.Star Schema와 Snowflake SchemaStar Schema와 Snowflake Schema는 주로 데이터 분석을 위한 데이터베이스 구조에 사용됩니다. 이 두 구조는 분석 성능과 저장 공간 효율성을 중점적으로 고려하여 설계됩니다.1) Star Schema개념: 중심에 사실 테이블(Fact Table)을 두고, 주변에 차원 테이블(Dimension Table)을 ..
위클리 페이퍼는 현재 훈련받고 있는 코드잇 스프린트 데이터 애널리스트 트랙에서 매주마다 훈련생 스스로 프로그래밍 언어, 데이터분석, 통계, 머신러닝 등 특정 주제에 대하여 심화 학습을 할 수 있도록 제출하는 과제입니다.(매주 2~3가지 주제를 스스로 알아보고 학습하여 관련된 내용을 정리하여 후에 취업 활동 간에 경험할 수 있는 기술 면접을 대비함.)22주차에 이어 이번 23주차 위클리 페이퍼의 내용을 소개하겠습니다. 이번 14번째 위클리 페이퍼 주제는1. 데이터베이스 정규화란 무엇인가요? 또, 정규화의 장단점은 무엇인가요?2. 논리적 모델링에서 사용되는 주요 구성 요소인 엔터티, 속성, 관계에 대해 예시를 들어 설명해주세요.1. 데이터베이스 정규화란 무엇인가요? 또, 정규화의 장단점은 무엇인가요? 데..
데이터 모델링 기초 이해데이터베이스 기본 개념데이터베이스(Database):데이터를 조직적으로 저장하고 관리하는 시스템입니다. 다양한 애플리케이션에서 데이터를 효율적으로 접근하고 조작할 수 있도록 구조화되어 있습니다.데이터베이스는 대량의 데이터를 안전하게 저장하고, 빠르게 접근하여 필요한 정보를 제공하는 데 중요한 역할을 합니다.테이블(Table):테이블은 데이터베이스의 기본 구성 요소로, 행(Row)과 열(Column)로 구성된다.각 행은 데이터의 개별 레코드(예: 한 명의 고객)를 나타내며, 각 열은 특정 속성(예: 고객 이름, 전화번호 등)을 나타냅니다.예시: 고객 테이블에서는 각 행이 고객 한 명의 정보를 포함하고, 열은 고객의 이름, 주소, 전화번호 등을 저장합니다.RDBMS(관계형 데이터베이스..
SQL에서는 데이터의 계층적 구조나 자기 참조 관계를 처리하기 위해 계층형 질의와 셀프 조인을 자주 사용합니다. 두 기법은 상위-하위 관계를 다루거나 같은 테이블 내에서 행 간의 관계를 정의하는 데 유용합니다.계층형 질의(Hierarchical Query)계층형 질의는 부모-자식 관계와 같은 계층 구조 데이터를 조회할 때 사용됩니다. 데이터의 상위-하위 관계를 표현하고 탐색하기 위해 주로 재귀적 CTE(MySQL)나 CONNECT BY(오라클)를 사용합니다.계층형 질의의 구성 요소와 키워드부모-자식 관계:데이터의 상위 계층과 하위 계층이 명확히 정의된 구조.예: 직원-관리자 관계, 부서-상위 부서 관계.재귀적 CTE:MySQL 8.0 이상에서 지원.WITH RECURSIVE와 UNION ALL을 사용해 ..
그룹함수SQL에서 ROLLUP, CUBE, GROUPING SETS는 데이터 집계를 확장하여 다양한 차원의 집계 결과를 한 번에 계산할 수 있는 기능입니다. 이를 통해 다차원 분석을 할 때 많은 쿼리를 줄일 수 있어 데이터 요약과 분석에 유용합니다.ROLLUPROLLUP은 GROUP BY와 함께 사용하여 계층적 집계 결과를 계산하는 데 유용합니다.(GROUP BY절에 들어가는 칼럼을 대상으로 하위 그룹피을 수행하는 함수)지정한 열 순서대로 부분 합계를 계산하고, 마지막에 전체 합계를 추가해줍니다.SELECT column1, column2, SUM(column3) AS totalFROM table_nameGROUP BY column1, column2 WITH ROLLUP; 예시:SELECT departme..
집합연산자SQL에서 집합 연산자(Set Operators)는 두 개 이상의 쿼리 결과를 결합하여 하나의 결과 집합으로 표시할 때 사용됩니다.(두 테이블에 대한 집합 연산(합집합, 교집합 등)을 수행하는 연산자)MySQL에서는 주로 UNION, UNION ALL, INTERSECT, EXCEPT(또는 MINUS) 연산자를 통해 이러한 작업을 수행할 수 있습니다.특정한 기준키 없이 두 테이블의 레코드들에 대해서 합집합과 교집합 연산을 수행하므로 두 테이블의 칼럼 구성, 스키마가 동일해야 합니다.UNIONUNION 연산자는 두 쿼리의 결과 집합을 결합하면서 중복된 데이터를 제거합니다. 결과에는 중복되지 않는 고유한 행만 표시됩니다.UNION을 실행하면, 한쪽 테이블 내에서의 중복까지 제거가 됩니다.SELECT..
서브쿼리 문법서브쿼리란?서브쿼리는 메인 쿼리(Main Query) 안에 포함된 서브쿼리(또는 내부 쿼리라고도 함)입니다.SQL문의 내부에 DBMS가 제공하는 다양한 함수를 넣을 수 있는 것과 마찬가지로 함수가 들어갈 수 있는 위치에는 그 위치에 맞는 결과를 반환하는 또 다른 독립적인 SQL문을 서브쿼리라고 합니다.서브쿼리는 메인쿼리의 칼럼 사용 여부에 따라 연관 서브쿼리와 비연관 서브쿼리로 나뉩니다.연관(Correlated) 서브쿼리: 메인쿼리 칼럼을 서브쿼리에서 사용.비연관(Un-Correlated) 서브쿼리: 메인쿼리의 칼럼을 서브쿼리에서 사용하지 않음.서브쿼리는 메인 쿼리의 조건으로 사용되거나, 메인 쿼리에 필요한 값을 제공합니다.괄호 ( ) 안에 작성되며, 일반적으로 SELECT문을 포함합니다.서..
CTE (WITH 문)CTE(Common Table Expressions) 또는 WITH문은 SQL에서 쿼리를 간결하고 구조적으로 작성할 수 있도록 도와주는 기능입니다. CTE는 임시 테이블처럼 사용할 수 있는 쿼리를 정의하여, 복잡한 쿼리를 여러 단계로 나누거나 반복해서 사용할 때 유용합니다.CTE (WITH 문) 개념CTE는 WITH 절을 사용하여 이름이 지정된 쿼리를 미리 정의하고, 이후의 메인 쿼리에서 이를 참조할 수 있도록 합니다. WITH로 정의된 CTE는 일종의 임시 테이블 역할을 하며, 코드 가독성을 높이고 중첩 쿼리를 줄일 수 있어 복잡한 SQL을 더 쉽게 작성할 수 있습니다. 기본 구문WITH cte_name AS ( 서브쿼리)SELECT ...FROM cte_name;cte_na..