본문 바로가기

mysql

(9)
TYPESCRIPT - typeorm - snakeCase 커스텀 네이밍 전략 사용하기 (옵션): 만약 일관성 있는 네이밍 규칙을 유지하기 위해 모든 엔티티의 컬럼을 스네이크 케이스로 자동으로 매핑하고 싶다면, 커스텀 네이밍 전략을 사용할 수 있습니다. 이 경우, ormconfig.ts 파일 또는 TypeORM 설정 파일에서 namingStrategy를 설정해주면 됩니다. // snake-case-naming-strategy.ts import { DefaultNamingStrategy, NamingStrategyInterface } from 'typeorm'; import { snakeCase } from 'typeorm/util/StringUtils'; export class SnakeCaseNamingStrategy extends DefaultNamingSt..
TYPEORM - nestjs - save FK관련 저장문제 해결 save를 통해 userId와 quantity를 모두 올바르게 저장하였지만 productItems만 저장되지 않았다. product_items는 product table의 PK를 FK로 참고하고 있던 컬럼이였다. async createCart(cart:CreateCartDto, userId: number) { cart.userId = userId; return await this.cartRepository.save(cart); } 콘솔을 찍어봤지만 다 잘들어가고 있었다. 뭐가 문젠지 몰라서 객체로 직접 다 넣어서 save도 시켜주고 그랬지만 당연하게도 해결되지않았다. 알고보니 product_items는 product table을 참고 하고 있었기때문에 저장할 데이터의 이름을 id로 맞춰줘야했다 생각해보니..
TYPEORM - Nestjs - Entity(ONETOMANY, MANYTOONE) UserEntity의 user_id를 CartEntity에서 일대 다의 관계 @Entity('users') export class UserEntity { @PrimaryGeneratedColumn() _id: number; @Column({ type: 'text', nullable: false }) name: string; @Column({ default: false, nullable: false }) password: boolean; @OneToMany(() => CartEntity, (carts) => carts.user) carts: CartEntity[]; } @Entity('carts') export class CartEntity { @PrimaryGeneratedColumn() _id: num..
unic5n - showRoom 쿼리문 LEFT JOIN, JSON_ARRAYAGG, JSON_OBJECT SELECT show_room.id, show_room.image_url, show_room.descriptions, show_room.header, po.products FROM show_room LEFT JOIN( SELECT show_room_id, JSON_ARRAYAGG(JSON_OBJECT( "id", product.id, "name",product.names, "price",product.price, "sub_description",product.sub_description, "product_size",product_size, "image_url",(SELECT JSON_ARRAYAGG(image_url) FROM produ..
LIMIT SQL문 마지막에 출력할 개수를 정해줄 수 있습니다. GROUP BY product.id group by 문보다 아래 써줘야합니다. ORDER BY price DESC order by도 마찬가지 입니다. 다 정렬된뒤에 출력할 데이터만큼 꺼내기 때문이죠 LIMIT 10 OFFSET 0 10개의 데이터 0번 index부터 꺼낼수 있음. offset 생략하면 0은 디폴트값으로 주어진다. LIMIT 10
Sub-query 서브쿼리는 쿼리내에서 일부분의 데이터를 가져올 때 사용할 수 있습니다. 전체적인 데이터를 들고 오는 방식이 아닌 원하는 데이터들만 조회해서 들고 오기 때문에 JOIN연산을 진행할 수 있습니다. SELECT p.id, p.names, p.price, p.sub_description, image.image_url, pd.descriptions AS detail, p.descriptions FROM product p JOIN sub_category ON p.sub_category_id = sub_category.id JOIN main_category ON sub_category.main_category_id = main_category.id JOIN (SELECT product_id, JSON_ARRAYAGG..
정규화 간단정리 정규화는 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이때 이상현상이란 테이블 수정(갱신, 삽입, 삭제)시 원치 않은 데이터의 변형이 있을 수 있다. 관계형 데이터베이스 설계에서 중복을 최소화 하게 구조화 하는 것이다. 정규화의 원칙 -데이터의 중복을 최소화 -정보의 무손실 -독립적인 관계큰 별개의 릴레이션으로 표현 -데이터 모형의 단순화 -데이터 구조의 안정성 및 무결성 유지 -속성의 배열 상태 검증 등이 있음 정규화 절차 설명 제 1정규화 속성의 원자성을 확보한다. 속성의 중복값을 제거한다 기본키를 설정한다. 제 2정규화 기본키가 2개 이상의 속성으로 이루어진 경우, 부분함수 종속성을 제거(분해)한다 부분함수 종속성이란, 기본키가 2개 이상인 칼럼으로 이루어진 경우에만 발생(기본키..
SQL Error 1064(42000) 문법에러 NOT_NULL -> NOT NULL