2025. 4. 15. 16:26ㆍComputer Science/데이터베이스
1. Introduction
현실 세계 → 컴퓨터 세계
: 현실 → 이해 → 형식화(Formalism) → 설계/코딩 → 응용/운영
- 왜 형식화가 필요한가? : 검증 가능(verifiable), 구현 가능(machine understandable)
ex) 수식, 다이어그램(UML), 대수(Algebra)
SW 생명주기 vs DB 생명주기
SW life cycle | DB life cycle |
요구사항 분석 | 요구사항 분석 |
기능 명세 | 모델링 |
설계 | 스키마 설계 |
구현 | DB 환경 구축 |
테스트 | 데이터 입력, 품질관리 |
유지보수 | 질의 및 관리 |
DB의 2가지 관점
- 논리적(Logical or Conceptual): 정보 구조 중심 - DB 설계, 모델
- 물리적(Physical): 파일 구조, 인덱스 등 - DBMS 관련
→ 논리/물리 독립성 중요! 논리구조 바뀌어도 물리구조 바뀌지 않도록!
데이터베이스 3계층 스키마 구조
[External Schema] ← 사용자 관점 (뷰) ↑ [Conceptual Schema] ← 전체 구조 ↑ [Physical Schema] ← 실제 저장 방식 |
2. 데이터베이스 모델의 역사
연도 | 인물 | 모델 |
1970 | Edgar F. Codd | Relational Model (관계형 데이터 모델) |
1976 | Peter Chen | Entity-Relationship (E-R 모델) |
1990 | James Rumbaugh 외 | Object-Oriented Modeling (객체 모델링) |
1999 | Booch + Rumbaugh | UML Class Diagram |
3. UML Class Diagram
Class Diagram: 시스템의 정적인 구조(클래스와 그 관계)를 그래픽으로 표현
- Class: 객체 집합 (속성+연산 포함)
- Attributes: 클래스의 속성 (데이터 필드)
- Operations: 클래스 수행 동작
- Relationships: 클래스 간 관계
- Association: 클래스간 대등한 연관 관계
- Generalization: 상속 관계 is-a
- Aggregation / Composition: 포함 관계 has-a
- Constraints: 제약조건 (키, 참조 무결성)
Class
Association (연관 관계)
: 클래스 간 의미 있는 연결
- Association Name: 관계 의미 표현 (보통 동사)
- Role Name: 각 끝점에서의 역할 (보통 명사)
- Multiplicity(=Cardicality): 인스턴스 수 제한 (ex. 1, *, 0..3)
Generalization (상속 관계)
: is kind of, is-a
- 상위 클래스의 속성, 동작을 하위클래스가 상속
- 하위 클래스는 상위 클래스의 구체적 사례
- {abstract} : UML에서 추상적 클래스는 기울임꼴 처리
- ex) 구기종목 - 축구, 농구, 배구
- 하위클래스는 속성 및 연산을 추가하거나 재정의(override) 가능
Aggregation vs Composition (포함 관계)
: is a part of
○ Aggregation | ● Composition (=strong aggregation) |
전체 - 부분 (느슨한 결합) | 전체 - 부분 (강한 결합) |
독립적 | 종속적 |
부서 - 직원 | 병원 - 수술팀 |
삭제 시 부분은 존재 가능 | 삭제 시 부분도 같이 삭제 |
제약조건 (Constraints)
- Key Constraints : 클래스마다 고유하게 식별할 수 있는 속성 존재 → PK(1개)로 설정 ex. 주민번호, 이름+주소
- Referential Integrity: 참조 일관성 - 연관된 객체 존재해야 함 → 외래키(Foreign Key)
약한 엔티티 (Weak Entity Set)
: 자신이 교유한 primary key를 갖지 못하고, 다른 엔티티의 key를 이용해서만 구별되는 엔티티
(독립적인 키가 없어, 다른 클래스의 PK와 조합해야 식별 가능)
ex) Player 클래스의 key가 back number만으론 부족 : 스스로 key를 가질 수 없고 다른 엔티티의 key를 빌려야만 식별 가능
→ (back number, team name) 조합 필요
→ 이때 Player는 Weak Entity, Football Team은 Supporting Entity
Observation1: 왜 약한 엔티티가 생기게 되는가?
-> 현실 세계에선 독립적으로 식별되지 않는 개체들이 있다. ex) player를 구별하기에 등번호만으로는 부족한 것처럼
Observation2: 만약 Football team도 약한 엔티티라면?
-> 그럼 Player는 약한 엔티티의 약한 엔티티가 된다.
-> 다이어그램 구조와 설계가 더 복잡해지고, 지원 게층 구조가 필요하다.
Observation3: Referential Integrity (참조 무결성)
-> Player가 참조하는 Football team이 항상 존재해야 한다.
-> 데이터 삽입, 삭제 시 무결성 검사 필요
Q4. 다대다 관계에서도 supporting class가 될 수 있을까?
-> 다대다 관계에서도 충분히 '식별 가능한' 클래스이기 때문에 supporting class 될 수 있다!
4. ER Model
: UML보다 더 간단히 표현 가능
- generalization과 aggregation/composition 관계 구별 안한다 -> isa
- 카디널리티 표현 방식을 화살표로 한다.
- Multy-way 표현 가능 (ex. 3각 관계) : UML에선 못한다.
'Computer Science > 데이터베이스' 카테고리의 다른 글
[데이터베이스] 2. Relational Model (0) | 2025.04.15 |
---|