[New!! 2026] (1과목) SQLD 완벽 요약강의 | 요약강의 | 데이터 모델링의 이해 | 최단시간 최대효율👍 | 핵심 요약노트 | SQL개발자
2026년 11월 9일 공유
[New!! 2026] (1과목) SQLD 완벽 요약강의 | 요약강의 | 데이터 모델링의 이해 | 최단시간 최대효율👍 | 핵심 요약노트 | SQL개발자
한눈에 보기1. 데이터 모델링은 현실 세계를 약속된 표기법으로 DB 구조화하는 과정이다.• 모델링 3단계: 개념적(ERD) → 논리적(테이블/정규화) → 물리적(저장).2. 데이터 모델의 핵심 구성 요소는 엔터티, 속성, 관계이다.• 엔터티는 유일한 식별자(PK)를 가져야 하며, 속성은 원자성을 유지해야 한다.3. 정규화는 데이터 중복을 최소화하여 이상 현상을 방지하는 기법이다.• 1정규화(원자값) → 2정규화(부분 함수 종속 제거) → 3정규화(이행 함수 종속 제거).4. 트랜잭션은 DB 작업의 논리적 단위로 ACID 특성을 보장해야 한다.• 원자성, 일관성, 고립성, 지속성은 데이터 무결성을 위한 필수 조건이다.5. 식별자는 인스턴스를 유일하게 구분하며, 설계 효율을 위해 인조식별자를 사용한다.• 식별자 관계는 부모-자식 생명주기가 같으나, 비식별 관계는 선택적 참여가 가능하다.
0. 학습 목표
- 데이터 모델링의 목적과 3단계, 그리고 데이터 모델의 구성 요소를 이해한다.
- 엔터티·속성·관계·식별자·키와 정규화의 핵심 개념을 구분한다.
- 조인, 트랜잭션, NULL, 본질 식별자와 인조 식별자의 특징을 이해한다.
🌐 외부 리서치SQLD 1과목 시작 전 알아둘 데이터 모델링 기초 개념#배경지식 #데이터 모델링강의는 현실의 정보를 엔터티·속성·관계로 나누고, 이를 개념·논리·물리 모델로 구체화하는 흐름을 전제로 해요. 아래 개념을 먼저 잡으면 학생·수강·과목 예시가 왜 테이블과 키로 바뀌는지, 정규화가 무엇을 고치는지 따라가기 쉬워져요.• 1. 엔터티·속성·관계는 현실의 정보를 데이터 구조로 나누는 기본 단위예요.• 엔터티는 따로 구별해 기록할 대상이에요. 학생은 현실에 있는 사람, 과목은 개념으로 존재하는 대상, 수강은 학생이 과목을 신청한 사건으로 볼 수 있어요.• 속성은 엔터티를 설명하는 값이에요. 학생 엔터티에는 학번·이름, 과목 엔터티에는 과목명, 수강 엔터티에는 학번·과목명·학점 같은 속성을 둘 수 있어요.• 관계는 엔터티 사이의 연관성이에요. 학생 한 명은 여러 과목을 들을 수 있고, 한 과목도 여러 학생이 들을 수 있어요. 그래서 학생과 과목의 다대다 관계는 수강을 사이에 둬 두 개의 일대다 관계로 표현해요.• 강의의 세 모델링 단계는 점점 구체적으로 바뀌어요. 개념 모델은 현실을 엔터티·관계로 표현하고, 논리 모델은 이를 테이블과 키로 정리하며, 물리 모델은 실제 저장 방식에 맞춰 구체화해요.• 2. 식별자와 키는 각 행을 정확히 찾고, 테이블 사이를 연결해요.• 식별자는 한 엔터티의 인스턴스, 즉 개별 데이터를 다른 것과 구별하는 속성이나 속성의 묶음이에요. 이름은 동명이인이 있을 수 있으니 학생을 구별할 때는 학번을 쓰는 편이 안전해요.• 후보키는 유일성과 최소성을 모두 만족하는 키예요. 학번과 주민번호가 각각 학생을 유일하게 구별한다면 둘 다 후보키가 될 수 있고, 그중 학번을 선택하면 학번이 기본키(PK), 주민번호가 대체키가 돼요.• 수강 행은 학번만으로는 구별되지 않아요. 한 학생이 여러 과목을 들을 수 있기 때문이에요. 따라서(학번, 과목명)처럼 두 속성을 묶은 복합 후보키를 쓸 수 있어요. 두 속성 중 하나를 빼도 유일성이 깨진다면 이 조합은 최소성도 만족해요.• 외래키(FK)는 다른 테이블의 기본키를 가져와 연결하는 속성이에요. 수강 테이블의 학번이 학생 테이블의 학번을 참조하면, 존재하지 않는 학생의 수강 기록이 들어오는 일을 막을 수 있어요.• 3. 정규화는 중복을 줄여 데이터가 꼬이는 이상 현상을 막아요.• 학생·과목·교수 정보를 한 테이블에 반복 저장하면 삽입 이상(학생 없이 새 과목을 등록하기 어려움), 삭제 이상(마지막 수강 기록을 지우다 과목 정보까지 사라짐), 갱신 이상(교수 이름을 일부 행만 바꿔 정보가 서로 달라짐)이 생길 수 있어요.• 제1정규형(1NF)은 한 칸에 원자값, 즉 더 쪼개지지 않는 값 하나만 담아요. 한 학생의 수강 과목을수학, 과학으로 한 칸에 적지 말고, 과목마다 별도 수강 행을 만들어요.• 제2정규형(2NF)은 1정규형을 만족하고, 복합 기본키의 일부에만 매달리는 속성을 분리해요.(학번, 과목명)이 수강의 키라고 할 때, 교수명이 과목명만으로 정해진다면 수강 행마다 교수를 반복하지 말고 과목 테이블로 옮겨요.• 제3정규형(3NF)은 2정규형을 만족하고, 키가 아닌 속성이 다른 키 아닌 속성을 결정하는 이행 종속을 분리해요. 예를 들어 시험 점수로 학점이 결정되는 규칙이라면, 점수와 학점을 수강의 키에 함께 매달아 반복하지 않고 성적 기준을 별도 구조로 관리해요.• 정규화는 테이블을 나눠 중복과 이상 현상을 줄이는 과정이에요. 대신 조회할 때 여러 테이블을 연결하는 조인이 필요할 수 있어요.
🌐 외부 리서치정규화 1·2·3정규형, 아주 쉽게 이해하기#어려운 개념 #정규화
1. 데이터 모델링의 목적과 기본 관점
강의는 학교·학생·과목·수강 사례로 데이터 모델링의 기본 개념을 설명한다.
1. 모델링은 현실 세계의 정보를 데이터베이스 구조로 표현하는 과정이다.
1. 학교에는 학생과 과목이 있고, 학생은 과목을 수강한다.
2. 이 현실의 정보를 데이터베이스에 저장하려면, 먼저 데이터베이스에 저장할 구조를 표현해야 한다.
3. 즉, 현실 세계의 정보를 약속된 표기법으로 데이터베이스 구조에 나타내는 과정이 모델링이다.
2. 모델링은 단순하고, 명확하며, 변화에 유연해야 한다.
1. 모델은 누구나 쉽게 이해할 수 있도록 주요 특징을 간략하게 나타내야 한다. 강의에서는 이를 단순성·추상성·명확성의 특징으로 설명한다.
1. 단순성은 모델을 쉽게 이해할 수 있도록 표현하는 것이다.
2. 추상성은 주요 특징을 간략하게 표현하는 것이다.
3. 명확성은 표현이 모호하지 않도록 하는 것이다. 데이터는 컴퓨터 저장소에 저장되므로 명확해야 한다.
2. 학생이나 과목의 이름이 바뀌거나 학생·과목 수가 늘어나는 변화에 유연하게 대응해야 한다.
3. 같은 학생이나 같은 과목을 여러 번 저장하지 않고, 각 데이터를 유일하게 저장해야 한다.
4. 학생과 과목 사이의 수강 관계처럼, 데이터 사이의 관계도 일관되고 명확해야 한다.
3. 모델링은 데이터·프로세스·상관 관점으로 바라본다.
1. 데이터 관점은 학생과 과목처럼 각각의 데이터를 살펴보는 관점이다.
2. 프로세스 관점은 학생이 과목을 수강하는 것처럼 업무의 흐름을 살펴보는 관점이다.
3. 상관 관점은 데이터와 업무 흐름을 함께 살펴보는 관점이다.
4. 모델을 점검하는 방법으로 CRUD 분석을 소개한다. CRUD는 다음 네 가지 작업의 앞글자를 딴 것이다.
1. Create: 신입생 정보를 등록한다.
2. Read: 학생 정보를 조회한다.
3. Update: 변경된 학생 정보를 갱신한다.
4. Delete: 자퇴하거나 제적된 학생 정보를 삭제한다.
2. 데이터 모델링의 3단계와 표기법
🌐 외부 리서치데이터 모델링 필수 학습 자료#추가 학습 #SQLD
2.1. 개념적·논리적·물리적 모델링은 점차 구체화된다
모델링은 현실을 추상적으로 나타내는 단계에서 시작해, 컴퓨터가 이해하는 구조와 실제 저장 구조로 이어진다.
1. 개념적 모델링은 현실 세계를 약속된 표기법으로 추상화한다.
1. 강의에서는 세 단계의 앞글자를 따서 외우도록 안내한다.
2. 개념적 모델링은 현실 세계를 추상적인 개념으로 표현하지만, 임의의 방식이 아니라 약속된 표기법을 사용한다.
3. 예를 들어 학생과 수강 같은 현실의 대상을 엔터티(entity)로 표현한다.
4. 학생 엔터티에는 학번·생년월일·이름 같은 속성이 있고, 수강 엔터티에는 학번·과목명·학점 같은 속성이 있다. 두 엔터티 사이에는 관계가 있다.
5. 이처럼 약속된 표기법으로 그림을 그린 결과를 컴퓨터가 이해할 자료 구조로 바꾸는 단계가 다음의 논리적 모델링이다.
2. 논리적 모델링은 데이터를 테이블 구조로 표현한다.
1. 논리적 모델링에서는 컴퓨터가 이해할 수 있는 자료 구조를 구성한다.
2. 그 구조는 행과 열이 있는 테이블(table) 형태다.
3. 테이블 형태로 바꾼 뒤에는 정규화 기법을 적용하며, 강의에서는 정규화를 뒤에서 다시 다룬다고 안내한다.
3. 물리적 모델링은 논리적 구조를 실제 저장 공간에 저장하는 단계다.
1. 논리적 자료 구조를 실제 물리적 공간에 저장하는 과정이 물리적 모델링이다.
2. 개념적 모델링에서 물리적 모델링으로 갈수록 모델이 더 구체화된다.
4. 데이터 모델의 필수 구성 요소는 엔터티·속성·관계다.
1. 엔터티, 속성, 관계는 데이터 모델을 이루는 세 가지 필수 요소다.
2. 강의는 이 세 요소를 이후 각각 자세히 설명하겠다고 예고한다.
5. 주식별자는 데이터가 무엇인지 바로 특정할 수 있게 한다.
1. 학생 엔터티에서 학번은 학생을 구별하는 역할을 한다. 강의에서는 이를 비유적으로 ‘반장’이라고 설명한다.
2. 수강 엔터티에서는 학번과 과목명을 함께 사용해 식별자를 구성한다.
3. 학번만으로 학생을 특정할 수 있고, 학생과 과목을 함께 알면 해당 수강 정보도 특정할 수 있다는 점을 예로 든다.
4. 식별자는 별도로 구분해 두며, 식별자의 의미와 유형은 뒤에서 다시 설명한다.
2.2. ERD 표기법과 작성 순서를 알아본다
개념적 모델링에서는 엔터티와 그 관계를 약속된 그림 표기법으로 나타내며, 강의는 IE 표기법을 중심으로 설명한다.
1. 대표적인 표기법으로 IE 표기법과 Barker 표기법을 소개한다.
1. 시험에서는 IE 표기법이 자주 나오지만 Barker 표기법도 출제될 수 있으므로 둘 다 알아두라고 안내한다.
2. 이후 설명은 IE 표기법을 중심으로 하되, Barker 표기법과 차이가 있는 부분은 함께 설명한다.
3. 두 표기법의 눈에 띄는 차이는 식별자 표현 방식이다.
1. IE 표기법은 식별자를 별도의 영역으로 분리해 표현한다.
2. Barker 표기법은 식별자 속성 앞에
# 표시를 붙여 나타낸다.2. ERD는 엔터티를 도출하고 배치한 뒤 관계를 표시하는 순서로 작성한다.
1. 먼저 학생과 수강처럼 필요한 엔터티를 도출한다.
2. 엔터티를 배치할 때는 중요한 정보를 왼쪽 위에 둔다. 강의에서는 학생이 수강보다 중요한 정보라고 보고 학생을 왼쪽에 배치한 사례를 든다.
3. 엔터티 사이의 관계는 선으로 표시하고, 관계 이름도 적을 수 있다. 예를 들어 학생과 수강 사이의 관계 이름은 ‘수강한다’이다.
4. 관계선의 모양으로 관계 차수를 나타낼 수 있다. 학생 쪽은 한 줄이고 수강 쪽은 여러 갈래이므로, 학생 한 명이 여러 건의 수강 신청을 할 수 있음을 표현한다.
5. 관계 참여가 필수인지 선택인지도 표시할 수 있다. 학생은 수강 신청을 할 수도 있고 하지 않을 수도 있으며, IE 표기법에서는 선택 참여를 동그라미로 표현한다.
6. 관계 표기를 공부할 때는 관계명·관계 차수·선택 사양을 함께 살펴보도록 안내한다.
3. ANSI/SPARC 3계층과 데이터 독립성
데이터베이스의 설계도인 스키마는 외부·개념·내부의 세 계층으로 나뉘며, 계층 사이의 독립성을 통해 변경의 영향을 줄인다.
1. 스키마는 데이터베이스의 설계도이며, ANSI/SPARC 구조는 이를 세 계층으로 구분한다.
1. 스키마는 데이터베이스 설계도의 구조를 가리킨다.
2. ANSI/SPARC 스키마 구조는 크게 외부 스키마·개념 스키마·내부 스키마로 나뉜다.
2. 은행 입출금 사례에서 세 계층은 서로 다른 관점을 나타낸다.
1. 사용자는 은행 앱, 웹사이트, ATM 또는 은행 창구의 프로그램을 통해 입출금한다.
2. 사용자가 접하는 앱·웹사이트·ATM 등에는 각각 사용자 관점의 외부 스키마가 존재한다.
3. 여러 외부 스키마는 하나의 전체적인 논리 구조에 따라 동작한다. 이 전체 논리 구조가 개념 스키마다.
4. 개념 스키마는 실제 물리적 저장소에 저장되며, 이 저장 구조를 내부 스키마라고 부른다.
3. 논리적 독립성은 개념 스키마 변경이 외부 스키마에 영향을 주지 않는 성질이다.
1. 예를 들어 다른 은행과 연동하기 위해 입출금의 논리 구조를 바꿀 수 있다.
2. 이때 개념 스키마가 바뀌어도 은행 앱이나 웹사이트를 사용하는 사람에게 그 변경이 영향을 주지 않아야 한다.
3. 이러한 독립성을 논리적 독립성이라고 하며, 개념 스키마 변경이 외부 스키마에 영향을 주지 않는다는 뜻이다.
4. 물리적 독립성은 물리적 저장 장치 변경이 개념·외부 스키마에 영향을 주지 않는 성질이다.
1. 저장 장치의 노후화에 따른 교체나 데이터 규모 확대에 따른 저장 장치 추가는 물리적 변경이다.
2. 이런 변경에도 개념 스키마와 외부 스키마가 영향을 받지 않는 성질을 물리적 독립성이라고 한다.
4. 엔터티의 의미·특징·분류
4.1. 엔터티는 식별 가능한 현실 세계의 객체다
엔터티는 현실에 존재하고 다른 대상과 명확히 구별할 수 있는 객체이며, 그 이름과 구성에도 기준이 있다.
1. 엔터티는 현실 세계에 존재하며 명확하게 구분할 수 있는 객체다.
1. 학생·과목·수강뿐 아니라 고객·상품·주문도 엔터티의 예다.
2. 엔터티는 유일한 식별자와 여러 인스턴스·속성을 가져야 한다.
1. 엔터티는 인스턴스를 유일하게 구별할 식별자를 보유해야 한다. 강의에서는 학번을 예로 든다.
2. 생년월일이 같은 사람이나 동명이인이 있을 수 있으므로 생년월일이나 이름만으로는 학생을 유일하게 구분하기 어렵다. 따라서 학생을 구별하는 학번이 필요하다.
3. 엔터티 안에 저장되는 각각의 데이터는 인스턴스(instance)이며, 인스턴스는 두 개 이상 모여 집합을 이루어야 한다.
4. 엔터티는 속성도 두 개 이상 가져야 한다. 학생 엔터티의 학번·생년월일·이름이 그 예다.
3. 엔터티는 다른 엔터티와 관계를 맺고 업무에 사용되어야 한다.
1. 학생 엔터티는 수강이나 과목 같은 다른 엔터티와 관계를 가져야 한다.
2. 이러한 관계는 ERD에서 선으로 표현할 수 있다.
3. 엔터티는 업무에서 필요해 실제로 사용되어야 한다.
4. 속성에 들어 있는 하나의 값을 속성값이라고 한다.
4. 엔터티 이름은 현업 용어를 사용해 명확하게 정한다.
1. 현업에서 사용하는 용어를 쓰고, 약어는 피한다.
2. 단수 명사를 사용하고, 이름이 중복되지 않도록 하며, 의미가 분명해야 한다.
3. ‘인간들’은 현업 용어가 아니고 복수형이며 의미도 불명확하므로 적절한 엔터티 이름이 아니다.
4. 대상이 학생이라면 학생 엔터티처럼 명확하게 이름을 붙인다.
4.2. 엔터티는 유무형과 발생 시점에 따라 분류된다
엔터티 분류는 시험에 나올 수 있으므로, 강의는 유무형 분류와 발생 시점 분류의 구분을 함께 설명한다.
1. 유무형에 따른 분류는 유형·개념·사건 엔터티다.
1. 강의자는 세 가지 분류를 외워 둘 것을 권하며, 보기 중 성격이 다른 항목을 고르는 식으로 출제될 수 있다고 설명한다.
2. 유형 엔터티는 물리적 형태가 존재한다. 학생이 그 예다.
3. 개념 엔터티는 물리적 형태는 없지만 개념적으로 존재한다. 과목이 그 예다.
4. 사건 엔터티는 특정 시점에 발생한 사건을 나타낸다. 수강이 그 예다.
2. 발생 시점에 따른 분류는 기본·중심·행위 엔터티다.
1. 기본 엔터티는 다른 엔터티에 영향을 받지 않고 독립적으로 존재할 수 있다. 학생과 과목이 그 예다.
2. 중심 엔터티는 기본 엔터티와 행위 엔터티를 연결한다. 강의에서는 수강 신청을 중심 엔터티의 사례로 든다.
3. 행위 엔터티는 두 개 이상의 엔터티를 바탕으로 생기는 행위를 나타낸다. 강의에서는 학점·출석 횟수·출석률처럼 변할 수 있는 정보를 예로 설명한다.
4. 중심 엔터티와 행위 엔터티는 기본 엔터티가 있어야 의미가 생기므로, 기본 엔터티처럼 독립적으로 존재할 수 없다.
5. 속성·키·도메인
5.1. 속성은 분리되지 않는 최소 데이터 단위다
속성은 더 이상 나눌 수 없는 최소 단위로 저장해야 하며, 엔터티를 구성하고 주식별자에 따라 결정되는 값이다.
1. 속성은 원자성을 지닌 최소 데이터 단위다.
1. 속성은 더 이상 분리되지 않는 최소 데이터 단위이며, 이를 원자성이라고 한다.
2. 한 학생이 수학과 과학을 듣는다는 정보를 하나의 값으로 묶어 저장하지 않고, 과목별로 나누어 저장해야 한다.
3. 나눌 수 있는 정보를 분리하지 않고 한 값에 함께 넣으면 원자성 원칙에 맞지 않는다.
2. 속성은 엔터티를 구성하고 한 속성값씩 저장한다.
1. 엔터티는 속성들의 집합이다.
2. 각 속성에는 여러 값을 한꺼번에 넣는 것이 아니라 속성값을 하나씩 저장해야 한다.
3. 속성은 주식별자에 함수적으로 종속되어야 한다.
1. 함수적 종속은 한 속성의 값으로 다른 속성의 값이 유일하게 결정되는 관계다.
2. 학번을 알면 학생의 생년월일과 이름이 유일하게 결정되는 것이 예다.
3. 앞에서는 학번을 ‘반장’에 비유했지만, 이후에는 주식별자라는 용어를 사용한다.
4. 주식별자의 나머지 속성이 유일하게 결정되어야 하며, 속성은 업무에서 관리되어야 한다.
4. 속성은 여러 기준으로 분류하며, 기본 키와 외래 키를 구분한다.
1. 강의는 속성 이름에 관한 설명은 엔터티 명명 규칙과 비슷하므로 확인하도록 안내한다.
2. 속성은 특성, 분해 가능 여부, 구성 방식에 따라 분류할 수 있다. 강의에서는 이 가운데 기본 키와 외래 키를 설명한다.
3. 기본 키(PK)는 인스턴스를 유일하게 구별하는 속성이다. 즉 주식별자에 해당한다.
4. 외래 키(FK)는 다른 엔터티와 관계를 맺도록 연결하는 속성이다.
5. 외래 키는 다른 엔터티의 기본 키를 가져와 관계를 연결한다.
1. 개념적 모델링에서는 학생과 수강 신청 사이의 관계를 선으로 표현할 수 있다.
2. 그러나 컴퓨터는 그림의 선만으로 관계를 처리하지 못하므로, 논리적 구조에 관계 정보를 나타내야 한다.
3. 학생의 기본 키인 학번을 수강 신청 쪽에 넣어 연결한다. 이렇게 다른 엔터티의 주키를 가져와 사용하는 속성이 외래 키다.
4. 학생은 수강 신청의 부모 엔터티이고 수강 신청은 자식 엔터티다. 자식 엔터티는 부모 엔터티의 기본 키를 외래 키로 포함한다.
5.2. 도메인은 속성값의 허용 범위를 정한다
도메인은 속성이 가질 수 있는 값의 제한 사항을 정해 데이터의 무결성을 지키도록 한다.
1. 도메인은 속성이 가질 수 있는 값의 범위를 제한한다.
1. 성별 속성에는 남녀만 들어가게 할 수 있다.
2. 나이 속성에는 0부터 120까지의 정수만 들어가게 할 수 있다.
2. 값의 제한은 데이터 무결성을 보장하는 데 도움을 준다.
1. 적절한 제한을 두면 허용되지 않는 값이 입력되는 것을 막을 수 있다.
2. 무결성은 데이터에 결함이 없는 상태를 의미한다.
6. 관계의 종류·차수·선택 사양
관계는 엔터티 간의 논리적 연관성이며, 관계명·차수·선택 사양을 통해 관계의 성격을 표현한다.
1. 관계는 엔터티 사이의 논리적 연관성이다.
1. 관계는 엔터티 간의 논리적인 연관성을 뜻한다.
2. 강의는 관계를 존재적 관계와 행위적 관계로 나누어 소개한다.
3. 존재적 관계는 한 엔터티가 존재해야 다른 엔터티가 존재할 수 있는 관계를 말하며, 강의에서는 부서와 관련된 예를 든다.
4. 행위적 관계는 학생과 수강 사이에서 ‘수강한다’라는 사건에 의해 생기는 관계다.
2. IE 표기법과 UML은 관계를 구분하는 방식이 다르다.
1. ERD는 데이터베이스에서 사용하는 추상적 약속이며, 더 넓은 프로그래밍 관점에서는 UML이라는 표현을 사용한다.
2. UML은 존재적 관계와 행위적 관계를 구분하지만, IE 표기법에서는 이를 구분하지 않는다.
3. 시험에 자주 나오지는 않지만 출제된 적이 있으므로 개념을 알아두라고 안내한다.
3. 관계는 관계명·차수·선택 사양으로 설명한다.
1. 관계를 표현하는 세 요소는 관계명, 관계 차수, 선택 사양이다.
2. 관계명은 엔터티 사이의 관계를 설명하는 이름이다. 학생과 학과는 ‘소속된다’, 학생과 수강은 ‘수강한다’로 표현할 수 있다.
3. 관계 차수는 관계에 참여하는 엔터티 인스턴스의 수를 나타낸다.
1. 학생과 학과는 1:1 관계의 예로 든다.
2. 학생 한 명이 여러 건의 수강 신청을 할 수 있으므로 학생과 수강은 1:M 또는 1:N 관계다. 여기서 M과 N은 다수라는 뜻이다.
3. 학생 한 명이 여러 과목을 신청하고, 과목 하나에도 여러 학생이 신청할 수 있으면 학생과 과목은 M:N 관계다.
4. 선택 사양은 엔터티가 관계에 반드시 참여하는지 여부를 나타낸다.
1. 학생은 수강 신청을 할 수도 있고 하지 않을 수도 있으므로 선택적으로 참여할 수 있다.
2. IE 표기법은 동그라미로 선택 참여를 나타낸다. Barker 표기법은 점선으로 나타낸다.
7. 교차 엔터티와 관계 점검
7.1. M:N 관계는 교차 엔터티로 나눈다
관계형 데이터베이스에서는 M:N 관계를 그대로 표현하기 어려우므로, 중간에 교차 엔터티를 둬 두 개의 관계로 표현한다.
1. 관계형 데이터베이스는 테이블 사이의 관계로 데이터를 표현한다.
1. 여러 종류의 데이터베이스 가운데 학교와 회사에서 널리 사용하는 기본적인 형태로 관계형 데이터베이스를 소개한다.
2. 관계형 데이터베이스는 표, 즉 테이블 형태로 구성되며 테이블 간의 관계를 표현한다.
2. M:N 관계는 교차 엔터티를 이용해 표현한다.
1. 관계형 데이터베이스에서는 M:N 관계를 직접 표현하기 어렵고, 컴퓨터가 이를 그대로 인식하지 못한다고 설명한다.
2. 학생과 과목처럼 양쪽 모두 여러 개와 연결되는 관계라면 중간에 수강 같은 교차 엔터티를 둔다.
3. 그러면 M:N 관계가 두 개의 관계, 즉 1:N과 M:1 관계로 나뉜다.
7.2. 관계가 적절한지 네 가지 기준으로 확인한다
관계 체크 사항은 ERD에서 설정한 관계가 업무적으로 타당한지 점검하는 기준이다.
1. 관계 체크 사항은 엔터티 사이의 관계가 적절한지 판단하는 데 사용한다.
1. ERD나 데이터 모델을 설계할 때, 설정한 관계가 실제로 적절한지 살펴본다.
2. 관계는 네 가지 기준으로 점검한다.
1. 연관 규칙이 있는가? 학생과 과목 사이에는 학생이 과목을 듣는다는 업무 규칙이 있다.
2. 정보의 조합이 생기는가? 학생과 과목을 연결하면 학생의 수강 정보가 만들어진다.
3. 규칙을 서술할 수 있는가? 학생은 여러 수업을 신청할 수 있고, 수업 하나도 여러 학생에게 신청될 수 있다는 식으로 관계를 설명할 수 있다.
4. 동사로 설명할 수 있는가? 학생과 과목의 관계는 ‘수강한다’로 표현할 수 있다.
8. 식별자의 유형과 식별·비식별 관계
8.1. 식별자는 인스턴스를 유일하게 구분한다
식별자는 하나의 속성 또는 여러 속성의 조합으로 인스턴스를 구별하며, 대표성·생성 위치·속성 수·생성 방식에 따라 나뉜다.
1. 식별자는 인스턴스를 유일하게 구분하는 속성 또는 속성의 집합이다.
1. 식별자는 앞서 ‘반장’이라고 비유한 개념을 더 정확한 용어로 설명한 것이다.
2. 대표성에 따라 주식별자와 보조식별자를 구분한다.
1. 주식별자는 해당 엔터티의 대표 식별자이며, 대표성·유일성·최소성·불변성·존재성을 갖춰야 한다.
1. 대표성은 엔터티를 대표하는 식별자여야 한다는 뜻이다.
2. 유일성은 같은 식별자 값으로 둘 이상의 인스턴스가 구별되지 않는 상태를 방지하는 성질이다. 학번 101번으로 한 학생만 찾아야 한다.
3. 최소성은 식별에 필요한 최소한의 속성만 사용한다는 성질이며, 강의에서는 뒤에서 다시 설명한다고 안내한다.
4. 불변성은 식별자 값이 바뀌지 않아야 한다는 뜻이다.
5. 존재성은 값이 비어 있지 않아야 한다는 뜻이다. 식별자에 NULL이 있으면 안 된다.
2. 학생 엔터티에서는 학번이 주식별자의 예다.
3. 보조식별자는 유일하게 구분할 수 있지만 엔터티를 대표하지는 않는 식별자다.
4. 학생의 주민등록번호도 개인을 유일하게 구분할 수 있지만, 학교의 학생 엔터티에서는 학번이 더 대표적이므로 주민등록번호는 보조식별자, 즉 대체키가 된다.
3. 식별자는 엔터티 내부·외부에서 만들어질 수 있다.
1. 내부 식별자는 엔터티 내부에서 자체적으로 생성된다. 학번이 그 예다.
2. 외부 식별자는 다른 엔터티에서 가져온다. 수강 신청의 학번은 학생 엔터티에서 가져온다.
3. 다른 엔터티에서 가져온 학번은 외래 키이면서 외부 식별자다.
4. 식별자는 속성 수에 따라 단일·복합 식별자로 나뉜다.
1. 단일 식별자는 하나의 속성으로 구성된다. 과목명·학번·수강 신청 번호가 예로 제시된다.
2. 복합 식별자는 두 개 이상의 속성을 묶어 구성한다. 강의에서는 수강 신청 번호와 과목명을 함께 쓰는 사례를 든다.
3. 수강 신청 번호만으로는 학점이나 출석 정보를 확인할 수 없지만, 수강 신청 번호와 과목명을 함께 알면 해당 정보를 식별할 수 있다는 설명이다.
5. 현실에 존재하는 본질 식별자와 인위적으로 만든 인조 식별자를 구분한다.
1. 본질 식별자는 업무 과정이나 현실에 실제로 존재하는 식별자다. 학번과 과목명이 예다.
2. 인조 식별자는 데이터베이스를 편리하게 구성하려고 인위적으로 만든 식별자다. 수강 신청 번호가 예다.
8.2. 식별 관계와 비식별 관계는 부모·자식의 연결 방식이 다르다
부모 엔터티의 식별자를 자식 엔터티의 주식별자로 쓰는지, 일반 속성으로 쓰는지에 따라 식별 관계와 비식별 관계가 구분된다.
1. 식별 관계에서는 부모의 식별자를 자식의 주식별자로 사용한다.
1. 부모 엔터티에서 가져온 식별자를 자식 엔터티의 주식별자로 사용한다.
2. 주식별자에는 NULL이 들어갈 수 없다.
3. 따라서 부모인 학생이 사라지면 학생의 식별자를 주식별자로 사용하는 수강 엔터티도 함께 없어지는 등 두 엔터티가 같은 생명 주기를 갖는다.
2. 비식별 관계에서는 부모의 식별자를 자식의 일반 속성으로 사용한다.
1. 부모에게서 받은 속성을 자식의 주식별자로 쓰지 않고 일반 속성으로 사용한다.
2. 일반 속성에는 NULL이 들어갈 수 있으므로, 부모가 사라져도 자식 엔터티가 남을 수 있다.
3. 따라서 부모와 자식의 상호작용이 식별 관계에서는 의무적이지만, 비식별 관계에서는 선택적일 수 있다.
3. 표기법에 따라 식별 관계와 비식별 관계를 알아본다.
1. IE 표기법은 비식별 관계를 점선으로 표현한다.
2. Barker 표기법은 식별자 표시인
#가 있는지로 판단한다. #가 있으면 식별 관계, 없으면 비식별 관계로 파악한다.9. 키의 종류와 무결성
키는 물리적 모델링 단계에서 사용하는 용어이며, 후보키·기본키·대체키·슈퍼키·외래키의 관계와 무결성 제약을 함께 이해해야 한다.
1. 식별자는 논리 모델링 용어이고, 키는 물리 모델링 용어다.
1. 강의자는 SQLD 시험에서 키가 큰 비중으로 다뤄지지 않는 교재도 있지만, 관계형 데이터베이스를 공부할 때는 알아야 할 개념이라고 설명한다.
2. 식별자는 논리 모델링 단계에서 사용하고 키는 물리 모델링 단계에서 사용한다.
2. 후보키는 유일성과 최소성을 만족하며, 기본키는 그중 대표성이 있는 키다.
1. 후보키는 유일성과 최소성을 만족하는 속성 또는 속성의 집합이다.
2. 학생 테이블에서는 학번이나 주민등록번호가 후보키가 될 수 있고, 수강 테이블에서는 학번과 과목명의 조합이 후보키가 될 수 있다.
3. 후보키 가운데 대표성을 가진 키를 기본키라고 한다. 학생 테이블에서는 학번이 대표성을 가지는 예다.
4. 수강 테이블에서는 학번과 과목명의 조합이 후보키이면서 기본키가 될 수 있다.
5. 기본키를 제외한 나머지 후보키는 대체키다. 주민등록번호가 그 예다.
3. 슈퍼키는 유일성은 만족하지만 최소성은 만족하지 않는 키다.
1. 학번과 주민등록번호를 함께 묶어도 한 학생을 유일하게 구분할 수는 있다.
2. 그러나 학번 하나만으로도 학생을 구분할 수 있으므로 두 속성을 함께 쓰는 것은 최소성을 만족하지 않는다.
3. 유일성은 만족하지만 최소성은 만족하지 않는 조합을 슈퍼키라고 한다.
4. 외래키는 다른 테이블의 기본키를 참조한다.
1. 외래키는 다른 테이블의 기본키를 참조해 테이블 간 관계를 맺는다.
2. 수강 테이블의 학번이 학생 테이블의 학번과 연결되어 관계를 형성하는 것이 예다.
5. 기본키와 외래키에는 서로 다른 무결성 제약이 적용된다.
1. 기본키에는 개체 무결성이 필요하다.
1. 기본키에는 NULL이나 중복값이 저장되면 안 된다.
2. 외래키에는 참조 무결성이 필요하다.
1. 참조하는 기본키에 존재하지 않는 학번을 수강 테이블에 넣을 수 없다.
6. 키의 포함 관계는 슈퍼키에서 후보키, 기본키·대체키로 이어진다.
1. 슈퍼키 가운데 최소성을 만족하는 키들이 후보키다.
2. 후보키 중 하나가 기본키가 되고, 기본키로 선택되지 않은 후보키가 대체키가 된다.
키 종류 | 핵심 기준 | 강의에서 든 예 |
|---|---|---|
슈퍼키 | 유일성은 만족하지만 최소성은 만족하지 않을 수 있다. | 학번과 주민등록번호의 조합. |
후보키 | 유일성과 최소성을 모두 만족한다. | 학생의 학번 또는 주민등록번호. |
기본키 | 후보키 가운데 대표성이 있는 키다. | 학생의 학번. |
대체키 | 기본키로 선택되지 않은 후보키다. | 학생의 주민등록번호. |
외래키 | 다른 테이블의 기본키를 참조한다. | 수강 테이블이 참조하는 학번. |
10. 정규화와 이상 현상
10.1. 정규화는 중복을 줄여 이상 현상을 방지한다
정규화는 데이터 중복을 줄이도록 테이블을 분리해 삽입·삭제·갱신 과정에서 생기는 이상 현상을 방지한다.
1. 정규화는 데이터 중복을 최소화하도록 테이블을 분리하는 방법이다.
1. 정규화는 데이터베이스의 이상 현상을 방지하기 위해 중복을 줄이고 테이블을 분리하는 방법이다.
2. 앞에서 배운 엔터티는 테이블 또는 릴레이션이라고도 부른다.
3. 엔터티·테이블·릴레이션은 엄밀하게는 서로 다른 개념이지만, SQLD 시험에서는 같다고 생각해도 무방하다고 설명한다.
2. 정규화가 필요한 이유는 삽입·삭제·갱신 이상을 막기 위해서다.
1. 삽입 이상은 원하지 않는 정보까지 함께 입력해야 하는 문제다.
1. 학생·과목·교수 정보가 한 테이블에 들어 있다고 가정한다.
2. 특정 과목을 듣지 않는 휴학생 정보를 넣더라도, 테이블 구조 때문에 과목명과 교수명까지 넣어야 할 수 있다.
2. 삭제 이상은 어떤 정보를 지울 때 관련된 다른 정보까지 의도치 않게 삭제되는 문제다.
1. 장학을 받는 학생이 자퇴해 그 학생의 정보를 삭제할 때, 과목과 교수 정보까지 함께 사라질 수 있다.
3. 갱신 이상은 중복된 정보 일부만 수정되어 데이터가 서로 달라지는 문제다.
1. 한 과목을 한 명의 교수가 담당한다고 가정한다.
2. 수학 과목의 담당 교수가 바뀌었을 때 일부 데이터만 수정하면, 누가 현재 담당자인지 알 수 없게 된다.
3. 테이블을 분리하면 이상 현상을 줄일 수 있다.
1. 학생 정보는 학생 테이블, 수강 정보는 수강 테이블, 과목 정보는 과목 테이블에 각각 둔다.
2. 휴학생을 추가할 때 학생 테이블에 휴학생 정보만 넣으면 된다.
3. 학생이 삭제되어도 과목 테이블의 과목 정보는 건드릴 필요가 없다.
4. 교수 정보가 바뀌면 과목 테이블의 해당 정보만 바꾸면 되므로 일부 데이터만 갱신되는 문제를 줄일 수 있다.
5. 이처럼 이상 현상을 해결하기 위해 정규화를 수행한다.
10.2. 함수적 종속은 정규화 단계를 이해하는 바탕이다
테이블을 어느 정도로 분리할지는 정규화 단계와 함수적 종속을 바탕으로 판단한다.
1. 테이블 분리의 정도를 정규화 단계라고 한다.
1. 학생·과목 테이블을 몇 개의 테이블로 나눌지에 대한 기준이 정규화 단계다.
2. 강의는 정규화 단계를 살펴보기 전에 함수적 종속을 설명한다.
2. 함수적 종속은 결정자의 값으로 종속자의 값이 유일하게 정해지는 관계다.
1. 속성 A가 속성 B를 유일하게 결정하면 A와 B 사이에 함수적 종속이 있다.
2. 이때 A는 결정자, B는 종속자다.
3. 완전 함수적 종속과 부분 함수적 종속은 결정에 필요한 키의 범위가 다르다.
1. 수강 테이블에 학번·과목명·교수·시험 점수가 있다고 가정한다. 학번과 과목명은 함께 주식별자가 될 수 있다.
2. 학번과 과목명을 모두 알아야 시험 점수가 결정된다면 완전 함수적 종속이다.
3. 과목이 하나의 교수만 개설한다고 가정하면, 과목명만으로도 교수가 정해질 수 있다.
4. 종속자가 기본키 전체에 종속되면 완전 함수적 종속이고, 기본키의 일부만으로 결정되면 부분 함수적 종속이다.
11. 정규화 단계와 분해 사례
11.1. 시험에서는 1·2·3정규형을 중심으로 본다
정규화 단계는 여러 가지지만, 강의는 출제 빈도가 높은 1·2·3정규형에 집중하고 나머지는 특징을 익히도록 안내한다.
1. 정규화 단계는 여섯 가지이며, 시험에서는 1·2·3정규형이 중심이다.
1. 정규화에는 여섯 단계가 있다고 설명한다.
2. BCNF와 4·5정규형도 출제될 수 있지만 빈도는 낮다고 한다.
3. 강의에서는 시험 문제 대부분이 1·2·3정규형에서 나온다고 보고 이 세 단계에 집중한다.
2. 정규화 단계의 특징을 먼저 구분하고, 1정규형부터 확인한다.
1. 강의는 정규화 단계의 특징을 앞글자로 외우도록 안내한다.
2. 1정규형은 도메인이 원자값으로만 구성되어야 한다.
3. 한 학생의 과목 정보를 ‘수학·과학’으로 한 값에 묶지 않고, 학생-수학과 학생-과학처럼 나누어 저장해야 한다.
4. 강의는 1정규형은 이미 적용되었다고 가정한 뒤 2·3정규형을 설명한다.
11.2. 2정규형은 부분 함수적 종속, 3정규형은 이행 함수적 종속을 제거한다
수강 테이블 사례에서 결정자는 남기고 종속자를 분리하는 방식으로 부분 함수적 종속과 이행 함수적 종속을 제거한다.
1. 사례의 수강 테이블에는 학번·과목명·교수·시험 점수·학점이 있다.
1. 강의는 이 사례를 제대로 익히면 2정규형과 3정규형을 구분하기 쉬워진다고 설명한다.
2. 테이블에는 학번, 과목명, 교수, 시험 점수, 학점이 속성으로 들어 있다.
3. 학번과 과목명을 묶은 주식별자가 교수·시험 점수·학점을 모두 결정하는 구조를 목표로 한다.
2. 과목명만으로 교수가 정해지면 부분 함수적 종속이 생긴다.
1. 앞의 가정처럼 과목명만으로 교수를 결정할 수 있다면, 학번을 몰라도 교수 정보가 정해진다.
2. 따라서 교수는 주식별자 전체가 아니라 과목명만으로 결정된다. 이는 부분 함수적 종속이다.
3. 2정규형은 부분 함수적 종속을 제거한다.
4. 과목명이 결정자이므로 과목명은 남기고, 교수 정보는 수강 테이블에서 분리해 별도 테이블에 둔다.
5. 이 분리를 마치면 2정규형이 된다.
3. 시험 점수만으로 학점이 정해지면 이행 함수적 종속이 생긴다.
1. 시험 점수만으로 학점을 정하는 수업을 가정한다.
2. 그러면 학점은 주식별자가 아니라 일반 속성인 시험 점수를 통해 결정된다. 강의에서는 이를 이행 함수적 종속이라고 설명한다.
3. 3정규형은 이행 함수적 종속을 제거한다.
4. 시험 점수는 결정자로 남기고 학점은 별도 테이블로 분리한다.
5. 분리 후 수강 테이블에는 학번·과목명·시험 점수가 남고, 과목 테이블에는 과목명·교수가, 성적 테이블에는 시험 점수·학점이 남는다.
6. 강의가 강조하는 분해 원칙은 결정자는 남기고 종속자는 분리하는 것이다.
12. 조인과 반정규화
정규화로 테이블을 나누면 중복과 이상 현상은 줄어들지만, 여러 테이블을 연결해 조회해야 하므로 조인이 필요하며 성능을 위해 반정규화를 선택할 수도 있다.
1. 조인은 관계가 있는 여러 테이블을 연결해 필요한 정보를 조회하는 방법이다.
1. 테이블을 분리한 뒤에는 수학 과목의 교수처럼 여러 테이블에 나뉜 정보를 확인할 때 테이블을 연결해야 한다.
2. 관계가 있는 테이블을 SQL을 사용해 연결하여 데이터를 조회하는 것이 조인(join)이다.
3. SQL은 데이터베이스를 사용하는 언어이며, 강의는 별도 과목에서 자세히 다룰 예정이라고 설명한다.
2. 반정규화는 조인 성능 저하를 줄이기 위해 테이블을 다시 합치는 작업이다.
1. 정규화된 테이블은 여러 테이블에 접근해야 하므로 조인 성능이 낮아질 수 있다.
2. 성능 저하를 줄이려고 이상 현상을 감수하면서 정규화와 반대 방향으로 테이블을 합칠 수 있다. 이를 반정규화라고 한다.
13. 계층형·상호 배타적 관계 데이터 모델
계층형 데이터 모델은 같은 테이블의 상위·하위 관계를 표현하고, 상호 배타적 관계는 둘 중 하나의 부모 테이블만 연결되는 상황을 표현한다.
1. 계층형 데이터 모델은 자기 자신을 참조해 조인한다.
1. 계층형 데이터 모델은 같은 데이터 안의 상사와 부하처럼 자기 자신을 참조하는 방식이다.
2. 예시에서 박 이사는 상사가 없고, 이 부장은 박 이사와 연결된다.
3. 김 과장은 이 부장과 연결되고, 서 대리와 차 대리는 김 과장과 연결된다.
4. 이처럼 조직의 상하 관계를 계층적으로 연결하는 것이 계층형 데이터 모델이다.
2. 상호 배타적 관계에서는 가능한 부모 테이블 중 하나만 연결된다.
1. 주문 테이블에 개인 번호와 법인 번호가 있을 때, 개인 고객이 결제하면 개인 번호가 들어가고 법인 고객이 결제하면 법인 번호가 들어간다.
2. 이때 개인 테이블과 법인 테이블 가운데 하나만 연결할 수 있다.
3. 강의에서는 이러한 관계를 별도의 표시로 표현한다고 설명한다.
14. 트랜잭션과 ACID 특성
14.1. 트랜잭션은 데이터베이스 작업의 논리적 단위다
트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위로 처리되며, 성공하면 커밋하고 오류가 나면 롤백한다.
1. 트랜잭션은 데이터베이스에서 논리적으로 작업되는 단위다.
1. 하나의 작업을 논리적으로 묶어 처리하는 단위를 트랜잭션이라고 한다.
2. 트랜잭션의 대표 연산은 커밋과 롤백이다.
1. 커밋(commit)은 트랜잭션이 성공적으로 끝났을 때 결과를 데이터베이스에 저장하는 작업이다.
2. 롤백(rollback)은 오류가 발생했을 때 이전 상태로 되돌리는 작업이다.
14.2. ACID는 트랜잭션의 네 가지 핵심 특성이다
강의는 ACID의 네 특성인 원자성·일관성·고립성·지속성을 계좌 이체 사례로 설명하고, 격리 수준에 따른 문제도 간단히 언급한다.
1. ACID는 원자성·일관성·고립성·지속성의 앞글자를 딴 트랜잭션 특성이다.
1. 이 네 특성은 1과목뿐 아니라 2과목 시험에도 나올 수 있는 중요 내용이라고 강조한다.
2. 강의에서는 이를 ACID 특성으로 소개한다.
2. 원자성은 작업이 모두 수행되거나 전혀 수행되지 않아야 한다는 뜻이다.
1. A 계좌에서 100만 원을 빼 B 계좌에 넣는 이체를 예로 든다.
2. A에서 돈만 빠지고 B에 입금되지 않는 상태가 되어서는 안 된다.
3. 이체 작업은 전체가 함께 수행되거나 아무것도 수행되지 않아야 하며, 이를 원자성이라고 한다.
3. 일관성은 트랜잭션 전후에 데이터가 규칙을 지키는 성질이다.
1. 작업 중 오류가 없어야 한다고 설명한다.
2. 계좌 이체를 예로 들면 두 계좌의 합이 유지되는 상태가 일관성이다.
4. 고립성은 동시에 실행되는 작업이 서로 간섭하지 않는 성질이다.
1. 송금 중에 다른 사람이 갑자기 같은 계좌에서 일부 금액을 처리하려 하더라도, 진행 중인 작업이 서로 간섭하면 안 된다.
5. 지속성은 완료된 결과가 시스템 장애 뒤에도 보존되는 성질이다.
1. 송금 도중 시스템이 종료되었다가 다시 켜지는 상황을 예로 든다.
2. 완료된 결과는 영구적으로 저장되어 있어야 하며, 이를 지속성이라고 한다.
3. 트랜잭션의 네 특성은 매우 중요하다고 강조한다.
6. 격리 수준에 따라 여러 트랜잭션 문제점이 생길 수 있다.
1. 격리 수준이 높아질수록 트랜잭션이 고립되는 정도가 커지며, 그에 따른 문제점도 나타날 수 있다.
2. 아직 커밋되지 않은 데이터를 읽거나, 같은 데이터를 다시 읽었을 때 값이 달라지거나, 조회되는 행의 개수가 바뀌는 문제가 언급된다.
3. 강의에서는 이 문제가 시험에 깊이 나오지는 않는다고 보고 개념만 소개하며, 더 자세한 내용은 채널의 데이터베이스 개론 특강에서 다룬다고 안내한다.
15. NULL의 의미와 표기법
15.1. NULL은 0이나 빈 문자열과 다르다
NULL은 값이 없는 상태이므로 0이나 빈 문자열과 다르며, NULL이 포함된 연산과 집계는 별도로 이해해야 한다.
1. NULL은 값이 없는 상태이며 0이나 빈칸과 다르다.
1. NULL은 비어 있는 값이다.
2. 0이나 빈칸은 값이 존재하지만, NULL은 값 자체가 없는 상태다.
2. NULL은 일반적인 값처럼 비교하거나 연산할 수 없다.
1. 값이 없기 때문에 NULL은 다른 값과 비교할 수 없다.
2. 예를 들어 NULL+1과 NULL+2 중 어느 쪽이 큰지 판단할 수 없다.
3. NULL+1도 NULL이고 NULL+2도 NULL로 설명한다.
3. NULL은 집계 함수 처리에서 제외될 수 있다.
1. 강의는 합계·최댓값·최솟값을 구하는 집계 함수에서 NULL이 제외된다고 설명한다.
2. NULL 관련 내용은 해당 과목에서 더 자세히 다룰 예정이라고 안내한다.
15.2. 표기법과 ERD 예시에서 NULL 허용 여부를 읽는다
IE 표기법과 Barker 표기법의 차이를 알고, 관계선·식별자·선택 사양·NULL 허용 여부를 함께 읽는다.
1. IE 표기법은 NULL을 직접 표현하지 않고, Barker 표기법은 NULL 허용 여부를 표시한다.
1. 강의에서는 IE 표기법으로 NULL을 표현할 수 없다고 설명한다.
2. Barker 표기법에서는 NULL을 허용하면 동그라미, 허용하지 않으면 별표로 표시한다.
3. 예시에서 생년월일과 수강 신청자 속성은 NULL을 허용하며, 이름은 NULL을 허용하지 않아 필수 입력이다.
2. ERD 표기법에서 관계·키·선택 여부를 함께 읽을 수 있다.
1. 강의는 앞서 배운 IE 표기법을 점검하는 사례로 ERD에 나타난 정보를 읽는다.
2. 학생과 수강 신청은 학생 한 명이 여러 건을 신청할 수 있는 1:M 관계다.
3. 학생의 주식별자는 학번이고, 수강 신청의 주식별자는 수강 신청 번호다.
4. 학번이 외래 키로 학생과 수강 신청을 연결한다.
5. Barker 표기법에서 식별자 표시인
#가 없으므로 비식별 관계로 해석한다. 따라서 부모와 자식의 생명 주기가 같을 필요가 없다.6. 점선은 선택 사양을 나타내므로 학생은 수강 신청을 해도 되고 하지 않아도 된다.
16. 본질 식별자와 인조 식별자
본질 식별자는 현실에 존재하고, 인조 식별자는 인위적으로 만든다. 인조 식별자는 설계와 유지보수를 쉽게 하지만 중복과 불필요한 인덱스가 생길 수 있다.
1. 본질 식별자는 현실에 존재하고 인조 식별자는 인위적으로 만든다.
1. 강의는 앞에서 소개한 두 식별자를 이 부분에서 더 자세히 설명한다.
2. 현실에 존재하는 식별자를 본질 식별자라고 한다.
3. 인위적으로 만든 수강 신청 번호가 인조 식별자의 예다.
2. 인조 식별자는 업무 변화와 분리된 설계를 돕고 개발·유지보수를 쉽게 한다.
1. 인조 식별자는 실제 비즈니스의 변화와 무관하게 설계할 수 있고, 개발과 유지보수가 편리하다는 장점이 있다.
2. 학번과 과목명을 복합 주식별자로 사용하는 상황을 가정한다.
1. 이 경우 두 속성을 함께 사용하는 복합 키가 된다.
2. 복합 키를 다루면 개발이 복잡해질 수 있다.
3. 과목명이 바뀌면 주식별자에 포함된 정보가 바뀌므로 관리가 복잡해진다.
4. 수강 신청 번호라는 인조 식별자를 만들면 이런 복잡성을 줄여 설계할 수 있고, 개발·유지보수도 쉬워진다.
3. 인조 식별자에는 데이터 중복과 불필요한 인덱스라는 단점이 있다.
1. 인조 식별자를 사용하면 데이터가 중복될 수 있다.
2. 불필요한 인덱스가 생성될 수 있다.
17. 강의 마무리
강의자는 1과목 내용을 마무리한다.
- 강의는 1과목 내용을 마친다고 알리며 종료한다.