2026. 8. 6. 21:46ㆍSQLD
**문제출처: https://yunamom.tistory.com/397 **
1. 기본 엔티티
다른 엔티티의 존재에 의존하지 않고, 업무에 원래부터 존재하는 독립적인 엔티티
- 독립적으로 생성 가능
- 다른 엔티티로부터 발생하지 않음
- 여러 업무의 기준 정보가 됨
'프로젝트'는 보통 회사, 고객, 계약 등 업무가 발생하여 만들어짐
프로젝트는 업무의 중심에서 발생하므로 중심 엔티티로 분류
2. 제3정규형(3NF)
- 1NF: 컬럼 값을 원자값으로
- 2NF: 부분 함수 종속 제거
- 3NF: 이행 함수 종속 제거
ex) 이행 함수 종속: A->B, B->C 이면 A->C

사원번호 -> 부서번호, 부서번호 -> 부서명 이면
사원번호 -> 부서명 성립,,


이행 함수 종속성을 배제하지 않는다는 정반대 설명
"주식별자가 아닌 속성에 종속된 속성을 별도 테이블로 분리"
3. 데이터 모델링 View
- 데이터 관점: What, 어떤 데이터를 관리하는가 ex) 관리해야 할 고객 정보는 무엇인가
- 프로세스 관점: How, 업무가 어떻게 수행되는가 ex) 고객이 상품을 어떻게 주문하는가
- 상관 관점: Interaction, 서로 어떤 영향을 주고받는가 ex) 업무를 수행할때 어떤 데이터가 수정되는가
4. 중복성
같은 데이터를 여러 곳에 반복해서 저장하는 상태

부서명이 영업 1팀으로 바뀌었는데 고객 테이블만 수정하면
같은 부서인데 이름이 영업팀, 영업1팀 2개가 됨,,
중복성의 핵심 문제는
- 저장 공간 낭비
- 여러 곳을 함께 수정해야 함
- 일부만 수정 시 데이터 불일치 발생
5. 마더보트와 컴퓨터 간의 ERD 관계 해석
단, 관계선에 o 표시 존재
ERD 관계선 끝의 기호
- o: 선택, 0개 가능
- |: 반드시 1개
- 까마귀발: 여러 개
즉, o가 컴퓨터 쪽 관계에 붙어 있다면 컴퓨터 한 대에 연결되는 마더보드는
없을 수도 있다!
* 답: 컴퓨터에 마더보드를 장착할 수도 있고, 장착하지 않을 수도 있다.
6. 비식별자 관계
부모 엔티티의 주식별자가 자식에게 내려오긴 하지만,
자식의 주식별자에는 포함되지 않고 일반 속성인 FK로만 사용되는 관계

부서번호가 사원 테이블에 내려왔지만 사원의 PK는 사원번호,,
따라서 부서와 사원은 비식별자 관계!
- 여러 엔티티가 하나로 통합되었더라도 각 엔티티가 별도의 관계를 가짐
- 자식 엔티티에서 받은 속성이 반드시 필수가 아니어도 무방
- 자식 엔티티에서 주식별자로 사용 가능하더라도 별도의 주식별자 생성
- 각 엔티티의 데이터 생명주기를 동일하게 관리하는 경우
생명주기가 동일하면 부모와 자식의 결합도가 강하다는 뜻
따라서 부모 PK를 자식 PK에 포함하는 식별자 관계가 더 적합
키워드: 생명주기 동일, 존재 종속
-> 이러면 식별자 관계!
7. 정규화
- 1정규화: 반복 속성 제거, 원자값
- 2정규화: 부분 함수 종속 제거
- 3정규화: 이행 함수 종속 제거
- BCNF 정규화: 모든 결정자가 후보키가 되도록 정리
8. 상호배타적 관계
하나의 상위 엔티티가 여러 하위 엔티티 중 오직 하나에만 속하는 관계

차량 한 대는 법인차량, 개인차량 둘 중 하나일뿐
동시에 둘 다일 수는 없다!
9. 학생과 수강 엔티티 간의 ERD
- ERD(Entity Relationship Diagram)
: 데이터베이스 설계도
데이터베이스에 어떤 데이터가 있고, 데이터끼리 어떻게 연결되는지를 그림으로 나타냄

학생 한 명은 여러 과목을 수강할 수 있고,
과목 하나에도 여러 학생이 들어올 수 있음
학생과 과목은 원래 다대다 관계인데 중간에 수강 엔티티를 두는 구조
- 수강번호는 학생별로 중복되어 부여될 수 있다.
주식별자가 하나가 아니라 (학생번호, 수강번호) 두 속성의 조합으로 구성됨.
이걸 복합 식별자 aka 복합키라고 부른다.
10. 트랜잭션(Transaction)
- 원자성: 더 이상 나눌 수 없다. A
- 일관성: 트랜잭션 전후에도 규칙이 유지돼야 한다. C
- 고립성: 동시에 실행 시 서로 방해하지 않아야 한다. I
- 지속성: 한번 커밋된 결과는 장애가 나도 보존돼야 한다. D
'SQLD' 카테고리의 다른 글
| 58회 기출문제 2 (SQL) (0) | 2026.08.06 |
|---|