Phantom Programming 팬텀 프로그래밍
  • [DB 모델링] Urban Shop E-Commerce DB 만들기
    2024년 11월 27일 19시 42분 21초에 업로드 된 글입니다.
    작성자: Devrun
    반응형

    오늘은 DB를 실제로 만들고 Query를 작성해 볼 것이다. 

    CREATE DATABASE UrbanShop;

    SQL Server를 SSMS로 접속해서 쿼리를 위와 같이 작성하면 아래와 같이 DB가 만들어진다.

    이제부터 이 DB에 모든 테이블을 생성할 것이다. 또한 View도 만들 것이다. 여기서 말하는 View DB 테이블의 데이터를 수집해서 하나의 뷰를 만들어서 보기 편하게 만드는 것을 말한다. 실제 HTML 같은 뷰가 아니란 것이다.

     

    1차적으로 FK를 가지고 있지 않는 테이블을 우선적으로 생성했다. 작성한 쿼리는 아래와 같다.

    CREATE TABLE ACCOUNT(
    ACCOUNT_ID INT IDENTITY(1,1) PRIMARY KEY,
    ACCOUNT VARCHAR(10) NOT NULL,
    PASSWORD VARCHAR(255) NOT NULL
    );
    CREATE TABLE LOCATION (
    LOCATION_ID INT IDENTITY(1,1) PRIMARY KEY,
    CITY VARCHAR(50) NOT NULL,
    PROVINCE VARCHAR(50) NOT NULL,
    COUNTRY VARCHAR(50) NOT NULL
    );
    CREATE TABLE PAYMENT_STATUS (
    PAYMENT_STATUS_ID INT IDENTITY(1,1) PRIMARY KEY,
    PAYMENT_STATUS VARCHAR(10) NOT NULL
    );
    CREATE TABLE PRODUCTS (
    PRODUCT_ID INT IDENTITY(1,1) PRIMARY KEY,
    PRODUCT_NAME VARCHAR(255) NOT NULL,
    SELLING_PRICE DECIMAL(10,2) NOT NULL,
    PRODUCT_DETAIL VARCHAR(255) NOT NULL,
    PRODUCT_IMAGE_URL VARCHAR(255),
    PROUDCT_QUANTITY INT
    );

     

    위에서 나오는 코드는 SSMS(SQL SERVER MANAGEMENT STUDIO)에서 보게 되면 아래와 같이 테이블이 생성된다.

     

    최종 쿼리

    CREATE TABLE ACCOUNT(
    ACCOUNT_ID INT IDENTITY(1,1) PRIMARY KEY,
    ACCOUNT VARCHAR(10) NOT NULL,
    PASSWORD VARCHAR(255) NOT NULL
    );
    CREATE TABLE LOCATION (
    LOCATION_ID INT IDENTITY(1,1) PRIMARY KEY,
    CITY VARCHAR(50) NOT NULL,
    PROVINCE VARCHAR(50) NOT NULL,
    COUNTRY VARCHAR(50) NOT NULL
    );
    CREATE TABLE PAYMENT_STATUS (
    PAYMENT_STATUS_ID INT IDENTITY(1,1) PRIMARY KEY,
    PAYMENT_STATUS VARCHAR(10) NOT NULL
    );
    CREATE TABLE PRODUCTS (
    PRODUCT_ID INT IDENTITY(1,1) PRIMARY KEY,
    PRODUCT_NAME VARCHAR(255) NOT NULL,
    SELLING_PRICE DECIMAL(10,2) NOT NULL,
    PRODUCT_DETAIL VARCHAR(255) NOT NULL,
    PRODUCT_IMAGE_URL VARCHAR(255),
    PROUDCT_QUANTITY INT
    );
    CREATE TABLE CUSTOMER(
    CUSTOMER_ID INT IDENTITY(1,1) PRIMARY KEY,
    FULL_NAME VARCHAR(100) NOT NULL,
    EMAIL VARCHAR(100) NOT NULL,
    PHONE_NUMBER VARCHAR(20) NOT NULL,
    ACCOUNT_ID INT FOREIGN KEY REFERENCES ACCOUNT(ACCOUNT_ID)
    );
    CREATE TABLE CUSTOMER_ADDRESS (
    ADDRESS_ID INT IDENTITY(1,1) PRIMARY KEY,
    UNIT_BUILDING VARCHAR(20) NOT NULL,
    STREET_NUMBER VARCHAR(10) NOT NULL,
    STREET_NAME VARCHAR(100) NOT NULL,
    CUSTOMER_ID INT FOREIGN KEY REFERENCES CUSTOMER(CUSTOMER_ID),
    LOCATION_ID INT FOREIGN KEY REFERENCES LOCATION(LOCATION_ID),
    );
    CREATE TABLE ORDERS (
    ORDER_ID INT IDENTITY(1,1) PRIMARY KEY,
    ORDER_DATE DATETIME2 NOT NULL,
    ORDER_TOTAL DECIMAL(10, 2) NOT NULL,
    CUSTOMER_ID INT FOREIGN KEY REFERENCES CUSTOMER(CUSTOMER_ID)
    );
    CREATE TABLE PAYMENT_METHOD(
    PAYMENT_METHOD_ID INT IDENTITY(1,1) PRIMARY KEY,
    PAYMENT_METHOD VARCHAR(10) NOT NULL,
    );
    CREATE TABLE PAYMENT_STATUS (
    PAYMENT_STATUS_ID INT IDENTITY(1,1) PRIMARY KEY,
    PAYMENT_STATUS VARCHAR(10) NOT NULL
    );
    CREATE TABLE PAYMENT(
    PAYMENT_ID INT IDENTITY(1,1) PRIMARY KEY,
    PAYMENT_DATE DATETIME2 NOT NULL,
    CUSTOMER_ID INT FOREIGN KEY REFERENCES CUSTOMER(CUSTOMER_ID),
    ORDER_ID INT FOREIGN KEY REFERENCES ORDERS(ORDER_ID),
    PAYMENT_METHOD_ID INT FOREIGN KEY REFERENCES PAYMENT_METHOD(PAYMENT_METHOD_ID),
    PAYMENT_STATUS_ID INT FOREIGN KEY REFERENCES PAYMENT_STATUS(PAYMENT_STATUS_ID)
    );
    CREATE TABLE ORDER_STATUS(
    ORDER_STATUS_ID INT IDENTITY(1,1) PRIMARY KEY,
    ORDER_STATUS VARCHAR(10) NOT NULL,
    ORDER_ID INT FOREIGN KEY REFERENCES ORDERS(ORDER_ID)
    );
    CREATE TABLE ORDER_DETAIL(
    ORDER_DETAIL_ID INT IDENTITY(1,1) PRIMARY KEY,
    ORDER_QUANTITY INT NOT NULL,
    SUBTOTAL DECIMAL(10, 2) NOT NULL,
    PRODUCT_ID INT FOREIGN KEY REFERENCES PRODUCTS(PRODUCT_ID),
    ORDER_ID INT FOREIGN KEY REFERENCES ORDERS(ORDER_ID)
    );
    CREATE TABLE REVIEWS (
    REVIEW_ID INT IDENTITY(1,1) PRIMARY KEY,
    STARS INT NOT NULL,
    COMMENT VARCHAR(255) NOT NULL,
    REVIEW_DATE DATETIME2 NOT NULL,
    CUSTOMER_ID INT FOREIGN KEY REFERENCES CUSTOMER(CUSTOMER_ID),
    PRODUCT_ID INT FOREIGN KEY REFERENCES PRODUCTS(PRODUCT_ID)
    );

     

    이제 차차 수정해 나가야 할 것이다... 이를 SSMS에서 보면 

     

    위와 같이 생성되어 있을 것이다. 이제 1차 작업은 끝났다. 

    ASP.NET으로 이제 연결해서 CRUD를 만들어보자 ㅋㅋ

    반응형
    댓글