[SQLD] 데이터 모델과 SQL

2024. 3. 15. 10:45·자격증/SQLD

1. 관계와 JOIN의 이해

 

SQL에서 관계를 맺는다는 건 식별자를 상속하고, 상속된 속성을 매핑키로 활용하여 데이터를 결합한다는 의미다. (PK와 FK의 상호 관계)

 

이를 조인(Join) 이라고 한다. 두 데이터 집합 간 연결고리(교집합)라고 이해할 수 있다.

 


 

2. 모델이 표현하는 트랜잭션의 이해

트랜잭션은 데이터베이스의 논리적 연산단위다.

 

트랜잭션의 특징

DBMS는 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability) 이 만족해야 한다.

 

다음 조건들의 영어 첫 단어를 인용해 ACID 특성(ACID property)라고 한다.

  원자성
(Atomicity)
트랜잭션 실행 도중에 문제가 발생했을 경우, 중단된 상태가 아닌 모두 실패하거나, 모두 완성 둘 중 하나의 상태가 되어야 한다.
즉, 100개 명령어로 구성된 트랜잭션 중 99개 완료 1개 실패가 된다면, 이는 무조건 실패로 간주하여 트랜잭션 시작 전 상태로 돌려야 한다. 
또한, 100개 모두가 성공했을 시 트랜잭션은 성공한다. 따라서 중간상태란 없다.  
 일관성(Consistency) 일관성이란, 트랜잭션 완료 후에도 데이터베이스가 일관된 상태로 유지돼야 한다.
예를 들어, 계좌이체를 성공적으로 실행했다면, A계좌의 잔액과 B계좌의 잔액의 합이 트랜잭션 실행 전의 합과 동일해야 한다.  
 고립성(Isolation) 고립성이란, 하나의 트랜잭션이 실행하는 도중에 변경한 데이터는 이 트랜잭션이 완료될 때까지 다른 트랜잭션이 참조하지 못하게 하는 특성이다.
하나의 트랜잭션이 A라는 계좌에서 작업을 하고 있다면, 다른 트랜잭션이 A계좌에 대해 참조하거나 관여 할 수 없고 작업이 끝날 때까지 대기해야 한다.
 지속성(Durability)  지속성은 트랜잭션이 완료되면 주기억장치가 아닌 디스크와 같은 보조기억장치에 저장되거나 그렇지 않더라도 시스템 장애가 회복되고 난 후에 어떠한 형태로든지 그 데이터를 복구 할 수 있게 해야함을 뜻한다.  

 

 

 


 

3. NULL 속성의 이해

NULL의 의미

- NULL은 값의 부재를 의미한다.

- NULL은 공백 또는 '0' 과 다른 의미다.

 

기본개념

- NULL값의 연산은 언제나 NULL이다.

- 집계함수는 NULL 값을 제외하고 처리한다.

- NULL값으로 가능한 연산은 IS NULL, IS NOT NULL 밖에 없다.

 

 

ISNULL: 데이터베이스에서 null 값을 확인하는 데 사용되는 조건문이다. 특정 열이 null 값을 포함하는지 확인할 때 사용된다. 예를 들어, ISNULL(column1, column2)과 같은 형태로 사용된다. (SQL Server에서만 사용)

 

 

NVL: ISNULL과 마찬가지로 주어진 값이 null인 경우 대체 값을 반환한다. 이 함수는 주로 null 값을 다른 값으로 대체하고자 할 때 사용된다. 예를 들어, NVL(column1, column2)과 같은 형태로 사용된다. (Oracle DB에서만 사용)

 

NULLIF: 이 함수는 두 값이 같은지 확인하고, 두 값이 같으면 null을 반환하고 다르면 첫 번째 값 자체를 반환한다. 이 함수는 주로 값이 특정 조건에 의해 null이 되어야 할 때 사용된다. 예를 들어, NULLIF(column1, column2)와 같이 사용됩니다.

 

COALESCE: 이는 여러 값 중 첫 번째로 null이 아닌 값을 반환합니다. COALESCE 함수는 인수로 받은 값들 중에서 첫 번째로 null이 아닌 값을 반환하며, 모든 값이 null인 경우에는 null을 반환합니다. 이는 null 값을 대체할 때 사용됩니다. 예를 들어, COALESCE(value1, value2, ...)와 같이 사용됩니다.

 


 

4. 본질식별자 VS 인조식별자

본질식별자

- 업무에 의해 만들어진 식별자

 

인조식별자

- 업무적으로 만들어지진 않지만 본질식별자가 복잡한 구성을 갖고 있으므로 인위적으로 만든 식별자

 

 

 

 

저작자표시 (새창열림)

'자격증 > SQLD' 카테고리의 다른 글

[SQLD] 비전공자 합격 후기  (0) 2024.04.02
[SQLD] SQL 활용  (4) 2024.03.16
[SQLD] SQL 기본  (0) 2024.03.15
[SQLD] 정규화 (Normalization)  (1) 2024.03.15
[SQLD] 데이터 모델링의 이해  (2) 2024.03.15
'자격증/SQLD' 카테고리의 다른 글
  • [SQLD] SQL 활용
  • [SQLD] SQL 기본
  • [SQLD] 정규화 (Normalization)
  • [SQLD] 데이터 모델링의 이해
whkim98
whkim98
꾸준히 내 것으로 만드는 게시글을 작성하자
  • whkim98
    내 일기장
    whkim98
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • Project N
        • Insty N
        • ERP
      • Cloud
        • NAVER CLOUD Web DevOps
        • Public
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
        • 리눅스마스터
        • AWS
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    node
    javascript
    정보처리기사
    프로그래머스
    RDBMS
    Java
    jsp
    gitbash
    해시 암호화
    spring
    AdSP
    React
    annotation
    Python
    git
    web
    django
    Tomcat
    js
    Postman
    SQLD
    Cloud
    코테
    CORS
    eGov
    html
    코딩테스트
    AWS
    github
    코딩
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
whkim98
[SQLD] 데이터 모델과 SQL
상단으로

티스토리툴바