반응형

데이터베이스

    Mysql에서 각 유형별 상위 몇건 데이터 가져오는 방법

    Mysql을 공부하면서 특정 컬럼을 그룹으로 나누고 그 그룹별로 상위 N건의 데이터를 출력하는 방법에 대해 알아보았다. MySQL은 Oracle의 그룹별로 시퀀스 번호를 할당하는 ROW_NUMBER()라는 기능이 제공되지 않아 상위 몇개의 데이터를 추출하기 위해서는 Mysql의 세션 변수를 사용하여 구현할 수 있다. 우선 두 개의 테이블이 존재한다고 가정해보자. 첫 번째 테이블은 사용자 정보를 담고 있는 user 테이블이고 두 번째 테이블은 사용자별 구매정보를 가지고 있는 purchase 테이블이 있다고 가정해보자. user 테이블 purchase 테이블 이 때 사용자 ID가 2보다 큰 사용자들을 대상으로 마지막 구매날짜가 최신인 상위 탑 7개를 추출하는 쿼리를 작성해보자. 결론부터 보여주면 다음과 같다..

    파티셔닝의 정의와 종류 그리고 샤딩

    샤딩과 파티셔닝 DB 보안 회사를 다니고 있고 대규모의 서비스가 기본인 현 시대에 파티셔닝과 샤딩에 대해 많이 들었지만 자세히 알지는 못했다. 이번기회에 한번 정리를 해보자. #파티셔닝 파티셔닝은 퍼포먼스, availability, maintainablity를 목적으로 논리적인 데이터를 다수의 엔티티로 분할하는 행위를 뜻한다. 대부분의 DBMS에서 지원하지만 Mysql 5.1 미만에서는 지원하지 않는다. 샤딩 또한 이 파티셔닝의 한 종류이다. 수평 파티셔닝 (horizotal partitioning, Range Based Partitioning) 샤딩과 동일한 의미를 가지며 스키마를 다수의 복제본을 구성하고 각각의 샤드에 샤드키를 기준으로 데이터를 분리하는 것을 말한다. DBA가 데이터의 패턴과 저장공간..

    데이터 모델링 기초 설명

    명칭 설명엔티티 -> 테이블속성 -> 컬럼인스턴스 -> 행 관계도1 대 N 1 대 1 M:N=> 모델링에서 M대 N은 아직 완성되지 않은 모델로 간주하여 1:N으로 전환시키는 작업을 진행하여야 한다. 참여도 표시|| 필수O 선택 => 사원은 부서를 필수로 포함해야하지만, 부서는 사원이 선택이다. 키 표시PK는 ◆ID 또는 ID(PK)와 같이 기재 (주 식별자)FK는 ID(FK)로 기재 Identifying과 Non-Identifying외래 식별자가 관계에 있는 다른 엔티티의 주 식별자의 일부일 경우 Identifying이라 하고 별도일 경우Non-Identifying 이라고 한다. => Identifying => Non-Identifying 요구사항을 통해 엔티티 정의 만들기 엔티티 정의 -> 먼저 명사..

    엔티티 관계와 속성 추출 방법

    새로운 속성으로 주 식별자 선정의 장 단점대출일, 회원번호, 도서관리번호를 주식별자로 가져야 하는 경우, 너무 많은 속성이 주 식별자가 되어 구별하기 어려울 때, 대출 번호라는 새로운 주 식별자를 도입할 수 있다.-> 하지만 새로운 주 식별자를 도입한경우, 다음과 같은 문제가 발생할 수 있다.-> 대출번호가 키가 되는경우 대출일, 회원번호, 도서관리번호가 중복된 데이터가 있을 수 있다.-> 새로운 개념의 속성을 만들어 주식별자로 지정할 경우 단점과 장점이 있으니 잘 사용해야 한다. 필요없는 속성을 주 식별자로 지정하는 경우.필요없는 속성이 주 식별자가 되는 경우, 문제가 발생할 수 있다.제품번호와 제품가격이 주 식별자가 되었을 때, 제품번호별로 제품가격은 하나여야 하는데 서로 다른 데이터가 존재할 수 있..

    정규화를 고려한 모델링

    정규화정규화는 ERD 내에서 중복을 찾아 제거해 나가는 과정을 말한다. 관계형 데이터베이스 모델의 기본은 동일한 정보는 한곳에서만 관리하는 것이다. 제 1정규화엔티티에서 하나의 속성이 복수의 값을 갖도록 설계 되었을 때 이를 단일 값을 갖도록 하는 것이다. 정규화 전.사원번호 취미1001 등산, 낚시1002 테니스, 등산 정규화 후사원번호 취미1001 등산1001 낚시1002 테니스1002 등산 다음과 같은 사유도 동일하게 제 1정규화 대상이 된다.사원번호 취미1 취미2 취미31001 등산 낚시 1002 테니스 1003 테니스 운동 독서 해당 테이블 구조는 단일 값을 가지고 있기 때문에 아무 문제가 없어보이지만, 동일한 성격을 가지는 데이터를 다른 속성에 저장하는 것도 문제가 된다. 제 2정규화제 2정규..

    설계시 도메인 고려 방법 및 완성된 ERD 검토

    도메인도메인은 엔티티의 속성들이 가질 수 있는 값들의 집합.DBMS에서 도메인이란 엔티티와 속성에 대응하는 테이블의 컬럼에 대한 데이터 타입과 길이를 의미 도메인 추출 및 데이터 타입 추출방법1. 테이블에 구성될 컬럼들을 나열한 후 테이블의 도메인을 먼저 지정한다.대출일 - 날짜우수회원여부 - 예아니오회원이름 - 회원이름 2. 도메인에 맞는 데이터 타입을 지정한다.대출일 - date우수회원여부 - char(1)회원이름 - varchar(20) ERD 검토 1. 엔티티 검토 1) 엔티티가 적절히 구성되었는지의 여부 2) 엔티티의 주 식별자가 적절히 선정되었는지 여부 -> 주식별자에 불필요한 요소가 없는지 -> 인스턴스의 유일성을 보장해 주는지 3) 유사한 내용을 관리하는 엔티티가 없는지 -> 분리, 통합이..

반응형