본문 바로가기
SQL

sqld 공부 ( 1 과목 : 데이터 모델링의 이해 )

by 뱅뱅뱅뱅뱅 2024. 11. 2.

모든 일반 속성은 주식별자에 대해서 함수종속성을 가져야 함

일반 속성 간에 함수종속성이 있는 경우 이행 함수 종속성

 

정규형인지 정규화인지 잘 구분하자

 

테이블 == 엔터티 == 릴레이션(RDBMS)

 

 

 

모델링

  • 설계
  • 개념적과 논리적 모델링 ( 엔티티 )
  • 물리적 모델링 ( 테이블 )
  • 업무의 흐름을 설명, 분석

모델링의 특징

  • 추상화
    • 대상의 주요 특징 추출하여 일정한 형식으로 표현
  • 단순화
    • 복잡한 현실세계를 그대로 표현하지 않고 보다 단순하게 표현
  • 명확화
    • 모호함 없이 기술

데이터 모델링 시 유의사항

  • 중복
  • 비유연성
    • 업무 변화에 유연하게 대처
  • 비일관성
    • 데이터 간의 상호 연관관계 명확하게

 

 

 

스키마

  • 관점에 따라 분류 ( 독립성을 보장하기 위한 분류, 유지보수 ↑ )
  • 사용자, 설계자, 개발자
  • 논리적 데이터 독립성
    • 외부 스키마와 개념 스키마 간의 독립성
    • 개념 스키마가 변경되어도 외부 스키마 영향 x
  • 물리적 데이터 독립성
    • 개념스키마와 내부 스키마 간의 독립성
    • 내부 스키마가 변경되어도 개념, 외부 스키마 영향 x

 

 

엔터티

  • 업무상 분석해야 하는 대상들로 이루어진 집합

 

엔터티 분류

 

1. 유형과 무형에 따른 분류

  • 유형 엔터티
    • 물리적 형태가 있음
      • 사원, 학생
  • 개념 엔터티
    • 형태 없음
      • 부서, 강의
  • 사건 엔터티
    • 업무 흐름에 따라 발생
      • 주문, 대여, 수강

 

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