일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- C언어
- KAKAO
- cloud
- Spring
- suricata
- Resnet
- VSCode
- GoogleDrive
- Python
- API
- Web
- ChatGPT
- Docker
- colab
- Spring Boot
- Powershell
- 고등학생 대상
- OSS
- 인터넷의이해
- Rocky Linux
- rnn
- 국가과제
- LINUX MASTER
- 코딩도장
- Github
- git
- Machine Learning
- 크롤링 개발
- Database
- ICT멘토링
- Today
- Total
코딩두의 포트폴리오
Database - # 04 본문
# 데이터베이스 개발 시 데이터 저장 구조를 먼저 결정 -> 결정한 사항에 문제 없는지 검토하는 설계 과정을 거침
# 데이터베이스를 설계하는 핵심 방법과 도구의 이해 필요
4.1 데이터 모델링과 데이터 모델의 개념 이해
데이터 모델링 (data modeling)
- 데이터베이스 설계의 핵심 과정
- 현실 세계에 존재하는 데이터를 컴퓨터 세계의 데이터베이스로 옮기는 변환 과정
- 데이터 모델링의 고려사항
- 데이터베이스에 저장하여 관리할 만한 가치가 있는 중요 데이터 선별 -> 추상화
- 데이터베이스의 저장 구조 결정 -> 표 형태의 저장을 결정
데이터 모델링의 2단계
- 개념적 데이터 모델링 - 현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업
- 논리적 데이터 모델링 - 개념 세계의 데이터를 데이터베이스에 저장할 구조를 결정하고 이 구조로 표현하는 작업
데이터 모델 (data model)
- 데이터 모델링의 결과물을 표현하는 도구
- 개념적 데이터 모델 - 데이터베이스의 개념적 구조로 표현하는 도구 (개체-관계 모델)
- 논리적 데이터 모델 - 데이터베이스의 논리적 구조로 표현하는 도구 (관계 데이터 모델)
데이터 모델(data model)의 구성
- 데이터 구조 - 개념적 데이터 모델의 데이터 구조: 개념적 구조 / 논리적 데이터 모델의 데이터 구조: 논리적 구조
- 연산 - 데이터 구조에 따라 개념 세계나 컴퓨터 세계에서 실제로 표현된 값들을 처리
- 제약조건 - 구조적 측면의 제약 사항, 의미적 측면의 제약 사항(연산 적용 경우)
데이터 모델링과 데이터 모델의 개념 이해 ex) 아파트 건설
- 개념적 데이터 모델: 개념적 데이터 모델링을 위한 방법이나 도구(개체-관계 모델)
- 논리적 데이터 모델: 논리적 데이터 모델링을 위한 방법이나 도구(관계 데이터 모델)
4.2 개체 - 관계 모델
개체-관계 모델(E-R model; Entity-Relationship model)
- 피터 첸(Peter Chen)이 제안한 개념적 데이터 모델
- 개체와 개체 간의 관계 이용 -> 현실 세계를 개념적 구조로 표현
- 핵심 요소 - 개체, 속성, 관계
개체-관계 다이어그램(E-R diagram)
- E-R 다이어그램
- 개체-관계 모델 이용 -> 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현
개체(entity)
- 현실 세계에서 조직을 운영하는 데 꼭 필요한 사람이나 사물과 같이 구별되는 모든 것
- 즉, 저장할 가치가 있는 중요 데이터를 가지고 있는 존재 - 물리적 존재: 사람,사물 / 개념적 존재: 개념, 사건
- 개체는 이름과 속성을 가짐
- 개체는 파일 구조의 레코드(record)와 대응
개체 타입(entity type): 개체를 고유의 이름과 속성들로 정의한 것
개체 인스턴스(entity instance): 속성이 실제 값을 가진 실체화된 개체
개체 집합(entity set): 개체 인스턴스들을 모아 놓은 것 -> 데이터베이스에서 실제로 저장,관리하는 대상
개체는 E-R 다이어그램에서 사각형으로 표현, 사각형 안에 개체 이름 표기
-> 개체의 E-R 다이어그램 표현 예시: 고객 개체
속성(attribute)
- 개체나 관계가 가지고 있는 고유의 특성
- 의미 있는 데이터의 가장 작은 논리적 단위
- 파일 구조의 필드(field)와 대응
- 속성은 E-R 다이어그램에서 타원으로 표현, 타원 안에 속성의 이름 표기
-> 속성의 E-R 다이어그램 표현 예시
속성의 분류
속성의 분류 - 단일 값 속성 / 다중 값 속성
단일 값 속성(single-valued attribute): 값을 하나만 가질 수 있는 속성
다중 값 속성(multi-valued attribute): 값을 여러 개 가질 수 있는 속성 / E-R 다이어그램에서 이중 타원으로 표현
속성의 분류 - 단순 속성 / 복합 속성
단순 속성(simple attribute): 의미를 더는 분해할 수 없는 속성, 값의 의미가 1개
복합 속성(composite attribute): 의미를 분해할 수 있는 속성, 값의 의미가 다수
속성의 분류 - 유도 속성 (derived attribute)
기존의 다른 속성의 값에서 유도되어 결정되는 속성
저장 속성: 실제로 값을 저장하고 있는 속성
유도 속성: 필요할 때마다 계산되므로 값을 따로 저장할 필요 없음
유도 속성은 E-R 다이어그램에서 점선 타원으로 표현
속성의 분류 - 널 속성(null attribute)
널 값(아직 결정되지 않았거나 모르는 값 또는 존재하지 않는 값)이 허용되는 속성
- 등급 속성이 널 값 - 등급이 아직 결정되지 않았음을 의미
- 취미 속성이 널 값 - 고객의 취미를 입력하지 않았음을 의미
- 병역 속성이 널 값 - 성별이 여자인 경우 해당 사항 없음을 의미
속성의 분류 - 키 속성(key attribute)
- 모든 개체 인스턴스의 키 속성 값이 다르므로, 각 개체 인스턴스를 식별하는 데 사용되는 속성
- 둘 이상의 속성들로 구성되기도 함
- 개체 타입을 정의할 때 중요한 제약조건 - 키 속성의 값이 개체 인스턴스를 식별할 수 있어야 함
- E-R 다이어그램에서 밑줄로 표현
관계 (relationship)
- 개체와 개체가 맺고 있는 의미 있는 연관성 - 개체 집합들 사이의 대응 관계, 즉 매핑을 의미
- 관계의 속성 - 관계를 맺음으로써 발생하는 중요한 데이터들이 관계의 속성이 됨
- E-R 다이어그램에서 마름모로 표현
관계의 유형 - 관계에 참여하는 개체 타입의 수 기준
- 이항 관계 : 개체 타입 두 개가 맺는 관계
- 삼항 관계 : 개체 타입 세 개가 맺는 관계
- 순환 관계 : 개체 타입 하나가 자기 자신과 맺는 관계
매핑 카디널리티(mapping cardinality)
관계를 맺는 두 개체 집합에서, 각 개체 인스턴스가 연관성을 맺고 있는 상대 개체 집합의 인스턴스 개수
관계의 유형 - 매핑 카디널리티 기준
- 일대일(1:1) 관계
- 일대다(1:n)관계
- 다대다(n:m) 관계
일대일(1:1) 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 하나와 관계를 맺을 수 있고,
- 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음
일대다(1:n) 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있지만,
- 개체 B의 각 개체 인스턴스는 개체 A의 개체 인스턴스 하나와 관계를 맺을 수 있음
다대다(n:m) 관계
- 개체 A의 각 개체 인스턴스가 개체 B의 개체 인스턴스 여러 개와 관계를 맺을 수 있고,
- 개체 B의 각 개체 인스턴스도 개체 A의 개체 인스턴스 여러 개와 관계를 맺을 수 있음
관계의 참여 특성
- 필수적 참여(전체 참여) - 모든 개체 인스턴스가 관계에 반드시 참여 / E-R 다이어그램에서 이중선으로 표현
- 선택적 참여(부분 참여) - 개체 인스턴스 중 일부만 관계에 참여
관계의 존속성
존재 종속 (existence dependence)
- 개체 B가 개체 A에 종속 시, 개체 A가 존재해야 개체 B가 존재 / 개체 A가 삭제되면 개체 B도 함께 삭제
- 의존적인 개체 B -> 약한 개체 // 다른 개체의 존재 여부를 결정하는 개체 A -> 강한 개체
특징
- 강한 개체와 약한 개체는 일반적으로 일대다의 관계 가짐
- 약한 개체는 강한 개체와의 관계에 필수적으로 참여
- 약한 개체는 강한 개체의 키를 포함하여 키를 구성
E-R 다이어그램에서 약한 개체는 이중 사각형, 약한 개체가 강한 개체와 맺는 관계는 이중 마름모로 표현
E-R 다이어그램
개체-관계 모델을 이용해 현실 세계를 개념적으로 모델링한 결과물을 그림으로 표현한 것
- 사각형: 개체를 표현
- 마름모: 개체 간의 관계를 표현
- 타원: 개체나 관계의 속성을 표현
- 링크(연결선): 각 요소를 연결
- 레이블: 일대일(1:1), 일대다(1:n), 다대다(n:m) 관계를 표기
위 E-R 다이어그램에서는
고객과 책은 개체
고객아이디, 고객명, 적립금의 3속성 / 구매일자, 결제방식의 관계도 속성 / 책과 출판사는 4속성을 가짐
4.3 논리적 데이터 모델
논리적 데이터 모델의 개념과 특성
- E-R 다이어그램으로 표현된 개념적 구조를 데이터베이스에 저장할 형태로 표현한 논리적 구조
- 데이터베이스 스키마 = 논리적 데이터 모델로 표현된 데이터베이스의 논리적 구조
- 사용자가 생각하는 데이터베이스의 모습 또는 구조
- 논리적 구조는 사용하는 DBMS에 따라 달라짐
- 논리적 데이터 모델의 종류
- 관계 데이터 모델 - 논리적 구조가 2차원 테이블 형태
- 계층 데이터 모델
- 네트워크 데이터 모델 등이 있음
계층 데이터 모델(hierarchical data model)
데이터베이스의 논리적 구조가 트리 형태
- 루트 역할을 하는 개체가 존재하고 사이클이 존재하지 X
- 개체 간의 상하 관계가 성립 - 부모와 자식 개체는 일대다 관계만 허용
두 개체 사이에 하나의 관계만 정의할 수 있음
- 책과 고객의 다대다 관계를 직접 표현할 수 없어 별도의 개체를 추가로 생성하여 표현
- 책 개체와 고객 개체=1:n, 고객 개체와 구입도서 개체=1:n -> 고객 개체와 책 개체의 n:m 관계 표현
계층 데이터 모델의 단점
- 개념적 구조를 모델링하기 어려워 구조가 복잡해질 수 있음
- 데이터의 삽입, 삭제, 수정, 검색이 쉽지 X
네트워크 데이터 모델 (network data model)
- 데이터베이스의 논리적 구조가 네트워크, 즉 그래프 형태
- 두 개체 사이의 1:n 관계를 이용해 n:m 관계 표현 - 개체 간 관계는 화살표로 표시 / 일대다 관계 표현
- 두 개체 사이에 여러 관계를 정의할 수 있어 관계를 이름으로 구별
- 구조가 복잡하고 데이터의 삽입, 삭제, 수정, 검색이 쉽지 X
관계 (relationship)
'Database' 카테고리의 다른 글
Database - # 06 (0) | 2024.04.05 |
---|---|
Database - # 05 (0) | 2024.04.01 |
Database - # 03 (0) | 2024.03.30 |
Database - # 02 (0) | 2024.03.30 |
Database - # 01 (2) | 2024.03.30 |