728x90
반응형
SMALL

안녕하세요, 유튜브를 통해서 데이터모델링을 학습하고 자료를 남깁니다.

 

이전 [실습] 요구사항을 보고 DB 설계해보기 - JSCODE 커뮤니티 (1) 의 게시글을 이어서 작성을 하였습니다.

1. 데이터 모델링

  • 1:N의 관계를 갖는 테이블들은 FK를 만들어서 만듭니다.

하나의 테이블이 여러 개의 테이블의 정보를 가져와야 하는 경우

여러 테이블에 FK를 등록을 합니다.

1. 카테고리, 해시태그

카테고리와 해시태그의 경우 1:M 관계의 테이블이므로

여러 개의 테이블에 FK를 등록한다.

  • N:M의 관계를 갖는 테이블들은 중간 테이블을 만들어서 FK를 몰아 넣습니다.

예시) 게시글-해시태그, 팔로우, 신고, 좋아요, 조회수

1. 게시글-해시태그

게시글 : 해시태그 = N:M 관계의 테이블

해시 태그 테이블을 만들고,

두 테이블을 연결하기 위한 게시글-해시태그 중간 테이블을 만든다.

2. 좋아요

회원 : 게시글 = N:M 관계의 테이블

두 테이블을 연결하기 위한 좋아요 중간 테이블을 만든다.

3. 신고

회원 : 게시글 N:M 관계의 테이블

신고한 회원과 해당 게시물과의 관계는 N:M이다.

그래서 신고라는 중간 테이블을 만들어서 관계를 만들어 준다.

추가로 신고 테이블에 신고 사유를 추가하여

회원의 해당 게시글에 대한 신고 사유를 남길 수 있도록 한다.

4. 조회수

회원 : 게시글 = N:M 관계의 테이블

두 테이블을 연결하기 위한 중간 테이블을 만든다.

이유는 한 로그인 회원의 새로고침을 통한 조회수 올리기 방지 기능을 위하여 

어떤 회원이 어떤 게시글을 조회했는지를 알아야 한다.

조회수 테이블을 통해서 각 게시글의 회원들의 조회수를 통계 수치로 구할 수 있다.

5. 팔로우

N:M 관계의 테이블

회원 테이블의 사용자가 다른 사용자를 팔로우 하는 기능이다.

팔로우라는 중간 테이블을 만들고

FK를 몰아줌으로써 만든다.

  • 통계 수치는 따로 테이블을 빼서 조회합니다.

1. 좋아요수와 조회수

좋아요 테이블과 조회수 테이블에서 

직접 통계한 수치를

조회할 때 한꺼번에 조회합니다.

게시글의 좋아요수와 조회수는 

통계의 부분에 속합니다.

이러한 경우 

직접 테이블을 통해서 수치를 구할 수 있도록 하고

컬럼에서는 제외합니다.

 

감사합니다.

https://www.youtube.com/watch?v=8jpyt-T0Fz0&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=13

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 데이터모델링을 학습한 자료를 남깁니다.

 

1. 요구사항

요구사항만 가지고 DB 설계를 하는 일은 거의 없다.

현업에서는 보통 UI를 보고 DB 설계를 한다.

2. 6가지 규칙 참고

 

3. 실습

먼저 노트패드에 저장할 데이터를 그룹핑 한다.

그리고 Microsoft Excel에 그룹핑한 데이터를 나열해본다.

그리고 6가지 원칙을 적용하여서 테이블을 분리해나간다.

DB설계_실습_자료.txt
0.00MB

 

DB설계_실습_자료.xlsx
0.01MB

 

 

 

감사합니다.

https://www.youtube.com/watch?v=gB21FzL70TI&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=5

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 유튜브를 보고 데이터모델링을 학습하여 자료를 남깁니다.

 

1. 가짜 중복과 진짜 중복

2. 가짜 중복인지 진짜 중복인지 어떻게 판단할 수 있을까?

3. 예시 1

첫번째 게시글의 제목이나 내용이 바뀌어도 

두번째 게시글의 제목이나 내용이 바뀌어야 하는 것은 아니다.

가짜 중복이라는 것을 알 수 있다.

진짜 중복에 대해서만 테이블을 분리해야 한다.

사용자 테이블을 만들고

사용자 테이블의 작성자 id를 게시글 테이블에 FK로 등록을 함으로써

테이블을 분리하였다.

3. 예시 2

카테고리의 경우 데이터 중복이 발생한 경우이다.

생활용품이라는 동일한 키워드가 입력되기 때문이다.

이러한 경우

다음과 같이 테이블을 나누어서

컬럼의 데이터 중복을 방지한다.

 

 

고맙습니다.

https://www.youtube.com/watch?v=UtpTHWTNI-A&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=7

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 데이터모델링을 보고 학습한 자료를 남깁니다.

 

1. 데이터 중복 시뮬레이션

요구사항을 보고 테이블을 만들었다고 가정을 하자.

하지만 테이블을 만들었다고 해서 중복데이터가 발생하는지 알 수 없다.

더미 데이터를 넣고 중복 데이터가 발생할 수 있는 구조인지 생각해보아야 한다.

 

2. 실습

2.1 게시글 테이블 생성 및 더미 데이터 입력

게시글 테이블에 더미 데이터를 입력하였다.

2.2 게시글 및 사용자 테이블 나누기

다음과 같이 게시글 테이블이 사용자 테이블을 참조하도록 게시글 테이블에 사용자의 PK를 등록하였다.

사용자와 게시글을 1:N의 관계를 형성하도록 만들었다.

2.3 사용자의 데이터 변경

사용자의 데이터를 변경해보았다.

게시글 테이블에서 사용자 테이블의 PK를 참조하고 있으므로

사용자의 데이터가 변경되더라도 

데이터의 무결성을 지킬 수 있다.

2.4 데이터 중복의 의문점

게시글의 정보를 id 값을 제외하고는 동일하게 입력을 하였다. 작성자 id는 제외하였다.

이와 같은 경우 게시글의 제목과 내용을 데이터의 중복이라고 볼 수 있는가?

다음 글에서 보겠다.

 

데이터중복_실습_자료.xlsx
0.01MB

 

감사합니다.

https://www.youtube.com/watch?v=2u7z_gAvc_I&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=15

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 유튜브에서 데이터모델링을 학습한 자료를 남깁니다.

 

1. 한 가지 정보라는 것은 관점에 따라 달라질 수 있다.

1.1 예시 이름

예를 들어 성을 가져와야 하는 작업이 많다면

일일이 '박재성'을 '박'을 따로 분류하지 않고

성과 이름을 저장하면 쉽게 가져올 수 있다.

1.2 예시 핸드폰 번호

최근에는 한 번에 저장하는 경우가 많다.

이전에는 이렇게 따로 따로 구분해서 저장을 하는 경우가 더 많았다.

따로 따로 조회해야 하거나 

한번에 조회해야 하는 기준에 따라 판단하면 된다.

데이터를 따로 저장해야만 관리하고 분리해서 사용하면 좋을 때 이렇게 데이터를 분리해서 저장할 수 있다.

 

한 가지 정보가 한 가지가 아닐 수 있다.

 

2. 요약

 

감사합니다.

https://www.youtube.com/watch?v=9KUjJSdA6Dk&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=11

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 유튜브를 보고 학습한 자료를 남깁니다.

 

1. 한 칸에는 한 가지 정보만 들어가도록 만든다.

1.1 사례 1

한 칸에 이메일이 두개 들어가있다.

이것이 안 지킨 사례이다.

하지만 필요에 따라서 한 칸에 여러 데이터를 구분자를 넣어서 입력하기도 한다.

1.2 사례 2

 

1.3 사례 분석

예를 들어 숫자를 조회해야 한다든지 

상품을 따로 따로 쓰고 싶다면 

구분하기가 어렵다.

그래서 한 칸에 한 가지 정보만 넣는 것이 관리가 좋다.

 

1.4 한 칸에 2개 이상의 정보가 들어간다면

테이블을 분리하면 된다.

 

1.5 실습

예제를 통해서 살펴보겠다.

Microsoft Excel을 통해서 

먼저 테이블을 나누었다.

테이블을 나누었다.

이렇게 하면 테이블은 나누었지만

어떤 사용자의 이메일인지 구분이 불가능하다.

이번에는 이렇게 구분해보았다.

이메일의 PK를 사용자의 FK로 등록한 것이다.

이메일의 PK를 사용자의 FK로 등록을하니 한 칸에 여러 개의 이메일의 PK가 들어가게 되었다.

이번에는 사용자의 PK를 이메일의 FK로 등록한 것이다.

한 사용자가 여러 이메일을 갖을 수 있도록 설계된 관계형 데이터베이스의 모습이다.

이렇게 하면 1번을 필터를 걸어서 데이터를 가져오면은

사용자가 갖고 있는 이메일 정보들을 모두 불러올 수 있는 것입니다.

이 과정을 보고 데이터베이스 이론에서는 제1정규형이라고 부른다.

한 칸에 한 가지 정보만 들어가는 것을 '제1정규형'이라고 부른다.

 

실습 자료를 남깁니다.

제1정규형_실습_자료.xlsx
0.02MB

 

 

감사합니다.

https://www.youtube.com/watch?v=whPcJ6ThEXo&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=1

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 유튜브로 데이터모델링을 보고 학습한 자료를 남깁니다.

 

1. 요구사항

2. 저장할 데이터 파악하기

요구사항을 통해서 저장할 데이터 파악하기

3. 그룹핑해서 분류하기

엔티티를 만들어서 사용하기

데이터를 그룹핑 하여 다음과 같이 엔티티를 만든다.

4. 테이블로 나타내기

ID는 AUTO_INCREMENT 하면 된다.

ID는 서비스와 전혀 상관 없는 값을 입력해주면 된다.

예를 들면 UUID (랜덤값)이다.

 

감사합니다.

https://www.youtube.com/watch?v=rLfXFqLWSFE&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=3

 

728x90
반응형
LIST
728x90
반응형
SMALL

안녕하세요, 유튜브 데이터모델링을 보고 학습한 자료를 남깁니다.

 

1. DB설계 전체 과정

1.1 저장해야 하는 데이터 파악하기

디자인을 보고 데이터를 결정을 한다.

 

1.2 그룹핑해서 분류하기

파악한 데이터를 그룹핑하기

 

3. 6가지 규칙 적용시키면서 테이블 분리해나가기

6가지 규칙 적용시키면서 테이블 분리해나가기

 

감사합니다.

https://www.youtube.com/watch?v=r712opiWA0Q&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=2

 

728x90
반응형
LIST

+ Recent posts