본문 바로가기

Database/SQL7

데이터 모델에 대한 좋은 방법 관계형 데이터베이스를 대상으로 데이터 모델을 설계할 때 정답은 없지만 정답에 가까운 방법은 존재한다. 오늘 오전은 그 방법에 대해 정리하려고 한다. 1. 기본키는 필수인가? 관계형 모델은 하나의 레코드가 다른 레코드와 식별되어야 한다. 그렇기 때문에 모든 테이블에는 칼럼 한 개 이상으로 구분된 기본키가 있다. 그런데 가끔 전달받은 데이터베이스의 테이블을 검토하다 보면 논리적으로 고유하다고 판단하여 PK 제약조건을 생성하지 않는 경우가 있다. 이는 상당히 위험해 보인다. 기본키 제약조건은 로우마다 유일한 값을 보장하며 null 값이 없다는 것을 보장해준다. 또 가끔 기본키 자체가 없는 경우가 존재한다. 물론 기본키 자체가 없는 테이블을 만드는 것도 규칙에 어긋나는 것은 아니다. 기본키가 없다고 해도 데이터.. 2022. 11. 26.
SQL 코딩테스트 연습 오랜만에 SQL 코딩 테스트가 하고 싶어졌다. https://school.programmers.co.kr/ 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 간단한 문제 풀이를 하려고 한다. 이번 목표는 SQL의 가독성을 신경 써서 작성하는 연습이다. 1. 강원도에 위치한 생산공장 목록 출력 FOOD_FACTORY 테이블에서 강원도에 위치한 식품공장의 공장 ID, 공장 이름, 주소를 조회하는 SQL문을 작성해주세요. 이때 결과는 공장 ID를 기준으로 오름차순 정렬해주세요. SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FO.. 2022. 10. 17.
[유선생] SQL 개발자 (3) SQL을 작성하기 앞서 우리가 사용할 Relational Database Management System에 대해서 정리할 필요가 있다. 세상에는 수많은 데이터가 있고 현재 데이터를 보관하는 장소는 데이터베이스 서버라는 곳에 데이터를 저장한다. 이 데이터를 저장하는 곳은 여러 가지 콘셉트를 가지고 다양하게 존재한다. 관계형 데이터베이스 객체지향 데이터베이스 XML 데이터베이스 Key-Value Store 계층형 데이터베이스 이 중 관계형 데이터베이스 흔히 RDB라고 불리는 데이터베이스는 관계형 데이터 모델에 기초를 두었다. 관계형 데이터 모델이란 관계 대수(relational algebra)라는 것에서 착안되었는데 바로 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 나타낸다. 관계형 데.. 2022. 2. 12.
[유선생] SQL 개발자 (2) SQL을 공부하다 보면 정규화 및 반정규화라는 개념이 나오는데, 이는 상당히 어려운 개념이다. 데이터베이스만 잡고 살지 않는 이상 한 번의 공부로 익히기엔 양도 꽤 되고 적절한 예시를 찾아도 잘 이해가 되지 않기 때문이다. 이번 챕터는 정규화, 반정규화에 대해서 공부할 것이다. [정규화] * 엔터티 : 사용되는 데이터를 용도별로 그룹화된 식별할 수 있는 객체 엔터티를 정확성과 일관성을 유지하기 위해 작은 단위로 분리하는 과정이다. 정규화 시 얻는 이점은 다음과 같은데 조회 성능 향상, 입력, 수정, 삭제 성능의 향상을 기대할 수 있다. 정규화에는 규칙이 존재한다. 따라서 규칙에 맞는 엔터티를 정규화되었다고 표현할 수 있을 것이다. 1) 제1 정규형 - 모든 속성은 반드시 하나의 값만 가져야 한다. 실제 .. 2022. 2. 4.
SQL 개발자 [유선배] SQL 전문가 정미나 SQL전문가 정미나 안녕하세요, SQL전문가 정미나입니다. 이 채널의 궁극적인 목표는 전공자 포함 Database에 관심이 있는 초보자분들께 조금이나마 도움을 드리는 것입니다. 지금은 어떨지 모르겠지만 제가 학부생 www.youtube.com 매우 꼬꼬마 시절 현재 재직 중인 회사는 모든 비즈니스 로직과 부가기능을 대부분 SP를 활용한다. 데이터베이스를 극도로 활용해 애플리케이션을 만드는 구조인데, 이때 가장 필요한 건 데이터를 추출, 가공, 통계 또는 RDBS의 종류에 따른 고유의 기능, 인덱스, Batch, 패키지 등등 다양한 데이터베이스 기술에 기반한 개념이 필요했다. SQL을 정식으로 공부하지 않았다. 필요할 때만 개념과 동영상을 보면서 이해하고 적용했는데, 이때 .. 2022. 1. 23.
Join 연산을 이용한 select문 조인 질의란 두 개 이상의 테이블에서 테이블 간의 관련성을 이용하여 임시적으로 레코드를 통합한 후 결과를 만들어 내는 질의 기법을 말한다. 즉 질의 결과에 서로 다른 테이블에 존재하는 칼럼들이 포함되어 있을 때 사용한다. 보통 연관성을 표현하기 위해서는 기본키와 외래키를 사용하여 표현한다. 레코드를 결합하는 방식에 따라 크로스조인, 내부 조인, 외부 조인으로 나뉜다. 1. 크로스 조인 크로스 조인이란 레코드를 결합하는 조건 없이 모든 조합의 레코드를 결합하는 관계 대수의 카티션 프로덕트 연산과 동일하다. from절에서 두 개 이상의 테이블이 선택되어 해당 레코드를 결합한다. SELECT COL1,COL2...COLn FROM TABLE1 CROSS JOIN TABLE2 [CROSS JOIN TABLE3... 2021. 2. 27.
MERGE Merge란 여러 테이블의 데이터를 합치는 병합을 의미합니다. 보통 Update와 Insert를 한 번에 할 때도 사용하기도 합니다. 한 테이블에 해당하는 데이터가 있으면 update를 하고 아니면 insert를 하는 식으로 사용됩니다. 만약 merge를 사용하지 않으면 select를 해서 해당 데이터의 존재 유무를 체크를 한 다음에 if update else insert로 분기 처리를 해야 합니다. 문법 MERGE INTO Table 1 USING Table 2 ON (병합 조건절) WHEN MATCHED THEN UPDATE SET 업데이트 내용 DELETE WHERE 조건 WHEN NOT MATCHED THEN INSERT VALUES(칼럼 이름); 위 문법은 TABLE1과 TABLE2의 내용을 합.. 2021. 2. 22.