Humility

아무리 노력해도 최고가 되지 못할 수 있다⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀그럼에도 노력하는자가 가장 겸손한 것 아닌가

공부하는 블로그

자격증/SQL

SQL) 데이터 모델과 SQL

새벽_글쓴이 2025. 5. 20. 15:25
반응형

관계와 조인의 이해

✅ 관계(Relation)란?

관계는 데이터베이스에서 테이블(table)을 의미합니다.

즉, 하나의 테이블이 하나의 관계입니다.

  • 관계형 데이터베이스(Relational Database)는 데이터를 **행(Row)**과 열(Column) 형태로 저장합니다.
  • 은 속성(attribute), 각 은 튜플(tuple)이라고 부릅니다.
  • 예를 들어, 학생이라는 테이블이 있다면:
학번 이름 학년
1001 홍길동 2학년
1002 이순신 3학년

이 테이블(학생)이 하나의 관계입니다.


✅ 조인(Join)이란?

조인은 두 개 이상의 테이블(관계)을 연결하여 관련 데이터를 함께 조회하는 작업입니다.

조인이 필요한 이유는:

  • 관계형 데이터베이스에서는 중복을 줄이기 위해 정보를 여러 테이블로 나누기 때문입니다.
  • 예를 들어 학생 정보는 학생 테이블, 성적 정보는 성적 테이블에 나눠 저장할 수 있습니다.
  • 이때, 학생과 성적 정보를 같이 보려면 두 테이블을 조인해야 합니다.

✅ 조인의 종류

  1. 내부 조인 (INNER JOIN)
    • 두 테이블에서 조건이 일치하는 행만 출력합니다.
    SELECT 학생.이름, 성적.과목, 성적.점수
    FROM 학생
    INNER JOIN 성적 ON 학생.학번 = 성적.학번;
    
  2. 외부 조인 (OUTER JOIN)
    • 조건이 일치하지 않아도 한쪽 테이블의 모든 행을보여줍니다.
    • 종류: LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN
  3. 자체 조인 (SELF JOIN)
    • 한 테이블을 자기 자신과 조인할 때 사용합니다.
  4. 교차 조인 (CROSS JOIN)
    • 두 테이블의 모든 행을 곱해서 조합합니다. (모든 가능한 조합)

요약하자면,

  • 관계 = 테이블
  • 조인 = 테이블 간의 연결

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

✅ 트랜잭션(Transaction)이란?

트랜잭션은 데이터베이스에서 수행되는 작업의 논리적 단위입니다.

보통 하나의 트랜잭션은 여러 SQL 문장을 포함하며, 이 모든 작업이 성공하거나 실패하면 모두 되돌리는 것이 원칙입니다.

예: A 계좌에서 B 계좌로 송금

  • A의 잔액에서 10,000원 차감
  • B의 잔액에 10,000원 추가
  • → 이 두 작업은 모두 성공하거나, 모두 취소되어야 합니다.

✅ 트랜잭션의 4가지 특성 (ACID)

  1. Atomicity (원자성)
    • 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 합니다.
  2. Consistency (일관성)
    • 트랜잭션 실행 전후에 데이터의 무결성이 유지되어야 합니다.
  3. Isolation (고립성)
    • 동시에 여러 트랜잭션이 수행되더라도 서로 간섭하지 않아야 합니다.
  4. Durability (지속성)
    • 트랜잭션이 완료되면, 그 결과는 영구적으로 반영되어야 합니다.

✅ 모델이 트랜잭션을 표현한다는 뜻은?

"모델이 트랜잭션을 표현한다"는 말은,

데이터베이스 시스템이 내부적으로 트랜잭션의 상태와 실행을 관리하고 추적할 수 있도록 모델링한다는 의미입니다.

예를 들어:

  • 데이터베이스의 트랜잭션 모델은 다음과 같은 정보를 표현합니다.
    • 트랜잭션의 시작과 종료 시점
    • 어떤 데이터에 접근하고 수정했는지
    • 충돌이나 롤백이 필요한지 여부
  • 이를 통해 시스템은 동시성 제어, 복구, 무결성 유지를 구현할 수 있습니다.

✅ 간단한 비유

🧾 모델은 마치 "회계 장부"처럼

트랜잭션이 어떤 작업을 수행했는지 기록합니다.

이 기록이 있어야 문제가 생겼을 때 되돌릴 수 있고,

정합성을 보장할 수 있습니다.

Null 속성의 이해

✅ 1. 데이터 모델에서의 NULL 속성

데이터 모델에서 NULL은 값이 존재하지 않음을 의미합니다.

즉, "알 수 없음(unknown)", "적용 불가(not applicable)" 또는 "아직 입력되지 않음" 등의 의미로 해석됩니다.

예시:

학생ID 이름 전화번호
1001 홍길동 010-1234-5678
1002 이순신 NULL

→ 이순신의 전화번호가 NULL인 이유는:

  • 아직 입력하지 않았거나,
  • 개인정보 보호로 비워두었거나,
  • 해당 학생은 전화번호가 없을 수도 있습니다.

✅ 2. SQL에서의 NULL

SQL에서 NULL은 "값이 없음"을 나타내며, 숫자 0이나 빈 문자열 ''과는 다릅니다!

🎯 중요한 점:

  • NULL = NULL → 거짓 (FALSE)→ 반드시 IS NULL 또는 IS NOT NULL을 사용해야 합니다.
  • → NULL은 자신과도 같지 않다!

✅ 예제:

-- 잘못된 방식
SELECT * FROM 학생 WHERE 전화번호 = NULL;

-- 올바른 방식
SELECT * FROM 학생 WHERE 전화번호 IS NULL;

✅ 3. NULL과 관련된 연산 처리

  • NULL이 포함된 산술 연산: 결과는 NULL
  • SELECT 100 + NULL; -- 결과: NULL
  • NULL이 포함된 비교 연산: 결과는 UNKNOWN
  • SELECT * FROM 테이블 WHERE 컬럼 = NULL; -- X (항상 거짓)
  • COALESCE() 또는 IFNULL() 사용으로 대체값 제공
  • SELECT COALESCE(전화번호, '미입력') FROM 학생;

✅ 4. 왜 NULL을 주의해서 써야 할까?

  • 집계 함수에 영향을 줍니다.
  • SELECT AVG(점수) FROM 시험결과; -- NULL 값은 제외됨
  • 논리 연산이 복잡해질 수 있음
  • WHERE 조건1 OR 조건2 AND 조건3 → NULL 포함 시 예기치 않은 결과 가능

✅ 요약

항목 의미
NULL 값이 존재하지 않음, 알 수 없음
비교 방법 =, != 사용 X → IS NULL 사용해야 함
연산 결과 NULL과 연산하면 결과도 NULL
집계 함수 NULL은 자동 제외됨

이처럼 NULL은 단순히 "비어 있음"을 넘어 의미 있는 설계와 쿼리 작성에 큰 영향을 줍니다.

SQL에서 NULL을 올바르게 처리할 수 있으면 데이터 분석 정확도가 확 높아집니다.

반응형

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

오답노트 ( 관리구문 )  (0) 2025.05.22
오답노트 ( SQL 활용_2 )  (1) 2025.05.21
오답노트 ( SQL 활용_1 )  (1) 2025.05.20
오답노트 ( SQL_2 )  (0) 2025.05.19
오답노트 ( SQL 기본_1 )  (0) 2025.05.19