본문 바로가기
Memo/BootCamp : TIL

[Day 47] 관계형 데이터베이스 - 설계 Ⅱ

by 달의 조각 2022. 8. 8.

학습 주제

 

SQL을 사용해 ERD 설계하기
정규화
SQL 종류

 


 

새롭게 배운 내용

 

 

SQL을 사용해 ERD 설계하기

CREATE TABLE user (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  name varchar(255) NOT NULL,
  email varchar(255) NOT NULL
);

CREATE TABLE content (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  title varchar(255) NOT NULL,
  body varchar(255) NOT NULL,
  created_at timestamp default CURRENT_TIMESTAMP DEFAULT_GENRATED NOT NULL,
  userId int NOT NULL,
  FOREIGN KEY (userId) REFERENCES user(id)
);

 

추가 요구 조건

CREATE TABLE user (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  name varchar(255) NOT NULL,
  email varchar(255) NOT NULL,
  roleId int,
  FOREIGN KEY (roleId) REFERENCES role(id)
);

CREATE TABLE content (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  title varchar(255) NOT NULL,
  body varchar(255) NOT NULL,
  created_at timestamp default CURRENT_TIMESTAMP DEFAULT_GENRATED NOT NULL,
  userId int NOT NULL,
  FOREIGN KEY (userId) REFERENCES user(id)
);

CREATE TABLE category (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  name varchar(255) NOT NULL
);

CREATE TABLE content_category (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  contentId int NOT NULL,
  FOREIGN KEY (contentId) REFERENCES content(id),
  categoryId int NOT NULL,
  FOREIGN KEY (categoryId) REFERENCES category(id)
);

CREATE TABLE role (
  id int PRIMARY KEY AUTO_INCREMENT NOT NULL,
  name varchar(255) NOT NULL
);

 

🌕 인스타그램 post 테이블: ID와 게시물 ID을 둔다
      고유 인덱스 번호를 따로 부여해서 이를 PK 지정하는 것이 검색 성능에 좋다

🌕 이미지를 표시하는 경우에 어떤 타입을 사용하는 게 좋을까?

  • varchar, text: URL?
  • blob: 0과 1로 이루어진 거대 데이터
  • 관계형 데이터 안에서는 메가 데이터만 되어도 거대 데이터라고 한다
  • 현업에서는 데이터 파일 서버를 따로 두고 그 링크를 가지고 오는 것이 바람직하다 입출력 시간, 효율성 면에서 좋다
  • MSA에 대해 찾아보기

 

2022.08.08 - [Back-End/Database] - 정규화(Normalization)

 

정규화(Normalization)

관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고, 데이터의 일관성과 정확성을 유지하기 위해 무손실 분해하는 과정 🔬 이상 현상 삽입 이상: 정보 저장 시 해당 정

cookiee.tistory.com

 

 

보강할 내용

 

MSA
✅ 정규화, 비정규화
 서브 쿼리

https://school.programmers.co.kr/learn/challenges?tab=sql_practice_kit

 

 

회고

 

-

 

 

★★★☆☆

'Memo > BootCamp : TIL' 카테고리의 다른 글

[Day 49] Spring Framework Ⅱ  (0) 2022.08.10
[Day 48] Spring Framework  (0) 2022.08.09
[Day 44] 관계형 데이터베이스 - 설계  (0) 2022.08.05
[Day 43] 관계형 데이터베이스 - SQL  (0) 2022.08.04
[Day 42] [네트워크] HTTP  (0) 2022.08.03

댓글