개발공간/Project

💭 본격 프로젝트 table 설계하기

로지네 2023. 4. 18. 16:16

1. 필요시 설계해둔 Entity 수정

2. 해당 Entity를 담을 mariadb Table 설계

3. 설계한 테이블 DB에 Create

4. 테이블 생성 후, 예시 데이터 insert

 

🔥 일단 내가 설계해 둔 Entity 살펴보기

package com.delivery.entity;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.persistence.*;

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class Food {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO.IDENTITY)
    private Long id; //음식 id,pk

    @Column(nullable = false)
    private String name; //음식 이름

    @Column(nullable = false)
    private int price;// 음식 가격

    @Column(nullable = false)
    private String category; // 음식 카테고리

    @Column(nullable = false)
    private String description; // 음식 설명

    @Column(nullable = false)
    private String imageUrl; // 음식 사진 url

    @Column(nullable = false)
    private int quantity; // 음식 수량
}

 

일단 테이블을 만들려면 Food Entity의 속성과 관계를 왕창 뜯어봐야할 것 같다....!

 

id 속성은 pk, 자동 증가하기 때문에  AUTO_INCREMENT 옵션 必

name, price, category, description, imageUrl, quantity 속성은 모두 테이블 컬럼으로 추가

 

  • id는 각 음식의 고유한 식별자로, BIGINT 타입으로 정의
  • NOT NULL 제약 조건이 적용되어 있어서, id 값은 NULL이 될 수 없음!
  • AUTO_INCREMENT 속성이 적용되어 있어서, 이 컬럼의 값은 자동으로 1씩 증가하는 값으로 설정
  • 다만, id를 LONG 타입으로 정의하려고 했으나 mariadb 사용으로 BIGINT 타입으로 정의

 

  • name은 음식의 이름을 저장하기 위한 컬럼
  • VARCHAR(255) 타입으로 정의.
  • NOT NULL 제약 조건이 적용되어 있어, name 값은 NULL이 될 수 없음!

 

  • price는 음식의 가격을 저장하기 위한 컬럼
  • INT(11) 타입으로 정의
  • NOT NULL 제약 조건이 적용되어 있어, price 값은 NULL이 될 수 없음

 

  • category는 음식의 카테고리를 저장하기 위한 컬럼
  • VARCHAR(255) 타입으로 정의
  • NOT NULL 제약 조건이 적용되어 있어, category 값은 NULL이 될 수 없음

 

  • description은 음식에 대한 설명을 저장하기 위한 컬럼
  • TEXT 타입으로 정의
  • NOT NULL 제약 조건이 적용되어 있어, description 값은 NULL이 될 수 없음

 

  • imageUrl은 음식의 이미지 URL을 저장하기 위한 컬럼
  • VARCHAR(255) 타입으로 정의

 

  • quantity는 음식의 수량을 저장하기 위한 컬럼
  • INT(11) 타입으로 정의
  • NOT NULL 제약 조건이 적용되어 있어, quantity 값은 NULL이 될 수 없음

 

🛒 그렇다면 위 내용을 배경으로 설계된 테이블은?

CREATE TABLE food (
  id BIGINT(20) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(255) NOT NULL,
  price INT(11) NOT NULL,
  category VARCHAR(255) NOT NULL,
  description TEXT NOT NULL,
  imageUrl VARCHAR(255),
  quantity INT(11) NOT NULL
);

 

일단 이미지 url은 not null로 설정 하지 않고 예시 데이터를 넣을 때도 빼뒀다. 

예시 코드는 배달의 민족 - 프랭크버거에서 참고해 작성했다! 

 

INSERT INTO food (name, price, category, description, quantity) VALUES

('더블치즈버거', 7300, '햄버거', '100% 소고기 수제 패티와 체다치즈가 적절히 어우러진 인기 있는 메뉴입니다.', 50),

('콜라', 2000, '음료', '탄산음료 중 하나로 상큼한 맛이 특징입니다.', 100),

('감자튀김', 2500, '디저트', '크리스피 슈스트링 감자의 바삭한 식감이 일품인 메뉴입니다.', 30);

 

짜잔 이렇게 insert 까지 완료! 

 

'개발공간 > Project' 카테고리의 다른 글

❓SpringBoot @NotEmpty 적용 안될때  (0) 2023.04.25
🛒 Controller - Service - Repository 만들기  (0) 2023.04.19
test  (0) 2023.03.28