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
728x90
반응형
SMALL

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

 

1. DB 설계의 핵심은 '중복 없애기'

예를 들어서 사용자의 이름이 변경이 되면

게시글의 작성자는 잘못된 정보를 가지고 있게 된다.

그래서 데이터를 지우면 이런 게시글과 같은 테이블의 작성자도 전부 다 고쳐줘야 한다.

만일 게시글 테이블의 작성자 중 변경되지 못한 작성자가 있으면 사용자 테이블에서 찾을 수가 없게 된다.

이러한 문제가 발생하는 이유는 '데이터 중복' 때문이다.

실수로 중복된 데이터를 누락해서 수정을하지 않는 경우가 발생하면 데이터들 사이에 모순이 생긴다.

모순이 생기면 이상현상이 발생하게 된다. 이와 같은 이상은 갱신 이상이라고 한다. 

 

이런 문제를 해결하기 위해 만들어낸 DB 설계 방법이 정규화(Normalization)이다.

 

2. 정규화(Normalization)란?

데이터들 사이에서 발생한 모순의 근본적인 원인이 '데이터 중복'이라고 했다.

이런 문제를 해결하려면 데이터 중복을 없애면 된다. DB를 설계하면서 중복을 없애는 과정이 바로 정규화(Normalization)이다. 제1정규형, 제2정규형, 제3정규형 등 모든 정규형은 중복을 없애게 해주는 방법들이다.

 

주로 1정규형부터 3정규형까지를 실무에서 반영을 하고

BCNF, 4정규형, 5정규형을 적용시키면 지나치게 테이블이 분리되어서 관리가 복잡해지기 때문이다.

 

3. 요약

 

 

감사합니다.

https://www.youtube.com/watch?v=GyQDLUyVEFc&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=10

 

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

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

 

1. 기본키, 후보키, 대체키, 슈퍼키

  • 후보키의 범위 = 기본키 + 대체키
  • 기본키의 범위 = 후보키 중 대체 불가능
  • 슈퍼키의 범위 > 후보키의 범위 > 대체키의 범위 > 기본키의 범위

2. 개체-관계 모델

  • 약한 개체는 다른 개체의 존재 여부에 따라 의존적인 개체
  • 오너 개체는 다른 개체의 존재 여부를 결정하는 개체
  • 오너 개체와 약한 개체는 일반적으로 일대다의 관계를 가지고 있음
  • 약한 개체는 오너 개체의 키를 포함하여 키를 구성
  • E-R 다이어그램 (마름모: 오너개체와 약한 개체의 관계, 이중 사각형: 약한 개체)

3. 모델링 과정

요구사항 -> ERD 작성 -> 상세 속성 정의 및 정규화 -> DB 개체 정의 및 테이블, 인덱스 등 설계

 

4. 이상현상 (삭제이상, 삽입이상, 수정이상)

  • 연쇄적 삭제 이상
  • NULL값 입력 이상
  • 중복된 데이터로 일부만 수정되는 이상

 

5. 함수 종속성

  • 함수와 함수의 종속관계

 

6. 정규화

  • 도메인을 원자값으로 구성
  • 부분적 함수 종속 제거
  • 이행적 함수 종속 제거
  • 결정자이면서 후보키가 아닌 것 제거
  • 다치 종속 제거
  • 조인 종속성 이용

 

모델링의 개념적인 부분과 실제 모델링은 따로 배워야 하는 부분이 크다.

 

감사합니다.

https://www.youtube.com/watch?v=6beCydWxWWA&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=14

 

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

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

 

1. 데이터베이스 네이밍 규칙

1.1. 테이블명, 컬럼명을 소문자로 작성

가독성이 중요하다.

꼭 엄격히 지켜야 된다의 의미는 아니다.

일관되게 설계하기 위함이다.

대문자로 예약어를 사용하기 때문이다. 그래서 테이블명, 컬럼명은 소문자로 사용한다.

1.2. snake_case를 사용

테이블명과 컬럼명은 띄어쓰기시 snake_case로 사용한다.

firstName -> first_name

1.3. 축약어를 사용하지 않는다.

처음보는 사람도 이해할 수 있도록 직관적이어야 한다.

fst_nm -> first_name

그러나 전자정부프레임워크의 경우 축약형을 사용을 한다. (보안성)

1.4. SQL문을 작성할 때 예약어만 대문자로 표현해라.

예약어는 대문자로 표현한다.

테이블명을 지을 때 복수형 사용

꼭 그런 것 만은 아님

 

감사합니다.

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

 

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

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

 

1. PK(Primary Key, 기본키)란?

PK(Primary Key, 기본키)는 특정 데이터를 식별하기 위한 값이다.

PK는 중복되어서는 안 되며, 비어서도 안 된다.

 

2. 현업에서 PK(Primary Key)는 어떻게 설정할까?

주민등록번호, 이메일은 유일한 값이지만 PK로 사용하는 것은 바람직하지 않다.

바뀔 가능성이 존재하기 때문이다.

현업에서는 PK(Primary Key)를 주로 Auto Increment(숫자가 1씩 증가하는 방식)나 UUID(랜덤값)로 설정을 많이 한다.

 

3. FK(Foreign Key, 외래키)란?

참조 테이블 입장에서 이를 FK라고 한다.

기준 테이블과 연결하기 위한 PRIMARY KEY를 저장한다.

내부 조인으로 연결한다.

적절하지 않은 FK를 입력하면 DB에서는 에러를 발생시킨다. 이를 '참조 무결성'이라고 한다. 

 

감사합니다.

https://www.youtube.com/watch?v=72Ri8KxgSp8&list=PLtUgHNmvcs6ooYsXgdlE80_QjGj8lg4YG&index=12

 

728x90
반응형
LIST

+ Recent posts