정리 노트

데이터베이스의 개념적 설계 본문

개념 정리/데이터베이스

데이터베이스의 개념적 설계

꿈만 꾸는 학부생 2023. 7. 20. 15:30
728x90

이 포스트는 국민대학교 소프트웨어학부 '데이터베이스' 강의를 듣고 요약하는 포스트입니다. 원하시는 정보가 없을 수도 있습니다. 이 점 유의 바랍니다. 오류 지적은 매우 환영합니다!


개체-관계 모델

현실 세계의 개념적 표현한 것으로 모든 것을 개체(entity)와 관계(relationship)로 표현합니다.

 

개체의 타입은 속성으로 정의하고 개체 인스턴스들 중에서 유일하게 식별할 수 있는 값을 가지는 속성을 key 속성이라고 합니다.

아래의 그림을 보면 'Employee'라는 개체에 'Emp_No'와 'Name' 2개의 속성이 있음을 알 수 있고, 'Emp_No' 속성에 밑줄을 그어서 key 속성임을 표시하고 있습니다.

[그림 1] source: https://www.researchgate.net/figure/A-Regular-Entity-Type-with-Two-Simple-Attributes_fig1_342623945

속성의 유형

속성은 여러 유형들을 가질 수 있습니다.

  • 단순 / 복합: 아래의 '그림 2'를 보면 'Student' 개체에 'Address' 속성이 있고, 'Address'는 'House_No', 'Street', 'PIN' 속성을 가지고 있음을 확인할 수 있습니다. 즉, 'Address' 속성 하나가 3가지 속성을 복합적으로 포함하고 있습니다. 하지만 테이블로 저장할 때는 복합 속성을 사용하지 않고 복합 속성들을 각각 단순 속성으로 해서 저장합니다. 테이블에 저장할 때 'Address' 열을 저장하는 대신, 'House_No', 'Street', 'PIN' 3개의 열을 추가할 수 있을 것입니다.
  • 단일값 / 다중값: 다중값 속성은 속성 값으로 여러 개가 올 수 있는 속성을 의미합니다. 아래의 '그림 3'을 보면 'Hobbies' 속성에 2줄로 표시했습니다. 취미는 여러 개가 있을 수 있기에 아래 그림처럼 표현합니다. 하지만 다중값 속성은 ERD에서만 표현하고 테이블에서는 직접 표현하지 않습니다. 이는 별도의 테이블로 만들어서 저장합니다.
  • 저장 / 유도: 유도 속성은 다른 속성에서 SQL문 등을 통해 유도되어 얻을 수 있는 속성을 의미합니다. 아래의 '그림 4'를 보면 'age' 속성은 점선으로 표기됐습니다. 'age' 속성 값은 'date_of_birth' 속성을 통해 계산될 수 있습니다. 유도 속성은 속성 값이 중복되는 문제가 생길 수도 있기 때문에 ERD에서만 표현합니다.

[그림 2] source: https://prepinsta.com/dbms/composite-attribute/
[그림 3] source: https://studyglance.in/dbms/display.php?tno=8&topic=Attributes-in-DBMS
[그림 4] source: https://beginnersbook.com/2015/04/e-r-model-in-dbms/

관계 타입의 특성과 속성

관계 타입도 속성을 가질 수 있습니다. 관계 타입을 테이블로 변환할 때, 기존에 가지고 있던 속성과 관계에 속한 개체 타입의 key 속성도 같이 작성합니다. 이렇게 관계에 관여한 개체의 key 속성들을 외래 키라고 합니다.

 

아래의 '그림 5'를 보면 'AssignedTo'라는 관계 타입에 'Vehicle'과 'Project' 2개의 개체 타입이 관여하고 있습니다. 'AssignedTo'는 기본적으로 'AssignedDate'와 'Period'라는 속성을 가지고 있습니다. 이를 테이블로 변환해 작성하게 되면, 2개의 속성뿐만 아니라 'Vehicle' 개체의 'Veh_No' key 속성, 'Project' 개체의 'Pro_No' key 속성까지 같이 작성해야 합니다.

[그림 5] source: https://www.researchgate.net/figure/An-ER-Model-that-Contains-a-Binary-One-to-many-Relationship-Type-and-Some-Attributes_fig4_342623945

관계 타입의 특성으로 2가지가 있습니다.

  • mapping(cardinality ratio): 관계에 관여한 개체 인스턴스 간의 대응성을 의미합니다. 주로 1:1, 1:n, n:m 3가지로 표현할 수 있습니다.
  • 참여: 개체 집합의 인스턴스들이 전부 관계에 전부 참여하는지 아닌지의 여부를 표현합니다.
728x90

'개념 정리 > 데이터베이스' 카테고리의 다른 글

관계 데이터 구조  (0) 2023.08.10
논리적 데이터 모델링  (0) 2023.07.24
ERD(E-R Diagram)  (0) 2023.07.20
DBS(Database System)  (0) 2023.07.04
DB와 DBMS의 개념  (0) 2023.06.27