Super Kawaii Cute Cat Kaoani
본문 바로가기
🏃‍♀️ 대외활동/UMC 7기 - Node.js

[UMC 7th Server] Chapter 1. Database 설계 워크북

by wonee1 2024. 9. 26.
728x90

 Chapter 1. Database 설계

 
 
 
 
 

🎯핵심 키워드 정리 


 
 
 

🔹외래키 (foreign key)

  • 외래키는 두 테이블을 서로 연결하는데 사용되는 키이다.
  • 데이터가 일관될 수 있도록 돕는 역할을 한다
  • 외래키가 포함된 테이블을 자식 테이블이라고 하고 외래키 값을 제공하는 테이블을 부모 테이블이라 한다.

 

🔹외래키 (foreign key) 특징

  • 외래 키는 관계를 표현한다.
  • 외래 키는 기본키와 다르게 하나의 테이블에 여러 개를 지정 할 수 있다.
  • 외래 키는 NULL값과 중복 값이 허용된다.
  • 참조되는 값이 변경되면 참조하는 값도 변경된다.
  • 외래 키는 기본 키의 일부가 될 수 있다.

 
 


✅ FOREIGN KEY (country_id) REFERENCES country(country_id)

 -> FK는 country_id 이고 이것은 country(country_id) 참조되었다! 

 
 
 
 

🔹기본키

  • 기본키는 데이터베이스 테이블 내의 모든 레코드에서 고유한 아이디를 제공한다
  • 유일성과 최소성을 가지며(후보키), 해당 레코드를 식별할때 기준이 되는 반드시 필요한 키

 

🔹기본키의 특징

  • 모든 레코드가 서로 다른 값을 가지고 있어 각 레코드를 식별할 수 있다.
  • NULL값이 존재할 수 없다.
  • 레코드의 값은 중복이 불가능하다.
  • 테이블에는 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수도 있다. (다수 열 기본 키, 복합 기본 키)

 

🔹ER 다이어그램

  • 개체 관계 지도, 개체 관계 다이어그램이라고 불린다.
  • 데이터베이스 안에 있는 개체 간의 관계를 시각화해서 보여주는 방식을 말한다.

 
 

🔹복합 키

  • 두개 이상의 컬럼을 묶어서 하나의 기본키로 지정하는것.
  • 기본키는 하나의 테이블에 하나만 존재할 수 있다, 또한 기본키는 하나 이상의 컬럼으로 구성되어 있다.
    • 기본키가 만약 복합키라면, 복합키 또한 당연히 유일성과 최소성을 만족해야한다.

 

🔹연관 관계
 

존재적 관계라고도 한다(연관관계)
한 엔터티의 존재가 다른 엔터티의 존재에 영향을 미치는 관계

  • 엔터티 간의 연관된 상태를 의미
  • 연관관계는 항상 이용하는 관계로 존재적 관계에 해당

 
 

🔹의존 관계
 

행위적 관계 (의존관계)
엔터티 간의 어떤 행위가 있는 것을 의미

  • 의존관계는 상대방 클래스의 행위에 의해 관계가 형성되는 행위적 관계
  • ERD에서는 존재관계와 행위관계를 구분하지 않는다
  • UML에는 클래스다이어그램 관계 중 연관관계와 의존관계가 있고 이것은 실선과 점선의 표기법으로 다르게 표현이 된다
  • 의존관계는 오퍼레이션에서 파라미터 등으로 이용할 수 있다.
  • 연관관계는 소스코드에서 멤버변수로 선언하여 사용할 수 있다.

 
 

🔹정규화

하나의 엔터티에 많은 속성을 넣음→ 엔터티를 조회할 때 마다 많은 양의 데이터가 조회 됨

  • 최소한의 데이터만을 하나의 엔터티에 넣는식으로 데이터를 분해하는 과정을 정규화라고 함
  • 데이터의 중복을 제거하여 용량을 최소화시킴
  • 데이터 일관성, 최대한 데이터 유연성을 위한 과정
  • 데이터의 이상현상을 줄이기 위한 데이터베이스 설계 기법
  • 논리 데이터 모델링 수행 시점에서 고려됨

 
 

🔹이상현상

정규화를 하지 않아 발생하는 현상

  1. 삽입이상
  2. 갱신이상
  3. 삭제이상

 
 

🔹정규화단계
 

1) 제 1정규화

  • 모든 속성은 반드시 하나의 값을 가져야 함
  • 테이블 컬럼이 원자성을 갖도록 테이블을 분해하는 단계

2) 제 2 정규화

  • 제 1정규화를 진행한 테이블에 대해 완전 함수 종속을 만들도록 테이블을 분해
  • 엔터티의 일반속성은 주식별자 전체에 종속이어야 한다

3) 제 3 정규화

  • 엔터티의 일반 속성 간에는 서로 종속적이지 않다
  • 이행적 속성을 제거하도록 테이블을 분해

4) BNCF 정규화

  • 모든 결정자가 후보키가 되도록 테이블을 분해하는 것(결정자가 후보키가 아닌 다른 컬럼에 종속되면 안됨)

5) 제 4 정규화

  • 여러 컬럼들이 하나의 컬럼을 종속시키는 경우 분해하여 다중값 종속성을 제거

6) 제 5 정규화

  • 조인에 의해서 종속성이 발생되는 경우 분해

 
 

🔹반 정규화

  • 역정규화(De-Normalization)의 개념
  • 성능을 위해 데이터 중복을 허용
  • 성능의 향상을 항상 보정하는 것은 아님
  • 조회(SELECT) 속도를 향상시키지만, 데이터 모델의 유연성은 낮아짐
  • 비정규화는 정규화를 수행하지 않음을 의미

 


 
 

☑️ 실습 인증


 

1. Data grip 설치

 

 

 
 
 
 

2. 로컬 DB 셋팅  

 

 
 


 
 
 
 

🔥 미션


 

  1. 주어진 IA(기획 플로우)와 와이어 프레임(디자인 프로토타입)을 보고 직접 데이터베이스를 설계해오기, 위에서 언급한 경우를 다 적용해서 할 것
  2. 이름 글자 수 등 세부적인 부분은 원하는 대로 해도 됨!
  3. 각 지역 별로 가게들이 있으며 가게를 방문하는 미션을 해결하며 포인트를 모으는 서비스
    1. 모든 지역마다 10개의 미션 클리어시 1000 point 부여로 고정

최소한 로그인/회원가입, 미션, 홈 화면에 필요한 데이터는 설계를 해야함
 
 
 

설계한 ERD (Draw io 사용)

 
 
 


 
 

📢 1주차 학습 후기


😺:  데이터베이스 설계 같은 경우는 앞으로 프로젝트에 있어서 중요한 부분이기 때문에 얻어갈 점이 많았습니다. 또 이때까진  Draw.io 로만 erd를 설계했었는데 앞으론 ERDcloud 등 다양한 툴도 사용해봐야겠다고 다짐했습니다. 

 

728x90