[데이터베이스] #13 개체-관계성 데이터 모델

2024. 6. 12. 09:53·전공/데이터베이스
728x90
반응형

1. 개체 및 관계성

1. 개체(entity), 관계성

  • 개체: 구별이 가능한 객체를 의미, 단일 student
  • 관계성: 개체 간의 연관성, 학생과 과목 개체 간의 “수강하다”

개체 집합, 관계성 집합으로 묶을 수 있음

개체와 관계성은 속성을 가질 수 있음

2. 속성

개체 또는 관계성이 가지는 특성

  • 단순 속성/복합 속성
  • 단일 값 속성/다수 값 속성
  • 유도된 속성

주소 ⇒ 거리, 도시, 도, 우편번호 (복합 속성)

거리 ⇒ 거리번호, 거리명, 아파트번호 (복합 속성)

나이 ⇒ 생년월일로 유추 (유도된 속성)

3. 관계성 집합 차수

관계성과 관련되는 개체의 개수

4. 카디날리티 제약

  • One to one
  • One to many
  • Many to one
  • Many to Many

5. 키

테이블에 대한 슈퍼 키, 후보 키, 주 키 개념과 동일

슈퍼 키에서 후보 키 및 주 키를 선정할 때에는 카디날리티 제약 및 참여 제약 고려

2. ER 다이어그램

1. ER 다이어그램

  • 사각형: 개체 집합
  • 마름모: 관계성 집합
  • 밑줄: 주 키 속성

속성은 사각형 안에 나열

 

2. 복합 속성을 가진 개체

 

3. 속성을 가진 관계성 집합

date 속성을 가진 관계성 집합 takes

 

4. 카디날리티 제약

화살표가 1(one)을 의미

화살표가 없으면 다(many)를 의미

 

부분 참여 및 전체 참여가 존재

단일선은 부분 참여, 이중선은 전체 참여

6. 롤

 

7. 약한 개체 집합

주 키가 없는 개체 집합

  • 약한 개체는 강한 개체 없이 존재할 수 없음
  • 관계성에서 약한 개체는 전체 참여
  • 약한 개체의 관계에서 강한 개체가 일(one)에 대응 약한 개체가 다(many)에 대응
  • 약한 개체 집합 내에 부분 키 존재 가능
  • 약한 개체의 주 키 = (구분하는 개체의 주 키와 부분 키의 결합)

3. 관계형 스키마로 변환

1. 개체 집합, 관계성 집합

기본 원칙은 개체 집합과 관계성 집합은 테이블 한 개씩으로 변환

개체 속성은 테이블 속성으로 변환

2. 강한/약한 개체 집합

약한 개체도 관계로 변환

약한 개체를 구분하는 관계성은 테이블로 변환되지 않음

→ 약한 개체를 변환할 때 강한 개체의 주 키를 이미 포함하기 때문

  • course(cID, title, deptName, credit)
  • section(cID, sID, year, semester, classroom, classTime)
  • 관계성 “offered” 테이블은 없음
  • 위에 있는 강한 개체 집합 목차의 그림 참고

3. 다대다 관계성 집합

다대다 관계성은 독립적인 테이블로 변환

속성은 개체 집합의 주 키를 포함

 

  • Own(pID, vehicleID, registrationDate)

4. 다대일 관계성 집합

다대일 관계성은 독립적인 테이블로 변환 가능

  • people(pID, name, address, age)
  • own(pID, vehicleID, registrationDate)
  • car(vehicleID, make, model, year, color)

다(many)측 개체로 병합되어 테이블로 변환도 가능

  • people(pID, name, address, age)
  • car(vehicleID, make, model, year, color, registrationDate, pID)

5. 일대일 관계성 집합

일대일 관계성은

  • 독립적인 테이블로 변환 가능
  • 또는 양쪽 개체 중 하나로 병합도 가능

6. 복합 속성

복합 속성은 복합 속성의 각 구성이 테이블 속성으로 평면화되어 반환됨

다수 값을 가지는 phoneNumber(여러 개일 수 있음)는 독립 테이블로 변환

유도된 속성은 메소드로 변환 가능

7. 다수값 속성

다수값 속성은 단일 테이블로 변환

관련 개체의 주 키 속성 포함

관계형 데이터 모델의 atomic 속성 때문임

 

4. 설계 이슈

1. 개체 집합 대 속성

데이터베이스에서 표현하고자 사항을 개체로 표현할 것인지 또는 개체 속성으로 표현할 것인지를 결정하여야 함

위와 같은 상황은 왼쪽이 더 적합함

전화번호에 더 다양한 정보가 저장된다면 오른쪽도 고려해 볼 수 있음

 

2. 개체 대 관계성

학생이 분반을 수강하는 상황

다음과 같은 상황에서 첫 번째 다이어그램이 적합

 

3. 속성 위치

  • 다대다 제약에서 속성은 관계성에 반드시 위치함
  • 일대일 제약에서 속성은 임의의 관련 개체에 위치함
  • 일대다 인 경우에는 관계성 속성은 다(many) 쪽 개체에 위치함
  •  

4. 다진 관계성

다진 관계성은 다수개의 이진 관계성으로 변환 가능

문제점은 다진 관계성에 존재하는 제약 사항을 새로운 다이어그램에 정확하게 표현하지 못함

회귀적 관계성을 사용하여 이진 관계성과 삼진 관계성 비교

 

5. 확장 ER 모델

1. 특수화/일반화

상위 개체와 하위 개체 간에 다수개의 특수화 가능

2. 제약 조건

상위 개체에 속하는 개체가 하위 개체에 속하는 기준에 대하여 조건 정의 가능

상위 개체가 하위 개체에 속하는 방식에서 제약은 두 가지 가능

  • disjoint: 상위 개체가 하위 개체 하나에만 속하게 됨
  • overlapping: 상위 개체가 다수 개의 하위 개체에 속할 수 있음

완전 제약 조건

  • total: 엔티티는 하위 레벨 엔티티 집합 중 하나에 속해야 함
  • partial: 엔티티가 하위 레벨 엔티티 집합 중 하나에 속할 필요는 없음, default

3. 특수화 스키마

스키마로 변환 시는 두 가지 방법 가능

하위 개체는 하위 개체에 속하는 속성과 상위 개체의 주 키만으로 스키마 변환

→ 하위 관계에 대한 모든 속성을 검색하기 위해서는 두 관계 모두 접근해야 함

 

하위 개체는 상속받은 모든 속성과 해당 개체에만 적용되는 속성으로 스키마를 구성

→ 상위 개체만을 위한 테이블 생성이 필요하지 않을 수도 있음

→ 상위 개체 대신 뷰 사용 가능하나 뷰는 참조 무결성 설정 불가

728x90
반응형

'전공 > 데이터베이스' 카테고리의 다른 글

[데이터베이스] #14 데이터베이스 설계 이론  (0) 2024.06.12
[데이터베이스] #12 SQL 확장  (0) 2024.05.20
[데이터베이스] #11 응용 개발  (0) 2024.05.20
[데이터베이스] #10 오라클 실습 II  (0) 2024.05.20
[데이터베이스] #9 데이터베이스 주요 기능  (0) 2024.05.20
'전공/데이터베이스' 카테고리의 다른 글
  • [데이터베이스] #14 데이터베이스 설계 이론
  • [데이터베이스] #12 SQL 확장
  • [데이터베이스] #11 응용 개발
  • [데이터베이스] #10 오라클 실습 II
dev_ares
dev_ares
대학에서 컴퓨터공학을 전공하고 있는 학생입니다.
    반응형
    250x250
  • dev_ares
    노트
    dev_ares
  • 전체
    오늘
    어제
    • 분류 전체보기 (188)
      • IT 트랜드 (2)
      • 백엔드 (18)
        • Java + Spring (8)
        • Kotlin + Spring (5)
        • 백엔드 (5)
      • 프론트엔드 (1)
        • React (1)
      • 대외활동 (17)
        • 42서울 (17)
      • 백준 (6)
        • Java (2)
        • C++ (3)
      • 전공 (121)
        • 객체지향프로그래밍 (17)
        • 자료구조 (23)
        • 리눅스시스템관리 (16)
        • 컴퓨터구조 (25)
        • 네트워크 (25)
        • 데이터베이스 (15)
        • 기타 전공 (0)
      • 프로그래밍 언어 (18)
        • Java (5)
        • Swift (4)
        • C++ (1)
        • Kotlin (8)
      • 기타 (4)
      • 공군 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    사설 문제
    메모리 계층 구조
    컴공 포트폴리오
    백준
    C++
    반복자
    추가 문제
    리눅스
    자료구조
    코틀린
    42서울
    자바
    컴퓨터 구조 및 설계
    데이터패스
    단일 사이클
    컴퓨터구조
    티스토리챌린지
    상속
    명령어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
dev_ares
[데이터베이스] #13 개체-관계성 데이터 모델
상단으로

티스토리툴바