백엔드

[개인프로젝트] - 데이터베이스 설계 (ERD 다이어그램 만들기)

coyojo 2023. 4. 2. 13:55

 

💡 ERD 구성요소 설명

ERD는 크게 세가지 요소( Entity, Relationship,Attributes) 로 구성되어 있습니다.

 

 

 

 💡 Entity간의 Relationship 표기

Relationship을 매핑하기 전에 기호 및 규칙들에 대해 살펴보겠습니다.

💡위 표기법은 entity와 entity 사이에 서로 속해있을 수 있는 수를 나타낼때 사용합니다.

 

ex) 선생님과 클래스의 관계

  • 클래스를 가르치는 선생님은 단 1명이다.
  • 선생님은 0 개 이상의 (0~N개) 클래스를 가르칠 수 있다.

선생님과 클래스의 관계는 다음과 같이 표기한다.

 

 

ex) 클래스와 학생과의 관계

  • 클래스는 0명 이상의 학생들의 등록을 받을 수 있다.
  • 학생들은 0개 이상의 클래스에 등록할 수 있다.
  • 각 등록 entity는 하나의 클래스와 학생과의 관계를 나타낸다.

 

 

 

💡Attribute의 고유 아이디

 

Primary Key (PK)

Attribute에는 Entity마다 데이터가 쌓일 때 각 레코드를 나타내는 고유의 key값이 있다.

예를들어, 같은 성별의 동명이인인 학생이 있을 때 두 학생을 구분하려면 학번과 같이 각 레코드를 나타내는 고유의 값이 필요하고 그것을 Primary Key(PK) 라고 한다. 각 Entity에서 생성되는 데이터, 레코드마다 고유로 식별할 수 있는 값이 부여된다.

 

Foreign Key (FK)

Entity 사이의 관계를 나타낼 때 다른 Entity의 PK를 참조해야 하는 경우가 있다.

예를들어 클래스는 어떤 선생님이 가르치는지에 대한 정보가 있어야 한다. 이런 경우 클래스의 Attribute에 선생님의 Primary Key인 TEACHER_ID를 참조하는 값을 추가한다.

 

 

Composite Key

Composite Key는 두개 이상의 Attribute를 합쳐서 PK로 나타내게 되는 경우이다.

예를들어 등록 정보는 어떤 학생이 어떤 클래스에 등록했는지를 나타내야하기 때문에 Student_id와 Class_id를 가지고 있다. 이런 경우 Student_id로도, Class_id로도 고유의 등록 레코드를 식별하지 못한다. 이런 경우 하나의 학생이 같은 클래스에 여러번 등록하는건 불가능하니 , 두 ID를 짝으로 사용해서 PK로 만들면 고유로 식별할 수 있는 Key로 사용할 수 있다.

 

 

💡ERD 구성요소 추출하기

Entity 추출하기

  • 로그인/ 회원가입 - 사용자 정보를 DB에 저장하고 불러오기때문에 계정(User) Entity가 있다.
  • 앨범목록 - Album Entity가 있다.
  • 사진목록 - Photo Entity가 있다.

Relationship 추출하기

  • User와 앨범과의 관계
  •  - 하나의 User는 0개 이상의 앨범을 갖고 있을 수 있다. - 앨범은 단 1명의 유저에게만 속해있을 수 있다.

 

  • 앨범과 사진과의 관계
    • 하나의 앨범은 0개 이상의 사진을 담을 수 있다.
    • 사진은 단 1개의 앨범 안에 속해있을 수 있다.
  • User와 사진과의 관계
    • DB상으로 직접적으로 유저와 사진이랑 관계가 없어도 된다.
    • 사진은 앨범에 속해있고, 앨범은 유저에게 속해있으니 간접적으로 관계가 성립

 

따라서 아래처럼 관계가 성립된다.