우주먼지 개발 log

[TIL] 24/01/08 관계형 database.. 오늘도 ERD 본문

TIL(Today I Learned)/스파르타 내배캠 최종프로젝트

[TIL] 24/01/08 관계형 database.. 오늘도 ERD

개발자먼지 2024. 1. 9. 01:20
반응형

유진영튜터님 짱.짱.

TIL

관계형 database를 위한 ERD 작성 중 (매우 혼란)

1:1 (유저 고유값.. 이름 그런것..)
- 그냥 유저 테이블에 기입하자

 

1:n (유저들이 잘하는 것 한가지) 

- 관계성 database 에서는 정보는 한쪽만 알아도 됨

- 바람둥이와 여자들이 있으면 여자만 바람둥이를 기억하는 것이 쉬움

- 잘하는 것을 테이블을 만들고, 유저가 n 이므로 유저에 잘하는 것 id를 기입

 

n:m (유저들이 선택한 기술스택들 여러가지)

- 유저도 기술들을.. 기술도 우리들을 중복으로 가지고 있음

- 유저에 기술 테이블을 늘릴 수도, 기술에 유저 테이블을 늘릴 수도 없음.

- 유저아이디와 기술아이디를 저장하는 중간 테이블이 필요하다.

 

 

튜터님 정리

User                    TechStack
        ------------------------------------
        (Primary Key)           (Primary Key)
        1                       자바스크립트
        2                       리액트
        3                       리덕스
        4                       넥스트JS

두 개의 모델 사이에 연결(관계)의 유형
(1) 1:1 관계    
(2) 1:N 관계
(3) M:N 관계

이 중, 1:1 관계와 1:N 관계는, 구현하는 방법이 99% 같아요.

1:1 관계이면, 둘 중에 한 명이 상대방을 기억하면 됨
-> 즉, 두 테이블 중 하나에 상대방 PK를 기억하는 컬럼이 있으면 됨.

1:N 관계이면, 
-> 1:N 관계 중, N에 해당하는 모델이, 1에 해당하는 모델의 PK를 기억하고 있으면 됨.

M:N 관계가 문제
-> 

User
------------------------
id          name
-----------------------
1           진민용
2           정효창
3           강지향
4           김은비
5           김주희


TechStack
-----------------------
id          name
-----------------------
1           자바스크립트
2           파이썬
3           리덕스
4           리액트
5           Next.js

//다대다 연결일 경우 아래와 같은 중간 테이블이 필요하다! 
User_TechStack
--------------------------
userId          techStackId
--------------------------
1               1
1               2
1               3
2               2
2               5
3               1




내가 가장 잘하는 기술스택은?
    -> 한 사람이 하나의 기술스택만 선택할  수 있고
    -> 기술스택 입장에서는 자기를 잘 다루는 수 많은 사람이 있는 거니까
    -> 1:N

내가 다룰 줄 아는 기술스택은?
    -> 한 사람이 N개 (여러 개)의 기술스택을 선택할 수 있음
    -> 기술스택 입장에서는 자기를 다룰 줄 아는 사람이 많이 있을 거 아니에요? (N명)
    -> N:M

 

덕분에 거의 끝냈습니다.

혼란스럽던 우릐의 ERD.. 

이제 입력만 하면됨.

참고로 아래 글에 따르면 중간테이블에 중간테이블용 id도 필수라고 함 (primaryKey).

 

- 잘 정리된 블로그 참고!

 

 

관계형 데이터베이스 설계 (관계 종류 1:1 / 1:M / N:M ) - 하나몬

⚡️ 스키마(Schema) & 쿼리 디자인(Query Design) ❗️스키마(schema)란? 스키마란 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것을 말한다

hanamon.kr

 

 

프로젝트 진행상황

1. 오늘 한일.. ERD.. ERD... 수파 수파 수파...베이스

2. 디자이너님 1차 와이어프레임 피드백 주고받기

2. 역할 분담

3. git hub contributor 등록, create next-app 까지만 푸쉬

 

회고

(다른분이 적어주신 회고인데 그대로 들고와봄!)

  1. ERD 구축에 시간을 많이 쏟았으며, 관계성 테이블 구조를 짜는 것이 어려웠다.
  2. 와이어 프레임에 대해 추가적인 피드백이 오갔지만 우리가 생각한 사이트에 컨셉이 더 반영 됐으면 좋겠다.
반응형