전체 글
[SQLD]Ⅰ- 2장 데이터 모델링과 성능 - 1절 성능 데이터 모델링의 개요
1. 성능 데이터 모델링 데이터베이스 성능 향상을 목적으로 설계단계에서 데이터 모델링 때부터 성능과 관련된 사항이 데이터 모델링에 반영될 수 있도록 하는 것 정규화, 반정규화, 테이블 통합, 테이블 분할, 조인 구조, PK, FK 등 여러 가지 성능과 관련된 사항이 데이터 모델링을 반영될 수 있도록 하는 것으로 정의할 수 있다. 2. 성능 데이터 모델링 수행시점 성능 향상을 위한 비용은 프로젝트 수행 중에 있어서 사전에 할수록 비용이 들지 않는다. 특히 분석/설계 단계에서 데이터 모델에 성능을 고려한 데이터 모델링을 수행할 경우 성능 저하에 따른 재업무 비용을 최소화할 수 있는 기회를 가지게 된다. 성능을 분석/설계 단계에서부터 성능에 대한 데이터 모델 설계를 하지 않으면 시간이 지날수록 성능개선의 비용..
[SQLD]Ⅰ- 1장 데이터 모델링의 이해 - 5절 식별자
1. 식별자 정의 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성 엔터티 내에서 인스턴스들을 구분할 수 있는 구분자 특징 유일성 : 주식별자에 의해 엔터티 내에 모든 인스턴스들을 유일하게 구분함 최소성 : 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 함 불변성 : 주식별자가 한 번 특정 엔터티에 지정되면 그 식별자의 값은 변하지 않아야 함 존재성 : 주식별자가 지정되면 반드시 데이터 값이 존재(NULL 안됨) 2. 식별자 분류 및 표기법 식별자의 분류 분류 식별자 설명 대표성 여부 주식별자 엔터티 내에서 각 어커런스를 구분할 수 있는 구분자이며, 타 엔터티와 참조관계를 연결할 수 있는 식별자 보조식별자 엔터티 내에서 각 어커런스를 구분할 수 있는..
[SQLD]Ⅰ- 1장 데이터 모델링의 이해 - 4절 관계
1. 관계(Relationship) 정의 엔터티의 인스턴스 사이의 논리적인 연관성으로서 존재의 형태로서나 행위로써 서로에게 연관성이 부여된 상태 엔터티 간의 논리적인 관련성 관계의 패어링 각각의 엔터티의 인스턴스들은 자신이 관련된 인스턴스들과 관계의 어커런스로 참여하는 형태 인스턴스 간 개별적 관계 2. 관계의 표기법 관계명(Membership) - 관계의 이름 - 애매한 동사를 피한다. - 현재형으로 표현한다. 관계차수(Degree/Cardinality) - 1:1, 1:M, M:N(관계형 DB에서 카테시안 곱 발생) - 관계 내 튜플의 전체 개수 관계선택사양(Optionality) - 필수적인(Mandatory) 관계 : 참여하는 모든 참여자가 반드시 관계를 가지는 관계 - 선택적인(Optional)..
[SQLD]Ⅰ- 1장 데이터 모델링의 이해 - 3절 속성
1. 속성 - 업무에서 필요로 하는 인스턴스로 관리하고자 하는 의미상 더 이상 분리되지 않는 최소의 데이터 단위 정의 업무에서 필요로 한다. 의미상 더 이상 분리되지 않는다. 엔터티를 설명하고 인스턴스의 구성요소가 된다. 특징 업무에서 필요하고 관리하고자 하는 정보이어야 한다. 주식별자에 함수적 종속성을 가져야 한다. 하나의 속성에는 한 개의 값만을 가진다. 다중 값일 경우 별도의 엔터리를 이용하여 분리한다.(1차 정규화) 2. 엔터티, 인스턴스와 속성, 속성값 엔터티-속성의 관계 한 개의 엔터티는 두 개 이상의 인스턴스의 집합이어야 한다. 한 개의 엔터티는 두 개 이상의 속성을 갖는다. 한 개의 속성은 한 개의 속성값을 가진다. 속성의 표기법 3. 속성의 분류 특성에 따른 분류 기본 속성 : 다른 속성..
[SQLD] Ⅰ- 1장 데이터 모델링의 이해 - 2절 엔터티
1. 엔터티 정의 사람, 장소, 물건, 사건, 개념 등의 명사에 해당한다. 업무상 관리가 필요한 관심사에 해당한다. 저장이 되기 위한 어떤 것(Thing)이다. 즉, 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)이다. 특징 업무에서 필요하고 관리하고자 하는 정보이어야 한다. 유일한 식별자에 의해 식별이 가능해야 한다. 영속적으로 존재하는 인스턴스의 집합이어야 한다.('한 개'가 아니라 '두 개' 이상) 업무 프로세스에 의해 이용되어야 한다. 반드시 속성이 있어야 한다. 다른 엔터티와 최소 한 개 이상의 관계가 있어야 한다. * 단, 통계성 엔터티 도출, 코드성 엔터티 도출, 시스템 처리 시 내부 필요에 의한 엔터티 도출과 같은 경우 관계를 생략하여 표현해야 한다. 2. 엔..
[SQLD] Ⅰ- 1장 데이터 모델링의 이해 - 1절 데이터 모델의 이해
1. 모델링 - 복잡한 '현실세계'를 단순화시켜 일정한 표기법에 의해 표현하는 것 특징 추상화( 모형화, 가설적 ) : 다양한 현상을 일정한 양식인 표기법에 의해 표현한다. 단순화 : 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현하여 쉽게 이해할 수 있다. 명확화 : 누구나 이해하기 쉽게 하기 위해 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술한다. 관점 데이터 관점 : 업무가 어떤 데이터와 관련이 있는지 또는 데이터 간의 관계는 무엇인지에 대해서 모델링하는 방법( What, Data ) 프로세스 관점 : 업무가 실제 하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링하는 방법( How, Process ) 데이터와 프로세스의 상관 관점 : 업무가 처리하는 일의 방법..
[SQLD] SQLD( SOL Developer )이란?
1. SQL / SQL 개발자( SQLD ) 정의 SQL( Structured Query Language )은 데이터베이스를 직접적으로 액세스 할 수 있는 언어로, 데이터를 정의하고( Data Definition ), 조작하며( Data Manipulation ), 조작한 결과를 적용하거나 취소할 수 있고( Transaction Control ), 접근권한을 제어하는( Data Control ) 처리들로 구성된다. SQL 개발자( SQLD, SQL Developer )란 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는 데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는 개발자를 말한다. 2. SQL 개발자의 직무 - SQL 개발자..
[JAVA] 쓰레드( Thread )
1. 프로세스와 쓰레드 프로세스( process )란 간단히 말해서 '실행 중인 프로그램( program )'이다. 프로그램을 실행하면 O/S로부터 실행에 필요한 자원( 메모리 )을 할당받아 프로세스가 된다. 프로세스는 프로그램을 수행하는데 필요한 데이터와 메모리 등의 자원 그리고 쓰레드로 구성되어 있으며 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이 바로 쓰레드이다. 즉 모든 프로세스에는 최소 하나 이상의 쓰레드가 존재하며, 둘 이상의 쓰레드를 가진 프로세스를 '멀티 쓰레드 프로세스( multi-thread-process )'라고 한다. 하나의 프로세스가 가질 수 있는 쓰레드의 개수가 제한되어 있지 않으나 쓰레드가 작업을 수행하는데 개별적인 메모리 공간( Call Stack )을 필요로 하기 ..
[JAVA] 제네릭스( generics )
1. 제네릭스( generics ) 제네릭스는 다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시 타입체크( compile-time type check )를 해주는 기능이다. 객체의 타입은 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움이 줄어든다. 타입 안정성을 높인다는 것은 의도하지 않는 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄어준다는 것이다. 1 2 ArrayList list = new ArrayList(); ArrayList list2 = new ArrayList(); 제네릭스의 장점 타입 안정성을 제공한다. 타입체크와 형변환을 생략할 수 있으므로 코드가 간결해진다...
[JAVA] 컬렉션 프레임워크( Collection Framework ) - Arrays, Comparable & Comparator, HashSet, TreeSet, HashMap & HashTable
1. Arrays Arrays 클래스에는 배열을 다루는데 유용한 클래스가 정의되어 있다. 클래스 내부의 모든 메소드는 static 메소드이다. 배열의 복사 - copyOf(), copyOfRange() copyOf()는 배열 전체를, copyOfRange()는 배열의 일부를 복사해서 배열을 만들어낸다. copyOfRange()에 지정된 범위의 끝은 포함되지 않는다. 문자열의 비교와 출력 - equals(), toString() toString()은 일차원 배열에서만 사용할 수 있으며, 다차원배열에서는 deepToString()을 사용해야 한다. equals()도 마찬가지로 일차원배열에서만 사용 가능하므로, 다차원 배열의 비교에는 deepEquals()를 사용해야 한다. 배열 채우기 - fill(), se..