상세 컨텐츠

본문 제목

[TIL#21] 가을에 시작한 Spring <ERD 작성>

내배캠/Chapter3

by DK9 2023. 11. 16. 22:51

본문

한동안 커리큘럼 따라가기 버거워서 배운 것들을 정리하지 못했다. 이번에 개인 과제를 시작하면서 그동안 정리하지 못한 내용들을 풀어내고자 한다.

 

1. ERD

ERD (Entity Relationship Diagram) 'Entity 개체'와 'Relationship 관계' 구조를 한눈에 알아보기 위해 그려놓는 다이어그램이다. 개체 관계도라고도 불리며 요구분석사항에서 얻은 엔티티와 속성들의 관계를 그림으로 표현한 것이다.

 

2. Entity (엔티티)

  1. Entity (엔티티)
    • Java의 객체와 비슷하게 '정의 가능한 사물 또는 개념'들을 의미한다.
    • 데이터베이스의 테이블이 엔티티로 표현된다.
    • 현재의 나는 Java의 하나의 객체는 하나의 테이블이라고 생각한다. 즉 '엔티티 = 테이블 = 객체' 라고 생각하고 있다.
  2.  Attribute (속성)
    • 엔티티가 가진 속성들을 의미한다.
    • 예를 들어 인터넷 게시판 사용자라면 ID, PW, 이름 등이 있다.
    • 데이터베이스의 각 필드(=칼럼)이라고 보면 된다.
    • 현재의 나는 Java 객체의 필드명이라고 생각한다. 즉 '속성 = 칼럼 = 필드명' 이라고 생각한다.
  3. Domain (도메인)
    • 속성의 값, 타입, 제약사항 등에 대한 값의 범위를 표현한다.
    • 현재의 나는 Java 객체의 필드 값이라고 생각한다. ex) String UserId, Long PW 등

 

3. ERD 키 (Primary Key, Foreign Key)

  1. Primary Key (주 식별자)
    • 테이블의 다른 속성과 명확히 구분되는 유일한 속성
    • 중복이 없고 NULL 값이 없는 유일한 값이다.
    • ERD에서 열쇠 혹은 다이아몬드로 표시한다.
  2. Foreign Key (외래 식별자)
    • A테이블에 의존하는 B테이블이 A와 연결되기 위한 속성
    • ex) 사용자가 없으면 게시물을 작성할 수 없다. 즉 인터넷 게시판의 게시물은 사용자에게 의존한다. 이때 게시물은 사용자에게 의존하기 위해 사용자가 가지고 있는 속성을 가져야 한다. 이때 이 속성이 '외래 식별자'이다.
      B가 A의 문을 열고 합방하기(=의존하기) 위한 열쇠이다. 그렇기에 열쇠의 주인은 의존하는 테이블이 가진다.

 

4. 관계

 

 잘 모르겠다. 아직도 헷갈리지만 정리한 개념대로 작성해 본다.
(+2023.11.21 내용)
 단방향과 양방향이 있다. A클래스과 B클래스가 있다면 둘 중 한 클래스에서만 관계설정 코드를 작성해 놓는 것이 단방향, 두 클래스 모두에서 관계설정 코드를 작성한 것이 양방향이다.

 어떤 관계설정을 해도 코드를 작성할 '수'는 있다. 하지만 효율의 차이가 극명하기 때문에 좋은 설계를 해야 한다.

 

  1. One to one (1 대 1)
    • 1인 1 계정이라 가정하면, 한 명의 게시판 유저는 하나의 개인 정보를 가진다.
    • 음식점에 들어왔을 때 한 명의 손님은 한 테이블을 가진다.
  2. One to many (1 대 다)
    • 게시판은 여러 유저들이 사용할 수 있다.
    • 손님은 여러 번 주문할 수 있다.
  3. Many to one (다 대 1)
    • 게시판의 11, 12, 13, 14번째 게시물은 A유저가 작성했다.
    • 한 번의 주문에 여러 음식을 시킬 수 있다.
  4. Many to Many (다 대 다)
    • 유저들은 게시판에 공개된 모든 게시물을 볼 수 있다.
    • 손님들은 여러 음식을 먹을 수 있고, 음식들은 여러 손님들께 팔려나간다.

관련글 더보기