JOHOONDAY
본문 바로가기
728x90

전체 글140

SQL study [21.08.15] SQL study [21.08.15] 반 정규화 * 간단한 정의 : 성능 향상을 위해 정규화를 포기하는 것 이다. * 성격 : 데이터의 무결성이 보장되는 것은 아니므로 제한적으로 사용을 해야한다. 테이블 반 정규화 테이블 병합 - 비즈니스 로직 상 join 되는 경우가 많아서 통합하는 것이 성능 측면에서 유리할 경우 고려된다. - 종류 a) 1:1 관계 테이블 병합 b) 1:N 관계 테이블 병합 c) 슈퍼 서브 타입 테이블 병합 테이블 분할 - 종류 a) 수직 분할 : Column 단위로 테이블을 1:1 분리 b) 수평 분할 : Row 단위로 테이블을 분리 테이블 추가 - 종류 a) 중복테이블 추가 : 타 업무 또는 타 서버에 있는 테이블과 동일한 구조의 테이블을 추가. 원격 join 방지 b) 통계테이.. 2021. 8. 15.
SQL study [21.08.14] SQL study [21.08.14] 데이터 모델 성능 저하의 대표적인 원인 1. 데이터 모델 구조에 의한 성능의 저하 2. 대용량이 됨으로 인한 불가피한 성능의 저하 3. 인덱스의 특성을 고려하지 않은 상태로 인덱스를 생성함에 따른 성능의 저하 - 성능 : 일반적으로 데이터 조회의 성능을 의미한다. -> 데이터 입력/수정/삭제는 일시적이고 빈번하지 않으며 단건 처리가 많지만 데이터 조회는 반복적이고 빈번하며 여러건을 처리하는 경우가 많기때문 -> 그렇다 하더라도 데이터 입력/수정/삭제가 중요한 경우도 있는 것 이다! 성능 데이터 모델링 - 데이터 베이스 성능향상을 목적으로, 설계단계의 데이터 모델링 때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인 구조, PK, FK 등 여러가지 성능과 관련.. 2021. 8. 15.
백준 NO.13537 [수열과 쿼리 1] Baekjoon Online Judge No.13537 [수열과 쿼리 1] 문제 13537번: 수열과 쿼리 1 (acmicpc.net) 13537번: 수열과 쿼리 1 길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오. i j k: Ai, Ai+1, ..., Aj로 이루어진 부분 수열 중에서 k보다 큰 원소의 개수를 출력한다. www.acmicpc.net 설명 * 정렬 * 인덱스드 트리 * 세그먼트 트리 (Segment tree) 세그먼트 트리, 인덱스드 트리를 이용하여 풀 수 있으며 이번에는 인덱스드 트리를 통해 풀어보았다. 세그먼트 트리나 인덱스드 트리에서 가장 중점은 트리의 노드를 어떻게 정의하느냐 인 것 같다. 이번 문제에선 각 트리의 노드.. 2021. 8. 14.
SQL study [21.08.13] SQL study [21.08.13] 두 개의 엔터티 사이에 정의된 관계(Relationship) 체크 사항 1. 두 엔터티 사이 관심 있는 연관규칙 존재 여부 2. 두 엔터티 사이 정보 조합 발생 여부 3. 업무기술서, 장표에 관계연결을 가능하게 하는 동사(Verb)가 있는지에 대한 여부 4. 업무기술서, 장표에 관계연결에 대한 규칙이 서술되어있는지 여부 식별자 (Identifier) - 엔터티 내에서 대표성을 가지는가에 따라 주식별자 / 보조식별자로 구분 - 엔터티 내에서 스스로 생성이 되었는지 여부에 따라 내부식별자 / 외부식별자로 구분 - 단일 속성으로 식별이 되는가에 따라 단일식별자 / 복합식별자로 구분 - 대체 여부 (업무에 의한 식별자인지) 에 따라 본질식별자 / 인조식별자로 구분 주식별자 .. 2021. 8. 14.
백준 No.14427 [수열과 쿼리 15] Baekjoon Online Judge No.14427 [수열과 쿼리 15] 문제 14427번: 수열과 쿼리 15 (acmicpc.net) 14427번: 수열과 쿼리 15 길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오. 1 i v : Ai를 v로 바꾼다. (1 ≤ i ≤ N, 1 ≤ v ≤ 109) 2 : 수열에서 크기가 가장 작은 값의 인덱스를 www.acmicpc.net 설명 * 세그먼트 트리 (Segment tree) 기본적인 세그먼트 트리 자료구조를 통해 풀 수 있는 문제이다. 1. 트리의 노드들에 그 노드에 해당하는 수열의 영역 내에서 최소값을 가지는 원소의 {값, 인덱스} 를 저장한다. 최소값을 저장하는 조건은 문제의 요구대로 아래.. 2021. 8. 13.
SQL study [21.08.12] SQL study [21.08.12] 수정 이상 - 중복되는 데이터 중 일부만 갱신되어 정보에 모순이 발생하는 것 이다. - 100학번의 홍길동 학생이 개명을 했지만 100학번 운영체제 key에 해당되는 data는 이름이 변경이 되었지만, 100학번 객체지향프로그래밍 key에 해당되는 data는 이름이 변경되지 않았다. 삽입 이상 - 불필요한 정보를 함께 저장하지 않는다. - 어떠한 정보를 저장하는 것이 불가능하기에 원하지 않는 정보를 강제 삽입해야 하는 것 - 기본 키에는 NULL값을 저장할 수 없다. 따라서 최자바 학생을 수강 릴레이션에 삽입하고자 한다면 가상의 과목명이라도 임시로 삽입해야 한다. 삭제 이상 - 어떠한 정보를 삭제하고자 하지만 유용한 정보를 전부 삭제하게 되는 경우 - 운영체제라는 과.. 2021. 8. 13.
엔터티 (Entity) 엔터티 (Entity) 정의 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것 이다. 업무 활동상 지속적인 관심을 가지고 있어야 할 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합으로 정의할 수 있다. 설명 엔터티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성(Attribute)를 갖는다. 어떠한 엔터티에 대해서 그에 해당되는 인스턴스들을 표현한 것을 속성이라고 한다. 엔터티는 Generic 한 특성을 가지고 Instance는 Specific한 특성을 가진다. 마치 OOP에서 class / object 의 관계를 나타내는 것 과 비슷하다. 엔터티의 특징 1. 반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다. 2. 유일한 식별자에 의해 식별이 가능.. 2021. 8. 12.
백준 No.8980 [택배] Baekjoon Online Judge No.8980 [택배] 문제 8980번: 택배 (acmicpc.net) 8980번: 택배 입력의 첫 줄은 마을 수 N과 트럭의 용량 C가 빈칸을 사이에 두고 주어진다. N은 2이상 2,000이하 정수이고, C는 1이상 10,000이하 정수이다. 다음 줄에, 보내는 박스 정보의 개수 M이 주어진다. M은 1이 www.acmicpc.net 설명 * 그리디 알고리즘 (Greedy algorithm) * 정렬 (Sorting) 그리디 알고리즘을 통해 풀 수 있는 문제이다. 그리디 알고리즘으로 이 문제를 푼다면? 택배차는 되는만큼 박스를 싣는다고 생각하면 된다. 단, 택배차의 최대 적재 개수가 있으므로 그 적재 개수를 고려하면서 되는만큼 실어야 한다. 잘 생각을 해 보면, .. 2021. 8. 12.
SQL study [21.08.11] SQL study [21.08.11] DB : Data Base - 대규모의 정보를 사용하고 관리할 수 있도록 체계적으로 관리한 것 - 필요에 의해 데이터를 일정한 형식으로 저장을 해 놓은 것을 DB라고 한다. DBMS : Data Base Management System - 사용자가 정보를 편리하고 효과적으로 검색하고 저장할 수 있는 환경을 제공 해 주고 있다. - 정보를 안전하게 저장할 수 있도록 해 주는 시스템 모델링 (Modeling) - 추상화 : 현실 세계를 일정한 형식에 맞추어 표현한다. - 단순화 : 복잡한 현실을 제한된 언어나 표기법을 통해 이해하기 쉽게 만든다. - 정확화 : 애매모호함을 배제하고 누구나 이해가 가능하도록 정확하게 현상을 기술한다. 데이터 모델링 (Data Modelin.. 2021. 8. 11.
백준 No.2887 [행성 터널] Baekjoon Online Judge No.2887 [행성 터널] 문제 2887번: 행성 터널 (acmicpc.net) 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 설명 최소 스패닝 트리(최소 스패닝 트리 / 최소 신장 트리 (MST)) 를 통해 풀 수 있는 문제이다. 각 정점끼리의 간선의 가중치의 값은 두 정점의 거리에 따른다. 결국 모든 정점 사이에 간선이 존재하게 된다. 정점의 수는 최대 100,000 개 이기 떄문에 이 때 총 간선의 수는 약 (100,000^2) .. 2021. 8. 10.
최소 스패닝 트리 / 최소 신장 트리 (MST) 최소 스패닝 트리 / 최소 신장 트리 (MST : Minimum Spanning Tree) by Kruskal Algorithm & Prim Algorithm 정의 최소 스패닝 트리(최소 신장 트리, MST : Minimum Spanning Tree)란, 모든 노드들이 가중치가 있는 무방향 간선에 연결이 되어있을 때, 모든 노드들을 연결하는 방법 중 사이클이 없으면서 가중치의 합이 최소가 되는 트리를 의미한다. 좌측과 같은 그래프가 있다고 할 때, 최소 스패닝 트리은 우측의 빨간 간선들로 이루어진 그래프가 된다. 완성된 최소 스패닝 트리는 모든 노드들이 전부 연결이 되어있으며, 사이클이 존재하지 않는다. 또한 V개의 정점을 가진 그래프라고 할 때, 최소 스패닝 트리는 V - 1 개의 간선을 가진 트리가 .. 2021. 8. 9.
백준 No.17070 [파이프 옮기기 1] No.17070 [파이프 옮기기 1] 문제 17070번: 파이프 옮기기 1 (acmicpc.net) 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 설명 동적할당(DP : Dynamic programming) 을 이용하여 풀 수 있는 문제이다. 점화식을 위한 dp 배열은 3차원으로 선언을 하였다. dp[ i ][ j ][ k ] == (i, j) 좌표로 오는 파이프가 k 방향에서 올 수 있는 경우의 수 (k == 1 인 경우는 좌측, k == 2 인 경우는 위, k == 3 인 경우는 .. 2021. 8. 8.
MySQL 정수 타입 (Integer types) MySQL 정수 타입 (Integer types) 2021. 8. 6.
백준 No.3830 [교수님은 기다리지 않는다] Baekjoon Online Judge No.3830 [교수님은 기다리지 않는다] 문제 3830번: 교수님은 기다리지 않는다 (acmicpc.net) 3830번: 교수님은 기다리지 않는다 교수님의 질문 (? a b)이 입력으로 들어올 때 마다, 지금까지 측정한 결과를 바탕으로 a와 b의 무게 차이를 계산할 수 있다면, b가 a보다 얼마나 무거운지를 출력한다. 무게의 차이의 절댓값이 1,000, www.acmicpc.net 설명 유니온 파인드 (2021.08.06 - 유니온 파인드 (Union Find, Disjoint set))알고리즘을 이용하여 샘플(노드)을 추가해야 하는 경우엔 추가하고 두 샘플의 무게를 비교할 땐 비교를 해야한다. 유니온 파인드 알고리즘은 노드들간의 그룹 여부를 알 수 있는 알고리즘.. 2021. 8. 6.
유니온 파인드 (Union Find, Disjoint set) 유니온 파인드 (Union Find, Disjoint set) 정의 유니온 파인드(Union Find) 는 서로소 집합(Disjoint-set) 이라고도 불린다. 이는 집합 혹은 그룹 관리를 효율적으로 할 수 있는 알고리즘 이다. 그룹은 트리의 구조로 관리가 된다. 한 트리에 여러 그룹이 있는 것이 아니라 그룹의 개수만큼 트리가 생성이 되는 것 이다. 설명 위 예시의 경우는 두 가지 트리가 존재한다. 그룹이 두 개 존재하는 경우인 것 이다. 두 노드끼리 같은 그룹인지 아닌지 판단하는 기준은 해당 노드의 루트 노드가 같은지 판단하면 된다. 위 예시에서 2, 4번째 노드는 둘 다 루트노드가 1로 동일하다. 따라서 같은 그룹이다. 하지만 3, 6번째 노드는 각각 루트노드가 1, 5번째 노드이다. 따라서 이 두.. 2021. 8. 6.
728x90