본 게시물은 데이터베이스 과목의 강의영상과 강의자료를 바탕으로 작성한 학습용 게시물입니다.
데이터베이스 설계 순서 (database design phases)
1. 개념적 데이터 모델링 (conceptual data modeling)
- E-R modeling
- E-R 다이어그램
2. 논리적 데이터베이스 설계 (logical database design)
- 관계형 데이터베이스 설계 (relational database design)
- 테이블 스키마 (tabla schemes)
3. 물리적 데이터베이스 설계 (physical database design)
- 성능 관점 : 데이터를 효과적으로 저장하고 인덱싱하는 방법
- 저장 구조(storage scheme)
- 테이블 인덱스 (table indexes)
E-R model
- 개념의 집합 (a set of concepts)
- 개념 : 엔티티, 관계, 속성 - 개념적 스키마를 만드는 데 사용할 수 있는 그래픽 기호
- 그래픽 기호 : E-R 다이어그램 - original E-R model - Peter Chen (1976)
- Crow's foot notanion - Gordon Everest (1976)
Crow's foot Notation
Entities (개체)
- 식별 가능(can be indentified)하고, 유저가 추적하고자 하는 것
- Enitity class
: 주어진 유형의 entity 모음 (a collection of entities of a given type) - Entity instance
: 특정 entity의 발생 (the occurence of a paticulat entity) - 일반적으로 entity class에는 많은 entity instance
Identifiers (식별자)
- entity instance의 이름을 지정하거나 식별하는 속성
- entity instance의 식별자는 entity의 애트리뷰트 중 하나 이상으로 구성
- 데이터 모델에서의 식별자는 데이터베이스 설계에서의 key가 된다. ( 특히, 기본키)
- entitys have identifiers
- tables (or relations) have keys
Relationships (관계)
- 개체는 관계에서 서론 연관 될 수 있다.
- 원래 E-R 모델에서 관계는 애트리뷰트를 가질 수 있었지만, 최근에는 더 이상 수행 x
- 관계 클래스에는 둘 이상의 개체 클래스 포함가능
- degree : 관계의 개체 클래스 수
- degree 2 : 두 개체가 이진 관계
- degree 3 : 세 개체가 삼항 관계 - 개체와 테이블(관계)의 주요 차이점은 외래 키를 사용하지 않고도 개체 간 관계 표현가능
- 개체의 존재와 개체 간의 관계가 불확실한 초기 설계 프로세스에서 개체 작업이 더 쉬워짐
Cardinality in Relationship
- cardinality : 개수, 숫자로 표현됨
- Maximum cardinality : 관계에 참여할 수 있는 최대 entity instance 수
- One-to-One [1:1] ex) 직원 한 명당 하나의 명찰
- One-to-Many [1:N] ex) 직원 한 명이 여러 대 컴퓨터 (현실에서 가장 많음)
- Many-to-Many [N:M] ex) 직원 여러명의 여러 능력 - Minimum cardinality : 관계에 참여해야하는 최소 entity instance 수
- zero(0) : entity에 의한 관계 참여는 선택 사항, 관계에 참여하는 entity instance가 없어도 o
- one(1) : 적어도 하나의 entity instance가 관계에 참여해야함
Parent and Child Entites
- parent entity / parent : 일 대 다(one-to-many) 관계에서 일(one)에 속하는 entity
- child entity / child : 일 대 다(one-to-many) 관계에서 다(many)에 속하는 entity
ID-Dependent Entites
- 식별자에 다른 entity(parent)의 식별자가 포함된 entity(child)
- parent가 없다면 child 생성 x
- parent의 논리적 확장 (logical extension)이나 서브 유닛(sub-unit)
- 반드시 parnet 있어야함 (minimum cardinality : 1 )
![]() |
![]() |
![]() |
1대 n 어떤 BUILDING은 APARTMENT 연결 x |
1대 n 어떤 PAINTING은 PRINT 연결 x |
1 대 n 모든 환자는 진료 반드시 연결 |
Weak Entities (약한 개체)
- 다른 개체에 의존하여 존재하는 개체
- 모든 ID-Dependent entity는 weak entity
- non-ID-dependent entity 중 weak entity 있음
- parnet의 식별자는 weak child entity의 식별자에 나타나지 x
- 특정 표기법 x
Strong Entity Patterns
![]() |
![]() |
![]() |
1대1 / 비식별 LOCKER 연결 안 된 MEMBER 존재가능 MEMBER 연결 안 된 LOCKER 존재가능 |
일 대 다 . 비식별 DEPARTMENT 연결 안 된 COMPANY 존재 가능 |
다 대 다 / 비식별 DEPARTMENT 연결 안 된 COMPANY 존재 가능 PART 연결 안 된 COMPANY 존재 가능 |
ID-Dependent Relationships : The Association Pattern
- PART와 COMPANY의 연결에 따라 달라지는 price 속성
- price 속성을 PART에 추가할 것인가? COMPANY에 추가할 것인가?
- PART와 COMPANY를 식별 상속 해 새로운 개체 생성
- 연관패턴에 대한 ID 종속 개체의 생성
ID-Dependent Relationships : The Mulivalude Attribute Pattern
- 여러개가 존재 가능한 PhoneNumber 속성
- PHONE 개체 따로 생성
- 여러개가 존재 가능한 PhoneNumber와 CONTACT 속성
- PHONE과 CONTACT 개체 따로 생성
D-Dependent Relationships : The Archetype/Instance Pattern
- 원형 / instance
- ID-dependent child 개체가 추상 또는 논리적 parent의 물리적 표현(instance)일 때 발생
Recursive Relationships
- 자기자신과의 관계를 갖는 개체가 존재
- boxcar 개체 간 1:1 재귀 관계 존재
- EMPLOYEE 개체 간 1:n 재귀 관계 존재
- PART 개체 간 n:m 재귀 관계 존재
'LECTURE > [2021-1] 데이터베이스' 카테고리의 다른 글
[데이터베이스] Database Index (0) | 2021.06.10 |
---|---|
[데이터베이스] E/R Model을 Relational Database로 변환 (0) | 2021.06.10 |
[데이터베이스] 데이터베이스 설계 (0) | 2021.06.10 |
[데이터베이스] DB응용프로그래밍 : mySQL 및 python 기반 (0) | 2021.06.10 |