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 |