관계형 데이터베이스 정규화를 통해 이상 현상을 제거하고 데이터 중복을 피함으로써 데이터 불일치성 문제를 해결한다. 동시성 관리와 병행 제어를 통해 여러 사용자가 동시에 데이터를 공유하고 조작할 수 있다. 메타 데이터를 통해 데이터의 성격, 속성, 표현 방법을 체계화하고 데이터 표준화를 지원한다. 보안 기능을 제공하여 인증된 사용자만이 참조할 수 있도록 한다. 다양한 제약조건을 이용하여 데이터 무결성을 보장하고 오류를 방지합니다. 1970년에 E.F.Codd 박사가 논문에 처음 소개했다. 기존의 파일시스템, 망형(네트워크형 데이터베이스), 계층형 데이터베이스를 대체하는 장점이있다.(데이터 중복제거, 동시성 관리와 병행 제어, 합리적인 테이블 모델링, 보안 기능 제공 등등) DML, DDL, DCL, TCL..
JPA란 ORM(객체 - 관계 자동매핑)중 하나이자 Java Persistence API의 약자로 자바 플랫폼에서 객체와 관계형 데이터베이스를 매핑하고, 객체 지향적인 방식으로 데이터를 영속화 하는 기술이다. 보통 JPA 프레임워크로는 Hibernate를 사용해서 구현한다. ※Hibernate: 자바 언어를 위한 ORM 프레임워크이다. 자바 객체를 통해 데이터베이스가 Oracle, MySql, MSSQL등에 상관없이 다룰수있게 해준다. 이를 통해 개발자는 SQL을 사용하지 않고 메서드 호출만으로 쿼리가 수행된다. JPA구동방식 먼저 persistenc.xml 파일을 조회해서 설정에 맞게 DB를 구상한다. DB에 접근할때 매번 커넥션을 생성해주는 EntityManagerFactory를 생성합니다. Fact..
연산자(Operator) - 연산을 수행하는 기호이다. - 연산을 수행하기 위해선 대상, 바로 '피연산자'가 필요하다. 산술 연산자 산술연산자는 +, -, *, /, %로 이루어져있다. 정수끼리 연산을 하면, 피연산자 중에 long이 있을경우에는 long으로 변환 후 수행, 그 외의 정수는 int로 변환된후 실행된다. 산술 연산자의 오버플로우 오버플로우(Overflow)는 변수가 자신이 표현할 수 있는 범위를 벗어나는 값을 가지게 되는 상항을 말한다. 연산자의 부분에서는 더하기나 곱하기등을 통해 표현할수있는 최대값을 벗어나면 오버플로우가 발생한다. public class Main { public static void main(String[] args) { int a = 1000000; // 1,000,0..
문제 입력 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연결하는 두 노드 중 부모 노드의 번호를 나타내고, 두 번째 정수는 자식 노드를, 세 번째 정수는 간선의 가중치를 나타낸다. 간선에 대한 정보는 부모 노드의 번호가 작은 것이 먼저 입력되고, 부모 노드의 번호가 같으면 자식 노드의 번호가 작은 것이 먼저 입력된다. 루트 노드의 번호는 항상 1이라고 가정하며, 간선의 가중치는 100보다 크지 않은 양의 정수이다. 출력 첫째 줄에 트리의 지름을 출력한다. 풀이 시간복잡도 면에서 주어진 값은 최대 만이고 이중반복문을 돌려도 1억번이라 2초안에 ..
문제 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력 첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력 수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 풀이 시간복잡도 면에서 주어진 수는 10만이다. 따라서 이중for문을..
목표 데이터 모델링 각 성능에 대해 이해하고 학습하기 학습할 것 성능 데이터 모델링의 개요 정규화의 성능 반정규화의 성능 대량 데이터에 따른 성능 데이터베이스 구조와 성능 분산 데이터베이스와 성능 성능 데이터 모델링의 개요 성능 데이터 모델링 DB 성능향상을 위해서 설계단계의 데이터 모델링때부터 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인구조, PK, FK등 여러가지 성능과 관련된 사항이 데이터 모델링에 반영되도록 한다. 데이터 모델은 성능을 튜닝하면서 변경 될 수 있는 특징이 있다. 데이터의 증가가 빠를수록, 성능저하에 따른 성능 개선비용은 증가한다. 분석/ 설계 단계에서 고려한 데이터 모델링을 수행할 경우 성능 저하에 따른 Rework 비용을 최소화 할 수 있는 기회를 갖게된다. 성능을 고려..
목표 자바의 프리미티브 타입 종류와 변수와 배열 선언하는 방법 이해하기 학습할 것 프리미티브 타입 종류와 값의 범위 그리고 기본 값 프리미티브 타입과 레퍼런스 타입 리터럴 변수 선언 및 초기화하는 방법 변수의 스코프와 라이프타임 타입 변환, 캐스팅 그리고 타입 프로모션 1차 및 2차 배열 선언하기 타입 추론, var 프리미티브 타입 자바에는 총 8가지의 프리미티브 타입이있다. 이 표를 보자니 문득 궁금한 점이 있다. 왜 음수가 하나 더 많을까? 사실 양수와 음수 메모리는 동등하고 그렇기에 표현할수 있는 수는 동일하다. 하지만 0을 음수또는 양수 둘중 하나가 처리해야되는과정에서 양수가 담당을 하였다. 따라서 음수가 0을 제외한 수를 하나 더가짐으로써 많아 보일뿐이다. 메모리크기와 값의 범위는 어떤 관계가 ..
문제 4개의 기호 ‘(’, ‘)’, ‘[’, ‘]’를 이용해서 만들어지는 괄호열 중에서 올바른 괄호열이란 다음과 같이 정의된다. 한 쌍의 괄호로만 이루어진 ‘()’와 ‘[]’는 올바른 괄호열이다. 만일 X가 올바른 괄호열이면 ‘(X)’이나 ‘[X]’도 모두 올바른 괄호열이 된다. X와 Y 모두 올바른 괄호열이라면 이들을 결합한 XY도 올바른 괄호열이 된다. 예를 들어 ‘(()[[]])’나 ‘(())[][]’ 는 올바른 괄호열이지만 ‘([)]’ 나 ‘(()()[]’ 은 모두 올바른 괄호열이 아니다. 우리는 어떤 올바른 괄호열 X에 대하여 그 괄호열의 값(괄호값)을 아래와 같이 정의하고 값(X)로 표시한다. ‘()’ 인 괄호열의 값은 2이다. ‘[]’ 인 괄호열의 값은 3이다. ‘(X)’ 의 괄호값은 2×값..
문제 연세대학교가 위치한 신촌역이 속한 2호선은 그림과 같이 N개의 역이 원형으로 연결되어 있다. 각 역은 고유 번호가 할당돼 있으며 역들의 고유 번호는 서로 다르다. 그리고 특정 역의 다음 역은 시계 방향으로 인접한 역을 의미하고, 이전 역은 반시계 방향으로 인접한 역을 의미한다. 2호선은 지하철 노선들 중 유일한 흑자 노선이다. 때문에 2호선 공사 자금이 넉넉하기에 M번의 공사를 거치려고 한다. 각 공사는 다음 4가지 중 하나를 시행한다. 고유 번호 i를 가진 역의 다음 역의 고유 번호를 출력하고, 그 사이에 고유 번호 j인 역을 설립한다. 고유 번호 i를 가진 역의 이전 역의 고유 번호를 출력하고, 그 사이에 고유 번호 j인 역을 설립한다. 고유 번호 i를 가진 역의 다음 역을 폐쇄하고 그 역의 고..
목표 데이터 모델링의 과정을 이해하고 습득하기 학습할 것 데이터 모델의 이해 엔티티 속성 관계 식별자 데이터 모델링 현실 세계를 형식에 맞추어 추상화하여 데이터 모델을 만드는 과정이다. 복잡한 현실 개체들을 제한된 표기법으로 이해하기 쉽도록 단순화해준다. 데이터를 효율적으로 관리하고 조작하기 위해 사용하며, 데이터베이스 설계나 소프트웨어 개발에서 활용된다. 모델링 특징 추상화: 현실세계를 일정한 형식에 맞추어 표현한다. 단순화: 복잡한 현실 세계를 간결하고 명확하게 표현한다. 명확성(정확성): 애매모호함을 배제하고 누구나 이해 가능하도록 관계가 명확하게 정의된다. 일관성: 모델의 구성요소들이 모순없이 일관되어야 한다. 유연성: 데이터 변경이나 확장에 대해 유연성이 있어야한다. 데이터 모델의 기능 가시화:..