학습 기록/데브코스 웹 풀스택 4기

ERD에 대한 이해와 데이터베이스 모델링

romi__ 2024. 8. 25. 21:03

 

/date 24.08.25.

 

 

오늘의 목표는~ 데이터베이스 관계 다이어그램(ERD)을 생성하고 이를 바탕으로 데이터베이스를 직접 설계하여 간단한 쿼리를 작성하는 것! 가상의 공연 예매 사이트를 구축한다고 생각했을 때 데이터베이스를 구현하고 해당 DB를 위한 SQL문을 작성해야 합니다. 준비되지 않은 나에게 성큼 다가온 과제... ERD가 뭔지도 안 알려주셨잖아요 흑흑 그렇지만 울지 않습니다 나는 어른이니까. 정보의 바다를 헤엄치며 나에게 주어진 문제를 해결해 보겠어요.

 

 

그래서 ERD가 뭔데?

ERD에 대해 이야기하기 전에 데이터 모델링의 개념부터 살펴보겠습니다.

 

데이터 모델링이란 데이터 시스템 구축의 대상이 되는 내용을 분석하고, 약속된 표기법으로 표현하는 것을 의미합니다. 그리고 이렇게 모델링 된 내용을 가지고 실제 데이터베이스를 생성하여 개발 및 데이터 관리에 이용하곤 합니다.

 

데이터 모델링을 위해선 먼저 업무에 대해 파악하여 요구사항을 수집하고 분석해야 합니다. 어떤 업무를 데이터화하여 모델링 할 것인지 알아야 일을 시작할 수 있겠죠? 이후 표현될 데이터들을 파악하여 관계를 설정하는 개념적 데이터 모델링, 개념적 데이터 모델링의 결과를 표로 제작하는 논리적 데이터 모델링을 거쳐 실제 데이터베이스 테이블로 만드는 물리적 데이터 모델링을 완성합니다.

 

ERD란 Entity Relationship Diagram의 약자로 세상의 사물을 개체(entity)와 개체간의 관계(relationship)를 중점적으로 나타내는 데이터 모델링 방식입니다. 주로 개념적 데이터 모델링 과정에서 사용됩니다. 데이터베이스에서 정보를 어떻게 구성 및 연결할지를 그림으로 나타내는 것이죠. 쉽게 말해, 데이터베이스에 들어갈 데이터를 시각적으로 이해하기 쉽도록 도식화한 것이라고 생각하면 됩니다.

 

예시와 함께 더 자세히 알아보도록 하겠습니다. 우리는 도서관을 만들 것입니다. 도서관에는 (당연하게도) 많은 책이 있을 거고, 그 책들을 쓴 저자가 있습니다. 도서관이니 만큼 책을 그저 보관하는 것을 넘어서 책을 대출하는 회원들이 있겠죠? 그렇다면 우리에게는 아래와 같은 정보가 있는 것입니다.

 

출처: Stackoverflow

  • 엔티티Entity: 도서관 시스템에서 중요한, 정의 가능한 사물 또는 개념이 엔티티가 됩니다. 이를테면 책, 회원, 저자가 엔티티가 될 수 있습니다. 이러한 엔티티들은 각각 테이블로 나타낼 수 있습니다.
  • 엔티티 속성Attribute: 엔티티에는 개체가 갖고 있는 속성이 포함됩니다. 예를 들어 회원 엔티티라면 이름, 주소, 나이, 빌린 책의 목록 등이 있습니다. 데이터베이스의 테이블의 각 컬럼들이 엔티티 속성이라고 생각하면 됩니다.
  • 엔티티 도메인Domain: 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현하는 것입니다. 회원 엔티티의 이름 도메인을 VARCHAR(10)으로 둔다면 10개의 문자열만 입력 가능합니다. 기호에 따라 속성 타입만 작성해 두거나, 가독성을 위해 생략하여도 무방합니다.

 

출처: Stackoverflow

 

  • 관계Relationship: 엔티티들 간의 관계를 나타냅니다. 예를 들어, '저자는 책을 쓴다', '회원은 책을 빌린다'와 같은 관계가 도서관 시스템 상에는 존재합니다. 이러한 관계 또한 ERD에 그림으로 표시됩니다.
    • 식별자 관계: 강한 연결관계를 표현하기 위해 실선으로 표현하는 관계입니다. 부모 자식 관계에서 부모의 주 식별자를 외래 식별자로 참조해서 자신의 주 식별자로 설정합니다.
      • 주 식별자PK: Primary Key의 약자로, 중복되지 않고 null값이 없는 유일한 값에 지정합니다. 유일한 속성이므로 다른 속성과의 명확한 구분을 위해 구분선을 두기도 합니다. 예를 들어 회원 엔티티에서 회원번호가 다른 속성과 중복되지 않고, 모든 회원이 갖고 있어 null값이 없다면 주 식별자가 될 수 있습니다.
      • 외래 식별자FK: Foreign Key의 약자로 표시 시 개체와의 관계를 따져 선으로 이어줍니다.
    • 비식별자 관계: 약한 연결관계를 표현하기 위해 점선으로 표현하는 관계입니다. 부모 자식 관계에서 부모의 주 식별자를 외래 식별자로 참조해서 일반 속성으로 사용합니다.
  • 카디널리티Cardinality: 관계가 존재하는 두 엔티티 사이에서 몇 개의 개체가 대응되는지 연결 선의 끝 모양을 다르게 그어 표현하는 것을 말합니다.
    • 1:1 관계: 말 그대로 1:1로 매칭되는 관계를 의미합니다. 만약 도서관 프로그램으로 학생들을 위한 운동 프로그램을 만든다고 가정합시다. (도서관에서 왜 운동을 하냐 패스) 학생 엔티티와 학생의 건강 정보 엔티티는 1:1로 매칭됩니다. 한 명의 학생이 하나 이상의 건강 정보를 가질 수 없기 때문입니다.
    • 1:N 관계: 도서관 회원과 도서관에 있는 책의 관계를 생각해 봅시다. 한 명의 회원은 여러 권의 책을 대출할 수 있습니다. 그렇기 때문에 회원과 책 사이의 관계는 1:N 관계입니다.
    • M:N 관계: 도서관에 들어오는 비품을 관리하는 테이블을 생각해봅시다. 비품 엔티티 입장에서, 도서관에서 사용하는 책상의 제조업체가 꼭 한 곳일 필요는 없습니다. 다양한 업체에서 생산된 다양한 책상을 들여오겠죠? 제조업체 입장에서도 마찬가지입니다. A 회사는 도서관에 납품하기 위한 책상도 만들지만, 사용자들의 휴식을 위한 소파도 만들 수 있습니다. 따라서 비품과 제조업체의 관계는 M:N 관계입니다.
      • 하지만 두 개의 엔티티가 M:N 관계에 있는 경우, 데이터 모델링에서는 완성되지 않은 모델로 간주하여 1:N으로 조정하는 작업이 필요해집니다. 따라서 두 엔티티의 관련성을 표현하기 위해서는 중간에 또 다른 엔티티를 넣어야 합니다.

 

 

 

엔티티 관계에 대한 표현은 기호로 약속되어 있습니다. 실선, 점선과 양끝 기호를 통해 나타내는데... 이 부분은 잘 정리된 블로그가 있으니 여길 참고 하면 좋을 것 같습니다.

 

 

📋 데이터 모델링 개념 & ERD 다이어그램 작성 💯 총정리

데이터 모델링 이란? 데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는걸 의미한다. 그리고 이렇게 분석된 모델을 가지고 실제

inpa.tistory.com

 

 

 

 

dbdiagram을 이용한 ERD 작성

ERD가 무엇인지 알아봤으니, 이제 본격적으로 ERD를 작성해 보도록 하겠습니다. PPT로 작성해도 괜찮다고 했지만 (저에게) 새로운 툴이 있다면 사용해봐야 적성이 풀리므로... 스불재의 길로 뚜벅뚜벅 걸어가도록 하겠습니다. 지옥불이 따땃하네요. 

 

 

https://dbdiagram.io/home

 

dbdiagram.io - Database Relationship Diagrams Design Tool

 

dbdiagram.io

 

dbdiagram 공식 홈페이지입니다. 위의 링크로 접속하면 아래와 같은 화면을 볼 수 있습니다.

 

Create your diagram을 눌러서 시작해보겠습니다.

 

쉽지 않아 보이는군요. 하지만 굴하지 않습니다. 이겨낸다-!!!!!!!! 

 

보아하니 좌측에 작성한 내용을 바탕으로 우측에 ERD를 구성할 수 있나 봅니다. 그럼 우선 어떤 엔티티를 생성할 것이며, 각각의 엔티티 안에 어떠한 속성이 들어가야 하는지 고민해 봐야겠군요. 제가 받은 과제는 공연 예매 사이트에 대한 데이터베이스 모델링입니다. 대략적으로 엔티티와 속성을 작성해 보도록 하겠습니다.

 

 

그래요 사실 저는 아날로그 인간이랍니다. 이런 건 손으로 써야 적성이 풀려요(...) 암튼 대략 엔티티와 그 속성을 정리해 보았습니다. 어디까지 고려해야 하는지 고민하다 보니 시간이 제법 걸리네요. 이런저런 what if들이 생각나지만 일단 넘어가도록 하겠습니다. 지금은 그냥 과제에 명시된 조건에만 집중하도록 하겠습니다.

 

그럼 이렇게 정리한 내용을 바탕으로 dbdiagram을 통해 ERD를 그려 보도록 하겠습니다.

 

 

엔티티와 속성을 입력해 주었습니다. 그럼 각 엔티티의 관계를 지정해 보겠습니다.

 

 

관계 지정 열심히 했는데 과제 파일을 다시 읽어보니 그냥 실선으로 이어도 된다네요. 젠장! 저의 실력 향상을 위해 스스로 학습했다고 생각하겠습니다... 아무튼 이렇게 ERD를 그려줬으니 이제 이를 바탕으로 데이터베이스를 구현해 보겠습니다.

 

구현. 하려고. 했지만? 머리가 너무 아파서 이건 내일 구현해야지 ...

 

240826 추가

 

ERD를 바탕으로 데이터베이스 생성하기

/date 24.08.26. 어제 과제하면서 이런 글을 올렸습니다. ERD에 대한 이해와 데이터베이스 모델링/date 24.08.25.  오늘의 목표는~ 데이터베이스 관계 다이어그램(ERD)을 생성하고 이를 바탕으로 데이터

romiwaves.tistory.com

 

데이터베이스 구현하는 이야기를 적어봤습니다.

 

 

 

 

 

레퍼런스

 

📋 데이터 모델링 개념 & ERD 다이어그램 작성 💯 총정리

데이터 모델링 이란? 데이터 모델링이란 정보시스템 구축의 대상이 되는 업무 내용을 분석하여 이해하고 약속된 표기법에 의해 표현하는걸 의미한다. 그리고 이렇게 분석된 모델을 가지고 실제

inpa.tistory.com

 

 

What is an Entity Relationship Diagram (ERD)? | An Introduction to ER Diagram | Creately

Learn What is an ER Diagram (ERD)? Explore the history of ER Diagrams, use of ER Diagrams, symbols and notations, examples, limitations and best tips withs steps to draw an ER Diagram.

creately.com

 

 

ERD (Entity-Relationship Diagram)

Entity-Relationship Digagram (E-R Model)객체-관계 모델 (Entity-Relationship Modeling, E-R Modeling)은 세상의 사물을 개체 (Entity)와 개체 간의 관계 (Relationship)로 표현하는 데이터 모델링 방식으로 개념적 데이터 모

shuu.tistory.com

 

 

[DBDiagram] ERD 자동생성 사이트 - free

#1. DBDiagram 이란? DBDiagram은 코드를 작성하고 ERD( Entity Relationship Diagram )으로 렌더링 해준다. 그런다음 PDF나 PNG 파일로 내보내거나 그것을 SQL 코드로 생성하는것도 가능하다. #2. DBDiagram 을 이용하

saakmiso.tistory.com