모든 일반 속성은 주식별자에 대해서 함수종속성을 가져야 함
일반 속성 간에 함수종속성이 있는 경우 이행 함수 종속성
정규형인지 정규화인지 잘 구분하자
테이블 == 엔터티 == 릴레이션(RDBMS)
모델링
- 설계
- 개념적과 논리적 모델링 ( 엔티티 )
- 물리적 모델링 ( 테이블 )
- 업무의 흐름을 설명, 분석
모델링의 특징
- 추상화
- 대상의 주요 특징 추출하여 일정한 형식으로 표현
- 단순화
- 복잡한 현실세계를 그대로 표현하지 않고 보다 단순하게 표현
- 명확화
- 모호함 없이 기술
데이터 모델링 시 유의사항
- 중복
- 비유연성
- 업무 변화에 유연하게 대처
- 비일관성
- 데이터 간의 상호 연관관계 명확하게
스키마
- 관점에 따라 분류 ( 독립성을 보장하기 위한 분류, 유지보수 ↑ )
- 사용자, 설계자, 개발자
- 논리적 데이터 독립성
- 외부 스키마와 개념 스키마 간의 독립성
- 개념 스키마가 변경되어도 외부 스키마 영향 x
- 물리적 데이터 독립성
- 개념스키마와 내부 스키마 간의 독립성
- 내부 스키마가 변경되어도 개념, 외부 스키마 영향 x
엔터티
- 업무상 분석해야 하는 대상들로 이루어진 집합
엔터티 분류
1. 유형과 무형에 따른 분류
- 유형 엔터티
- 물리적 형태가 있음
- 사원, 학생
- 물리적 형태가 있음
- 개념 엔터티
- 형태 없음
- 부서, 강의
- 형태 없음
- 사건 엔터티
- 업무 흐름에 따라 발생
- 주문, 대여, 수강
- 업무 흐름에 따라 발생
2. 발생 시점에 따른 분류
- 기본 엔터티
- 업무에 원래 존재하는 정보
- 중심 엔터티
- 기본 엔터티로부터 주식별자 상속받아 생성
- 업무에서 중심적인 역할
- 행위 엔터티
- 2개 이상의 부모 엔터티로부터 발생
- 주문 ( 고객과 상품으로부터 발생하므로 행위 엔터티이기도 함 ), 사원변경이력
- 2개 이상의 부모 엔터티로부터 발생
속성
- 의미상으로 분리되지 않는 최소의 단위
- 속성도 집합이다
속성의 분류
- 기본 속성
- 엔터티가 본래 갖고 있어야 하는 속성
- 설계 속성
- 본래 갖고 있는 속성 x
- 설계 시 필요하다 판단되어 도출된 속성
- 파생 속성
- 다른 속성으로부터 계산되거나 특정 규칙에 따라 변형되어 만들어진 속성
- 빠른 성능을 위함
도메인
- 속성에 대한 데이터 타입, 크기, 제약사항을 지정한 것
관계
- 엔터티간의 연관성
관계의 종류
- 존재적 관계
- 부서 엔터티가 삭제되면 사원 엔터티의 존재 영향 미침
- 행위적 관계
- 고객 엔터티의 행동에 의해 주문 엔터티가 발생
관계의 구성
- 관계명
- 존재적 관계, 행위적 관계를 나타낸다.
- 차수
- 관계선택성
- 필수적 관계
- NULL 값을 가질 수 없음
- 선택적 관계
- NULL 값을 가질 수 있음
- O 로 표현
- 필수적 관계
UML
- UML에는 연관관계와 의존관계가 있다
- 연관관계 (존재적관계)
- 클래스 간에 지속적으로 유지되는 관계
- 존재적 관계
- 실선으로 표시
- 소스코드에서 사용
- 의존관계 (행위적관)
- 한 클래스가 다른 클래스의 행위에 의존하여 일시적으로 관계가 형성되는 경우
- 행위적 관계
- 점선으로 표시
- 오퍼레이션에서 파라미터로 이용
두 개의 엔터티 사이에서 관계를 도출할 때 확일할 사항 ( 규칙, 규칙, 정보 조합)
- 연관규칙 존재?
- 정보 조합 발생?
- 관계연결 규칙 서술?
- 관계연결을 가능하게 하는 동사가 있는가??
차수는 엔터티와 엔터티의 관계
페어링은 인스턴스와 인스턴스의 관계
상호배타적관계
- 두 엔터티나 두 속성 간에 동시에 발생할 수 없는 관계
- ex) 개인회원 또는 법인회원
ERD
- 1976 - 피터 첸
- 도출 -> 배치 -> 관계 설정 -> 관계명 -> 참여도 -> 필수여부
한 명의 학생은 0 ~ N 개의 수강내역을 가질 수 있음
# 식별자
* 필수 속성 ( null 가질 수 없음 )
o 선택적 속성 ( null 가질 수 있음 )
식별 관계
- 부모, 자식과의 기본키로 공유하는 관계
- 손주 관계 가능 ( PK 에서 PK 로..)
- ERD
- 실선 표시
비식별 관계
- 부모, 자식과의 기본키와 일반 속성으로 공유하는 관계
- 손주 관계 불가능
- ERD
- 점선 표시
식별자와 비식별자 관계 비교
항목 | 식별자 관계 | 비식별자 관계 |
목적 | 강한 연결관계 | 약한 연결관계 |
자식 주식별자 영향 | 자식 주식별자의 구성 | 자식 일반 속성 |
표기법 | 실선 | 점선 |
연결 고려사항 | - 반드시 부모 엔터티에 종속 - 자식 주식별자에 부모 주식별자 포함 - 상속받은 속성 타엔터티 이전 필요 |
- 약한 종속관계 - 자식 주식별자 독립적 구성 - 상속받은 속성을 타 엔터티 차단 필요 - 부모쪽 관계참여가 선택관계 |
식별자 분류표
대표성 여부 | 주식별자 | 대표성 가지며, 인스턴스 중 하나를 유일하게 구분할 수 있는 식별자 |
보조식별자 | 대표성 x, 인스턴스 중 하나를 유일하게 구분할 수 있는 식별자 | |
스스로 생성여부 |
내부식별자 | 엔터티 내부에서 생성된 식별자, 다른 엔터티 참조 x |
외부식별자 | 다른 엔터티와 관계로 만들어진 식별자 ( 외래키 ) | |
속성의 수 | 단일식별자 | 하나의 속성 |
복합식별자 | 2개 이상의 속성 | |
대체 여부 | 본질식별자 | 업무에 의해 만들어지는 식별자 |
인조식별자 | 인위적으로 만들어지는 식별자, 자동 증가하는 일련번호 같은 형태 ( ID ) |
본질식별자랑 내부식별자 구별하자
인조식별자
시퀀스를 통해 자동으로 생성할 수 있기 때문에 개발이 더 편리
시퀀스는 데이터베이스에서 고유한 숫자 값을 순차적으로 생성하는 기능
식별자 특징
- 유일성
- 최소성
- 불변성
- 존재성
데이터베이스 이상현상
정규화되지 않은 테이블에 데이터를 삽입, 수정, 삭제할 때 데이터의 일관성이 깨질 수 있다. 이런 현상을 이상현상이라고 한다.
- 삽입이상
- 의도하지 않은 다른 정보까지 삽입하는 현상
- 갱신이상
- 중복 저장되어 하나만 갱신하고 다른 하나를 갱신하지 않을 때 나타나는 데이터 불일치 현상
- 삭제이상
- 의도하지 않은 정보까지 삭제되는 형상
정규화
- JOIN 횟수 ↑
- 시스템성능 ↑ ( 불필요한 트랜잭션이 줄어들었기 때문 )
- 조회성능↓
- 여러 테이블이 생기며 1 : n 의 관계가 형성
- 정규화가 진행된 테이블은 정규형
- 제1 정규화
- 원자값만 구성 ( 속성값 하나 )
- 중복값 제거
- 기본키 설정
- 불필요한 컬럼 삭제, 통합
구매품목 1 |
구매품목 2 |
구매품목 3 |
구매품목가격 1 |
구매품목가격 2 |
구매품목 |
구매품목가격 |
- 제2 정규화
- 부분 함수 종속성 분해
- 일반속성이 주식별자 일부에만 종속
- 모든 PK 에 의해서 일반속성이 정해져야 됨
- 부분 함수 종속성 분해
- 제3 정규화
- 이행적 종속성
- A -> B, B -> C 의 관계가 성립할 때, A -> C 가 성립되는 것을 말함
- (a, b), (b, c) 분리하는 것
- BCNF ( Boyce-Codd Normal Form ) 정규화
- 일반 속성이 기본키를 결정 X
트랜잭션
- 하나의 트랜잭션은 부분 COMMIT이 불가
- 필수적인 관계 형태
- SELECT, INSERT, DELETE, UPDATE 등이 포함될 수 있음
트랜잭션의 특징
- 일관성
- 트랜잭션 수행 전후에 데이터베이스는 일관된 상태를 유지
- 원자성
- 모두 성공하거나 모두 실패해야 한다
- 지속성
- 트랜잭션이 성공적으로 수행되면 갱신한 데이터베이스 내용이 영구적으로 저장
- 고립성
- 트랜잭션 실행 도중 다른 트랜잭션에 영향을 받지 않는다
NULL
- NULL과의 모든 비교는 알 수 없음, NULL 을 반환
- 연산은 NULL
단일행의 NULL 집계합수 처리 -> NULL
다중행의 NULL 집계합수 처리 -> 무시
1. 50
2. 240
'SQL' 카테고리의 다른 글
SQLD 마무리 (1) | 2024.11.12 |
---|---|
sqld 공부 ( 2 과목 : 관리구문 ) (0) | 2024.11.10 |
sqld 공부 ( 2 과목 : SQL 활용 ) (0) | 2024.11.09 |
sqld 공부 ( 2 과목 : SQL 기본 ) (1) | 2024.11.03 |