본문 바로가기

데이터베이스

개체 타입 사상(Entity Type Mapping) # 강한 개체 타입(Strong Entity Type) 강한 개체 타입(정규 개체 타입)은 릴레이션으로 대응된다. 각 개체 타입의 일반 속성은 릴레이션의 속성으로, 기본키(Primary Key)와 외래키(Foreign Key)로 표시한다. # 약한 개체 타입(Weak Entity Type) 약한 개체 타입을 릴레이션으로 사상할 때, 기본키는 자신의 키와 강한 개체 타입의 키를 외래키 합쳐서 자신의 기본키로 만든다. 더보기
사상(Mapping) ER Model을 개념적 모델링(Conceptual Model)에서 사용하는 방법이다. 이 ER Model을 논리적 모델(Logical Model)로 변환하는 과정을 사상(Mapping)이라고 한다. 논리적 모델링에서 많이 사용되는 방법 중 하나는 관계 데이터 모델(Relational Data Model)이다. ER Model은 엔티티 타입(Entity Type)과 관계 타입(Relationship Type), 속성(Atrribute)으로 표현한다. Logical Model은 릴레이션(Relation) 하나로 논리적 구조를 표현한다. ER Model에서 Logical Data Model 사상 과정 더보기
공통테이블식 CTE(Common Table Expression) 공통테이블식은 파생테이블과 유사하다. 어떤 쿼리의 결과를 임시 테이블로 사용하여 select, insert, update, delete 나 merge 같은 연산을 외부 쿼리에서 수행할 수 있다. 그리고 이 외부 쿼리가 종료되면 사라져 버린다. Syntax With [()] As ( ) ; # 예제1 CTE 이름 뒤에 컬럼을 적지 않는 것을 인라인 방식이라고 한다. with C as ( select dept_id, dept_nm from DEPT where dept_id = '123' ) select * from c; ; # 예제2 CTE 이름 뒤에 컬럼을 적는 것을 외부 방식이라고 한다. with c (dept_id, dept_nm) as ( select dept_id, dept_nm from DEPT .. 더보기
Information Engineering Notification(IE 표기법) ER Diagram은 개체(Entity), 관계(Relationship), 속성(Atrribute)을 기호를 사용하여 데이터의 구조를 간다하게 그려낸 그림이다. ER Diagram을 그리는 방법은 Peter chen이 제안한 방법도 있지만 아래와 같이 IE표기법도 사용되고 있다. 비식별자 관계(Non-identifying Relationship) : 직원과 부서가 있다. 직원은 직원대로 독립적으로 존재가 가능하고 부서도 부서 나름에 독립적으로 존재한다. 즉 직원이 부서가 없다고 식별 못할 것도 아니며 부서가 직원이 없다고 식별 못할 것도 아닌 관계이다. 이 둘 다 강한개체이다. 이 둘 사이에 관계를 식별자 관계라 부르고 점선으로 표기한다. 1은 짝대기로 표기했고 0은 동르라미로 다수는 새발과 같이 표기했.. 더보기
Rank 함수 뭔가 어떤 결과에 대해 순위를 매기고 싶을때가 있다. Rank함수가 이럴때 사용되는 함수이다. Rank함수는 어떤 결과집합의 전체 혹은 그 안에 일부 그룹들 내에서의 각 행에 대해 순서를 계산하여 매겨준다. 순서를 매길때 같은 값이 있다면 동일한 순위를 부여받는다. 순위의 시작은 1부터이고 공동 2위가 2개면 다음 행은 4위가 된다. 즉 연속적으로 1,2,3,4,5로 순위가 매겨지지 않을 수 있다. Syntax Rank() Over( [Partition By Partition_Expression, ....] Order by Sort_Expression [Asc | Desc], .... ) Partition by절은 결과집합에서 순위를 매기는 그룹을 나누어 준다. 예를 들어 학교에서 성적 순위를 매긴다고 .. 더보기
Pivot 아래와 같이 년도별 잔고를 조회하면 아래와 같이 결과가 나오는 조회문이 있다고 보자. select Year, Balance from Account; Year Balance 2010 1000 2011 1200 2012 1100 2013 1400 그런데 왠지 마음에 들지 않는다, 위에서 아래로 연도별로 잔고가 나오는 결과를 왼쪽에서 부터 오른쪽으로 년도를 컬럼으로 하고 잔고를 그 년도에 값으로 표현하고 싶다. 2010 2011 2012 2013 1000 1200 1100 1400ㅣ 이럴 때 어떻게 하면 좋을까? 정답은 Pivot에 있다. Pivot은 A, B, C, D라는 컬럼이 있는데, 여기서 A라는 컬럼에 있는 값들이 다 다를때, 이 A 컬럼의 값을 조회 결과의 컬럼명이 되게 하고 나머지 B, C, D .. 더보기
순환적 관계(Recursive Relationship) 직원들 안에도 서열이나 역할있다. 상사는 이렇게 해라... 저렇게해라... 일찍 다녀라.. 그 일 다 마쳤냐... 등등 지시와 명령을 한다. 부하직원은 예 이렇게 했습니다... 저렇게 했습니다. 예 일찍 다니겠습니다. 예 곧 그 일 다 끝났니다. 등등 지시와 명령을 받는다. 이 둘에는 공통점이 있다. 직원이다. 직원이라는 개체 타입(Entity Type)에 개체이다. 이와 같이 같은 개체 타입에 속하는 개체가 서로 어떤 관계를 맺을 때 우리는 이를 두고 순환적 관계라 말한다. 늘 관계(Relationship)란 다른 개체(Entity)에서 발생하지만 그 개체가 동일한 개체 타입일 수 있는 것이다. 더보기
참여 제약 조건(Participation Constraints) 참여 제약 조건은 두 가지 유형으로 나눌 수 있다. 1. 전체 참여(Total participation) 2. 부분 참여(Partial participation) 1. 전체 참여(Total participation) A와 B라는 집합(Entity Set)이 있다. 둘은 관계(Relationship)를 맺고 있다. 혹은 둘은 관계에 참여 한다. 라고 할 때 개체 집합 내에 개별 개체 중 최소 하나 이상이 참여해야한다. 면 전체 참여라고 한다. 전체 참여는 ER Diagram에서 표현하면 두 줄선으로 개체 집합(Entity Set)과 관계 집합(Realtionship Set) 사이를 연결 시켜 준다. 2. 부분 참여(Partial participation) A와 B라는 집합(Entity Set)이 있다. 둘.. 더보기