본문 바로가기

DB설계12

[토이 프로젝트 개발일지] 1. 요구사항 정리 및 DB 설계 인프런의 박재성님 강의 '비전공자도 이해할 수 있는 DB설계'에 따라내 프로젝트의 요구사항을 보고 DB를 설계해보기로 했다.1. 요구사항회원가입 기능사용자는 다음 정보를 입력하여 회원가입할 수 있다.이메일비밀번호이름생년월일이메일 인증 절차를 통해 본인 인증을 완료해야 한다.회원가입이 완료되면, 사용자는 이메일과 비밀번호를 활용해서 로그인한다.로그인 기능사용자는 이메일과 비밀번호를 입력하여 로그인할 수 있다.로그인 성공 시, 나만의 단어장 기능이 활성화된다.로그인 실패 시, 오류 메시지를 출력한다.유사어 찾기사용자는 검색창에 단어 또는 뜻을 입력할 수 있다.입력된 정보를 기반으로 다음 결과를 제공한다비슷한 뜻을 가진 단어 목록각 단어의 의미사용자는 결과를 단어의 길이 짧은 순이나 긴 순서로 목록을 정렬할 .. 2025. 4. 22.
[DB] 과연 3년차 비전공 개발자도 이해할 수 있을까? 인프런 DB 설계 강의 - 19. 숨어있는 중복을 찾아라 1. 숨어있는 중복을 찾아라무슨 뜻인지 예시를 보자 posts (게시글) 테이블id제목내용좋아요 수사용자 id (fk)1제목1내용121 users (사용자) 테이블 id이름1우리우리2유재석 likes (좋아요) 테이블id사용자 id (fk)게시글 id (fk)111221 위 테이블의 구성에서는 임의의 데이터를 넣어봐도 중복 데이터가 발생하는 컬럼이 있진 않다. 하지만 숨어있는 중복이 있다. 숨어있는 중복이 어떤 건지 설명하기 전에 데이터 중복이 발생되는 구조로 설계하면 어떤 게 안 좋은 지 다시 한번 짚고 넘어가자.데이터 중복이 발생하게 되면 특정 데이터를 수정하려고 할 때, 그 데이터와 중복되는 모든 데이터를 같이 수정해야 한다. 이 과정에서 실수가 일어날 수도 있다고 했다. 이 관점에서 위 테이블 구.. 2025. 2. 2.
[DB] 과연 3년차 비전공 개발자도 이해할 수 있을까? 인프런 DB 설계 강의 - 18.가짜 중복과 진짜 중복을 구별해라 1. 가짜 중복과 진짜 중복을 구별해라가짜 중복과 진짜 중복이 어떤 의미인지 예시를 보자.  posts (게시글) 테이블id제목내용작성자1[속보] 대통령 탄핵내용1KBS2[속보] 대통령 탄핵내용1KBS3[속보] 대통령 탄핵내용1KBS'KBS'라는 사용자가 같은 제목과 같은 내용의 게시글을 3개 작성했다고 가정하자. 겉으로만 봤을 땐 제목 컬럼에서도 데이터 중복이 발생한 것처럼 보이고, 내용 컬럼에서도 데이터 중복이 발생한 것처럼 보이고, 작성자 컬럼에서도 데이터 중복이 발생한 것처럼 보인다. 하지만 여기서 진짜 데이터 중복이 발생한 컬럼은 작성자 컬럼뿐이다.  가짜 중복인지 진짜 중복인지 어떻게 판단할 수 있을까?  가짜 중복인지 진짜 중복인지 판단하려면 이렇게 질문해 보면 된다.“실제 서비스에서 A 데.. 2025. 2. 1.
[DB] 과연 3년차 비전공 개발자도 이해할 수 있을까? 인프런 DB 설계 강의 - 17. 데이터 중복이 발생하는 컬럼이 있는 지 확인해라 1. 데이터 중복이 발생하는지 시뮬레이션을 해라DB 설계의 핵심 원칙은 '중복 없애기'라고 했었다. 초안으로 구성된 테이블에서 데이터 중복이 발생하는 구성인지 임의로 데이터를 넣어봐야 한다. 무슨 말인지 아래 예시를 보자. posts (게시글)id제목내용작성자     위 테이블을 잘 만든건지 확인을 해봐야 한다. DB 설계에서 중복 데이터만 발생하지 않는다면 잘 설계됐다고 판단할 수 있다. 따라서 아래 테이블에 임의의 데이터를 여러 개 넣어볼 것이다. (이 과정이 익숙해지면 머릿속으로 임의의 데이터를 넣어보고 중복 데이터가 발생할 수 있는 구조인지 아닌지 발견할 수 있다.) posts (게시글)id제목내용작성자1[속보] 개발자 채용 확대내용1우리우리2[속보] 우리우리 이직 성공내용2우리우리3[속보] 우리.. 2025. 1. 27.
[DB] 과연 3년차 비전공 개발자도 이해할 수 있을까? 인프런 DB 설계 강의 - 12~16. 헷갈릴 땐 관계(1:1, 1:N, N:M)를 파악 1. 1:1 관계 / 1:N 관계 / N:M 관계?옛날 개발자들이 수많은 DB 설계 케이스를 접하다 보니 엔티티 간의 관계에서 패턴을 찾은 것이다. 그게 바로 1:1 관계, 1:N 관계, N:M 관계라는 패턴이다. 이 개념을 알게 되면 DB 설계할 때 조금 더 수월하게 할 수 있다. 그럼 지금부터 1:1 관계, 1:N 관계, N:M 관계에 대해 알아보자. 2.  엔티티 관계 파악 방법2-1. 엔티티 간에 어울리는 동사 찾기A(주어)가 B를 _____. (A가 주어)B(주어)가 A에 의해 ______. (B가 주어)서비스의 관점에서 동사를 떠올려야 한다. ex) 사용자가 이메일을 소유한다. / 이메일은 사용자에 의해 소유된다. 2-2. 1번 과정에서 찾은 동사를 활용해 적절한 단어(하나의 or 여러 개의).. 2025. 1. 26.
[DB] 과연 3년차 비전공 개발자도 이해할 수 있을까? 인프런 DB 설계 강의 - 11. 테이블에 FK를 넣어도 ‘규칙 1’을 못 지킬 때는 중간 테이블을 하나 더 students (학생)id 이름 수강 과목1박재성수학, 과학2김재은국어, 수학3김지훈국어, 과학위 테이블을 보면 **규칙 1(한 칸에는 한 가지 정보만 들어가도록 만들어라)**을 안 지키고 있다.규칙 1을 지키게 만들기 위해 테이블을 분리해 보자. students (학생)id이름 수강 과목 id (FK)1박재성2, 32김재은1, 23김지훈1, 3  courses (수강 과목)id 과목명1국어2수학3과학여전히 규칙 1을 안 지키고 있다. 그러면 FK를 students 테이블이 아닌 courses 테이블로 옮겨보자. students (학생)id 이름1박재성2김재은3김지훈  courses (수강 과목)id 과목명 학생 id1국어2, 32수학1, 23과학1, 3FK의 위치를 다른 테이블로 바꿔봤음도 불구하고 .. 2025. 1. 5.