개발자 끄적끄적
도메인, 주식별자 특징, 정규화, PL/SQL, 속성의 종류 본문
<도메인(Domain)의 특징>
- 각 속성이 가질 수 있도록 허용된 값들의 집합
- 속성명과 도에민명이 반드시 동일할 필요는 없다
- 릴레이션에서 모든 속성의 도메인은 원자적(Atom-ic)이어야 한다
- 도메인별로 데이터 타입과 길이를 지정한다
- 각 엔터티 속성에 도메인을 할당한다
- 속성을 명사로 분리한다
<주식별자의 특징>
- 주식별자에 의해 엔터티 내에 모든 인스턴스가 유일하게 구분되어야 한다
- 주식별자를 구성하는 속성의 수는 유일성을 만족하는 최소의 수가 되어야 한다
- 지정된 주식별자의 값은 자주 변하지 않는 것이어야 한다
- 주식별자가 지정되면 반드시 값이 들어와야 한다
<반정규화의 절차>
1. 반정규화 대상 확인
- 조인(Join)에 사용되는 테이블 및 대량의 데이터 처리, 통계 처리 등을 확인한다
2. 다른 방법 결정
- 인덱스 조정을 통한 튜닝을 실시한다
- 애플리케이션에 배열 처리(Array Processin)를 수행한다
- 뷰(View) 혹은 클러스터링(Clustering) 기법을 적용한다
3. 반정규화 실행
- 테이블, 속성, 관계 등에 대한 반정규화를 수행한다
<ROWNUM VS TOP구>
1. ROWNUM : ORACLE 데이터베이스에서 사용하는 것
2. TOP구 : SQL SERVER는 TOP구를 사용하며 WITH TIES를 같이 사용하면 동일한 데이터가 있을 떄 함께 조회된다
<PL/SQL의 사용 순서>
1. 커서의 선언구(Cursor) 선언
DECLARE CURSOR <커서명> IS SELECT
<컬럼명> FROM <테이블명>
- 커서가 선언되면 OPEN 문을 사용해서 해당 커서를 열어야 사용이 가능하다
2. 커서의 열기(Cursor Open)
OPEN <커서명>
- 커서가 열려지면 FETCH 문을 사용해서 데이터를 읽어 올 수 있다
3. 커서의 인출(Cursor Fetch)
FETCH <커서명> INTO 변수1, 변수2, ...
-마지막으로 인출이 종료되면 사용된 커서는 반드시 닫아야 한다
4. 커서의 닫기(Cursor Close)
CLOSE <커서명>
<ORACLE과 SQL SERVER의 트랜잭션 처리 방법>
- ORACLE : 기본적으로 AUTO COMMIT은 설정되지 않는다
- SQL SERVER : 기본 설정이 AUTO COMMIT이다
<서브쿼리(Subquery)>
- 서브쿼리에는 Order by구를 사용할 수 없다
- 서브쿼리에서 여러 개의 행이 반환되면 IN, ANY, ALL과 같은 다중행 서브쿼리 함수를 사용해야 한다
- FROM구에 사용되면 인라인 뷰이고, WHRER절에 사용되면 서브쿼리이다
- 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다
<파티션(Partition)>
- 데이터베이스 파티션 기법 중 날짜 및 숫자처럼 연속된 값을 기준으로 만드는 파티션 기법 : Range Partition
- 특정 값을 지정해서 파티션을 수행 : List Partition
- 해시 함수를 적용하여 파티션을 수행 : Hash Partition
- 범위와 해시를 복합적으로 사용해서 파티션을 수행 : Composite Partiton
<엔터티의 특징>
1. 기본 엔터티(Basic Entitiy)
- 키 엔터티라고도 한다
- 다른 엔터티로부터 영향을 받지 않고 독립적으로 생성되는 엔터티이다
- 예를 들어 고객, 상품, 부서 등이 있다
2. 중심 엔터티(Main Entity)
- 기본 엔터티와 행위 엔터티 간의 중간에 있는 것이다
- 즉, 기본 엔터티로부터 발생되고 행위 엔터티를 생성하는 것이다
- 예를 들어 계좌, 주문, 취소, 체결 등이다
3. 행위(Active Entitiy) 엔터티
- 2개 이상의 엔터티로부터 발생된다
- 예를 들어 주문이력, 체결이력 등이다
<정규화를 하지 않아서 발생하는 문제점(=이상 문제점(Anomaly))>
- 삽입 이상 현상
- 갱신 이상 현상
- 삭제 이상 현상
<정규화>
1. 1차 정규화
- 속성의 중복값을 제거
2. 2차 정규화
- 복합 인스턴스에 대해 각 인스턴스의 종속성 중복을 제거
3. 3차 정규화
- 일반 속성 간에 종속이 발생하는 이행함수 종속성을 제거
4. 4차 정규화
- 다치종속성을 제거
<속성의 종류>
1. 기본 속성(Basic)
- 가장 일반적인 것으로 일렬번호, 코드 데이터처럼 다른 속성에서 계산하거나 영향을 받은 것을 제외한 모든 속성
2. 설계 속성(Design)
- 데이터 모델링 과정에서 생성되는 속성
- 예를 들어 일렬번호와 같이 설계 과정에서 만들어지는 속성이다
3. 파생 속성(Derived)
- 다른 속성으로부터 영향을 받아서 생성되는 속성
- 예를 들어 직원별 급여합계, 월별 생산량 등이다
'MySQL' 카테고리의 다른 글
정규화, 반정규화, 클리스터링 (0) | 2023.03.08 |
---|---|
분산 데이터, 엔터티 종류 (0) | 2023.03.08 |
옵티마이저, index, nested loop, sort merge, hash join (0) | 2023.03.08 |