팀 프로젝트 진행 사항을 확인하기 위해서 오전과 오후에 한번 씩 진행사항과 이슈사항을 공유한다.
오전에 스크래핑을 하다가 데이터가 저장되는 값에 대해 기존 Products 테이블과 PriceHistory 테이블의 설계에 대한 이슈가 있어서 정리했다.
<기존 ERD>
<바뀐 ERD>
이슈 1️⃣ : Products의 currentPrice / PriceHistory의 price
기존
: Products 테이블에 originalPrice만 있고, 현재가격은 PriceHistory에 price로 저장
변경안
: Products 테이블에 currentPrice 컬럼 추가 → PriceHistory 테이블에 price 에 트랜잭션으로 현재가 함께 추가
이슈사항
변경 이유
entity & repository 생성
import {
Column,
CreateDateColumn,
DeleteDateColumn,
Entity,
PrimaryGeneratedColumn,
UpdateDateColumn,
} from "typeorm";
@Entity({ schema: "board", name: "articles" })
export class Article {
@PrimaryGeneratedColumn({ type: "int", name: "id" })
id: number;
@Column("varchar", { length: 10 })
author: string;
@Column("varchar", { length: 50 })
title: string;
@Column("varchar", { length: 1000 })
content: string;
@Column("varchar", { select: false })
password: string;
@CreateDateColumn()
createdAt: Date;
@UpdateDateColumn()
updatedAt: Date;
@DeleteDateColumn()
deletedAt: Date | null;
}
{ select: false }
이 옵션은 SELECT 쿼리를 통해 데이터를 불러올 때 password 필드가 기본적으로 제외되어야 함을 나타냅니다. 이는 비밀번호와 같이 민감한 정보를 안전하게 다루기 위한 일반적인 패턴입니다.