1. 데이터 모델링시 유의점
여러 장소에 같은 정보를 저장하지 않도록 한다
사소한 업무변화에 데이터모델이 수시로 변경되면 유지보수가 어렵다
데이터의 중복이 없어도 비일관성이 발생한다
2. 속성의 종류
파생속성은 타 속성에 영향을 받아 자신의 값이 변한다
속성 = 업무에서 필요로 하는 인스턴스에서 관리하고자 하는 의미상 더이상 분리되지 않는 최소의 데이터 단위
1. 기본속성 = 업무분석을 통해 바로 정의한 속성(회원ID, 이름, 계좌번호 등)
2. 설계속성 = 원래 업무상 존재하지 않지만 설계를 하면서 도출해 내는 속성, 유일한 값(상품코드, 지점코드)
3. 파생속성 = 데이터를 조회할 때 성능을 빠르게 하기 위해 원래 속성의 값을 계산하여 저장할 수 있도록 만든 속성(합계, 평균)
3. 부모엔터티로부터 속성을 받았지만 자식 엔터티의 주식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우
-> 부모의 속성을 자식이 PK로 사용하지 않는 경우
지식부모엔터티에서 받은 속성이 반드시 필수가 아니어도 무방하기 떄문에 부모없는 자식이 생성될 수 있는 경우
여러개의 엔터티가 하나의 엔터티로 통합되어 표현되었는데 각각의 엔터티가 별도의 관계를 가질경우
자식엔터티에 주식별자로 사용하여도 되지만, 자식엔터티에서 별도의 주식별자를 생성하는게 더 유리할때
4. 모델링 단계중 가장 재사용이 높은 것 : 논리적 모델링
1) 개념적 모델링 : 추상화 수준이 높고 업무중심적이고 포괄적인 수준의 모델링
- 핵심 엔터티와 그들 간의 관계를 발견하고, 그것을 표현하기 위해서 다이그램을 생성하는 것
- 엔터티-관계 다이어그램은 조직과 다양한 데이터베이스 사용자에게 어떠한 데이터가 중요한지 나타냄
- 개념적 모델링은 사용자와 시스템 개발자가 데이터 요구사항을 발견하는 것을 지원
- 개념적모델링은 현 시스템이 어떻게 변형되어애 하는지 이해하는데 유용
2) 논리적 모델링 : 시스템으로 구축하고자 하는 업무에대해 key, 속성, 관계 등을 정확하게 표현, 재사용이 높음
- 데이터베이스 설계 프로세스의 input으로써 비즈니스 정보의 논리적인 구조와 규칙을 명확하게 표현하는 기법 또는 과정
- 데이터모델링 과정에서 가장 핵심, 정규화수행 + 스키마모델
- * 정규화 = 논리데이터 모델의 대표적인 활동, 일관성 확보 및 중복제가를 통해 속성들이 가장 적절한 엔터티에 배치함(신뢰성있는 데이터구조)
3) 물리적 모델링 : 실제로 데이터베이스에 이식할 수 있는 성능, 저장 등 물리적인 성격 고려
- 컴퓨터에 어떻게 저장될 것인가에 대한 정의로 물리적 스키마라고함
- 테이블, 컬럼 등으로 표현되는 물리적인 저장구조와 저장장치, 자료 추출법 등
5.
도메인 = 릴레이션의 속성이 가질 수 있는 허용된 범위, 속성명과 도메인명은 할상 동일할 필요가 없지만, 모든 속성들의 도메인은 원자값이아야 한다.각 속성이 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인이라고 하며, 엔티티 내에서 속성에 대한 데이터 타입과 크기 그리고 제약사항을 지정하는 것
카디날리티 = 튜플(행)수, 인스턴스 수
6. 슈퍼/서브타입 데이터모델
1) one to one
슈퍼타입과 서브타입을 개별 테이블로 도출한다테이블수가 많아서 조인이 많이 발생하고 관리가 어렵다2) plus type슈퍼타입과 서브타입 테이블로 도출조인이 발생하고 관리가 어렵다3) single type슈퍼타입과 서브타입을 하나의 테이블로 도출하는 것조인성능이 좋고 관리가 편리하지만, io성능이 나쁘다
7. 모델링의 특징
- 추상화 : 현실세계를 간략하게 표현
- 단순화 : 누구나 쉽게 이해
- 명확화 : 명확하게 의미 해석, 한가지 의미
8. 조인
1) 해시조인
- 해시조인은 두 개의 테이블 간에 조인을 할때 범위검색이 아닌 동등조건(EQUI)에 적합한 방법
- 작은 테이블을 먼저 읽어서 hash Area에 해시 테이블을 생성하는 방법으로 과다한 sort는 성능이 저하될 수 있다
- 해시조인은 수행빈도가 낮고 수행기간이 오래걸리는 대용량 테이블을 조인시 유리하다
2) nested loop 중첩반복조인
좁은범위에서유리, 온라인 트랜잭션 처리 유리
3) sort merge 정렬 합병 조인
-인덱스가 없을때 수행
- 범위연산자 >,<에 유리하나 결과집합의 크기 차이가 많지 않을때는 비효율
---------
1) cross join
- 상호조인이라고도 불리며, 한쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 것, 카테이상 곱이라고도 함
2) natural 조인
- 동일한 타입과 이름을 가진 칼럼을 조인 조건으로 이용하는 조인
- 두 테이블의 동일한 이름을 가진 칼럼음 모두 조인된다
- 동일한 칼럼을 내부적으로 찾기때문에 별칭사용 금지
9. null 함수
1) NVL(a,1) = isnull: a가 널이면 1
2) NVL2(a,1,2) : a가 널이 아니면 1, 널이면 2
3) nullif(a,b): a와b가 같으면 널, 아니면 a
4) coalesce(a,1) : a가 널이면 1
*not in문 서브쿼리의 결과중 null이 포함될 경우 데이터가 출력되지 않는다
null값은 is null의 경우 외에는 모두 제외되어 출력된다
10. 제약조건
외래키는 두개의 테이블 간의 참조 무결성을 제약한다
기본키 제약사항은 테이블당 하나만 제약할 수 있다
check제약조건은 특정값만 입력하게 된다
고유키(unique)는 널값을 가질 수 있따
'자격증 > SQLD' 카테고리의 다른 글
SQL 동일연산 (0) | 2024.03.04 |
---|---|
[오답노트] 2-2. SQL 활용 (0) | 2024.03.04 |
[오답노트] 2-1. SQL 기본 (0) | 2024.03.03 |
[오답노트] 2-3. 관리구문 (0) | 2024.03.02 |
[오답노트] 1. 데이터 모델링의 이해 (0) | 2024.03.02 |