ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DBMS] DataModeling - ER model 중심으로
    개발 이야기/DB(데이터베이스) 2024. 9. 16. 22:10
    본 내용은 한양대학교 차재혁 교수님의 데이터베이스시스템및응용 수업(11710)과 Rebro의 코딩일기장의https://rebro.kr/143과 https://basic-theory.tistory.com/6 https://victorydntmd.tistory.com/126 내용을 참고하여 작성하였습니다. 

    Steps in DB Design 

    아래 흐름에 맞추어서 DB design은 이루어진다. 

    Requirements Analysis

          •user needs; what must database do?

    Conceptual Design

         •high level description (often done w/ER model)

          •Object Relational Mappings (ORMs: Hibernate, Rails, Django, etc  ) encourage you to program here

    Logical Design

          •translate ER into DBMS data model•ORMs often require you to help here too

    Schema Refinement

         •consistency, normalization

    Physical Design - indexes, disk layout

    Security Design - who accesses what, and how

    ER Model? 

    ER model, ER 모델 (Entity-Relationship model)은 데이터베이스를 디자인 하기 위해 이용되는 모델링 기법으로 데이터베이스에 관한 요구 사항을 그래픽적으로 표현하는 방법이다. 

    여기서 Entity는 개체를 의미하고, 이는 각자만의 의미를 가진 사물 또는 개념을 의미한다. 

    이러한 개체들은 attribute를 가지는데 이는 속성으로 각 개체가 가지는 특성을 의미한다. 

     

    아래 그림을 보면 두 개체 사이에 먹다라는 관계가 있음을 알 수있는데, 개체와 개체간의 관계가 바로 relation이다. 즉 두 개체가 어떻게 연결되어있는지를 나타내는 것이 Relation이다. 

    출처: https://straw961030.tistory.com/89

    ER 모델을 그림으로 표현한 것이 ERD(ER Diagram)이고 직사각형, 타원 등 그림으로 표현하는 것이다. 

     

    Entities(개체) & Entitiy Set(집합)

    A real world object described by a set of attribute values, 즉 개체는 attribute로 구성된 집합이다.  

    비슷한 계열의 개체들의 집합은 Entitiy set이라고 한다. 동일한 Entity set의 entity는 동일한 attributes를 가진다. 또한 각 Entity set들은 key를 가지고이는 아래 그림에서 밑줄 친것과 같다(ssn). 즉 동일한 객체는 존재하지 않는다

     

    위 그림과 같이 Entity Type은 네모로 표현된다. 

    Attributes(속성)

    개체가 가지는 속성을 의미하고 속성은 원으로 보통 표시된다. 

    위 그림에서 ssn, name, lot 등이 속서에 해당한다. 

    또한 다시한번 말하지만 0) key attirbute가 존재하며, 다른 객체들과 중복되지 않는 고유한 값을 가진다. 주로 객체를 식별하는데 사용한다. 이들은 원에 밑줄로 표시한다. 

     

    1) Attribute domain

    해당 Attribute가 가질 수 있는 집합을 말한다. 정수형, 실수형 등으로 생각하면 편하고, 보통은 그보다 더 자세히 예를 들어 학년은 1 2 3 4의 값을 가진다 등의 집합을 말한다. 

     

    2) Composite Attribute

    독립적인 Attribute들이 모여서 생성된 Attribute로 주소를 예시로 보면 서울시 oo동, oo로 등 여러가지로 구성되어있는데 이들이 독립적인 Attribute라면 주소라는 Attribute은 이들 모두의 합으로 이루어질 것이다. 이를 Composit Attribute라고 한다. 

    3) Derived Attribute

    다른 Attribute로부터 계산되어 나오는 Attribute를 의미한다. 

    4) Multi value Attribute

    여러개의 값을 가지는 Attribute를 말한다. 예를 들어 전공이라는 Attribute가 있을 때 만일 다중 전공을 허용한다면, 또 그 둘의 차이가 없다면 복수의 값을 집어넣는 것을 허용해야할 것이다. 이를 Multi value attribute라고 한다. 

    Relations(관계)

    각 Entity type간의관계를 의미하는 것이 바로 Relation이다. 관계 즉 Relation은 마름모로 표시하고 각 관깨를 맺고 있는 개체들과 실선으로 연결된다.

    Relation, 혹은 Relation Ship이라고 하며, 아래 그림과 같은 예시에서는 Works_in 즉 특정 부서에 소속되어있다 등의 관계가 존재한다. 각 Realtion 또한 그들 고유의 Attributes를 가질 수 있다. Relation도 유사하게 Relation Set을 가진다. 

     

    1) 카디널리티 비율 제약조건 ( Cardinality Ratio Constraint )

     한 개체가 얼마나 많은 개체와 관련될 수 있는지를 나타내는 제약조건을 의미한다. 

    실제로 그림에서는 아래와 같이 명시 가능하다 

    출처: https://basic-theory.tistory.com/6

    - Key constrainsts? 

     

    Employee와 Department와의 관계를 생각해보자. 

    Manage라는 관계에서 Employees는 여러 부서에 일할 수 있고, 한 부서에는 여러명의 직원이 소속 가능하다 하면 many to many 관계일 것이다. 

    하지만 각 부서는 최대 한명의 Manager만을 가진다고 하면, 이를 Departments의 Key constraints라고 한다. Key Constraint라고 하는 이유는, Department 엔티티에서 한 부서(한 개의 Department 엔터티)가 여러 명의 매니저를 가질 수 없도록 제한하기 때문이다. 

    즉, Key constraint는 1-1관계에 관한 것으로 화살표로 표시되었다. 

     

     

    2) 참여 제약조건 (Participation Constraint)

    관계를 맺는 두 Entity Type에 대해 한 개체의 의존성을 나타내는 제약조건을 의미한다.

    전체 참여 (Total Participation ): 하나 또는 그 이상의 개체가 참여
    부분 참여  (Partial Participation): 선택적인 참여

    이해를 하기 쉽게 예시를 들면 과목과 학생이 있다고 할때(수강생), 수강생은 어느 과목에 필수로 참여할 필요는 없지만, 과목은 반드시 하나의 수강생이 있어야한다 

    즉, 과목의 경우 수강생을 반드시 하나라도 있어야함으로 전체 참여 조건이다.  

    수강생의 경우 과목에 관해 관계를 맺든 안맺든 상관 없음으로 부분참여이다. 

    E-R 다이어그램에서 전체 참여는 두 개의 실선, 부분 참여는 하나의 실선으로 나타낸다.

     

    중간 정리 

     

    3) Weak entities

    Extended ER에서 추가되었으며 자신의 Key attribute가 없는 혹은 다른 Attribute의 primary key로만 식별 가능한 Entity를 의미한다. 

    쉽게 이야기하면 의존적인 Entities이다. 예를 들어 특정 강의의 분반이 있다고 하면, 해당 강의가 없어지면 분반된 개체들도 필요하지 않을 것이다. 즉, 분반이 있기 위해서는 Course의 Entity가 꼭 존재해야한다. 

    ER 다이어그램에서는 Weak entities는 두개의 네모로 표현하고, 약한 개체의 key를 paritial key라고 한다. 

    부분 키는 단독으로 존재할 수 없고 자신을 소유하고 있는 Owner Entity Type인 Course Entity type의 key와 합쳐서 표현되어야한다. ER 다이어그램에서 부분 키는 점선으로 된 밑줄로 표현한다. 

    또한 그 관계 또한 두개의 마름모로 표현하고 항상 의존적임으로  total participation relation을 가진다. 

    4) Is - a  관계(상하, 상속 관계)

    상하 관계 혹은 일반화 관계는 공통 속성을 가지는 상하관계로 상속과 유사하다. 

    일반화관계는 역 삼각형으로 표기되며 is a 관계라고도 한다. 

    FYI: Crow’s Foot Notation

    Crow’s Foot Notation(크로우스 풋 표기법)은 ER(Entity-Relationship) 다이어그램에서 엔터티 간의 관계를 표현하는 데 사용되는 표기법 중 하나로, 관계형 데이터베이스 모델링에서 가장 널리 사용된다. 이름은 관계의 기수성(cardinality)을 표현하는 기호가 까마귀 발처럼 생겼다고 해서 붙여졌다. 

    아래 표와 그림을 참고하자. 간단히 그림을 설명하면 Cardinality가 직선에 붙으며 |은 1을 의미하고 Many는 까마귀발모양을 O는 선택적인 관계를 의미한다. 

    Person ──1────1─── Passport
    Department ──1───< Crow’s Foot (Many) Employee
    Student ───<────>─── Course

    Aggregation vs. Ternary

    둘 모두 복잡한 Relation을 표현할 때 사용하는 모델링 기법이다. 

    E-R 모델의 한 가지 한계는 relationship 간의 relationship을 표현하지 못한다는 것이다 

    아래 그림을 보면 proj_guide라는 관계집합을 표시하기 위해 project/instructor/student 개체가 연결되어있다. 

    또한 Instructor는 교수자로서 매월 평가보고서를 학생에 대해 작성해야한다는 요구사항으로 evaluation이 만들어졌고 이를 관계에 포함시켜야한다. 다만 이상황에서 eval for은 기존의 proj_guide와 중복이 발생한다. 

    이를 아래와 같이 aggreagation을 이용,  relationship 전체를 추상적인 entity set으로 취급하여 relation간의 relation을 허용한다. 

    그림에선 proj_guide와 그에 참여하는 entity set들을 묶어 하나의 entity set으로 취급한 후 evaluation과 관계를 맺어 중복없이 관계를 표현하였다. 

     

    '개발 이야기 > DB(데이터베이스)' 카테고리의 다른 글

    [DBMS] 데이터베이스 Overview  (1) 2024.09.10
Designed by Tistory.