-- 사용자 정보 테이블
CREATE TABLE users (
    user_id SERIAL PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE NOT NULL,
    password_hash CHAR(64) NOT NULL
);

-- 주문 정보 테이블
CREATE TABLE orders (
    order_id SERIAL PRIMARY KEY,
    user_id INT REFERENCES users(user_id),
    order_date TIMESTAMP NOT NULL,
    total_amount DECIMAL(10, 2) NOT NULL,
    shipping_address TEXT NOT NULL,
    payment_method VARCHAR(50) NOT NULL
);

-- 결제 정보 테이블
CREATE TABLE payment_info (
    payment_id SERIAL PRIMARY KEY,
    user_id INT REFERENCES users(user_id),
    card_number VARCHAR(16) NOT NULL,
    card_expiration DATE NOT NULL,
    card_cvv VARCHAR(3) NOT NULL
);

-- 장바구니 정보 테이블
CREATE TABLE cart (
    cart_id SERIAL PRIMARY KEY,
    user_id INT REFERENCES users(user_id)
);

-- 상품 정보 테이블 (상품 정보는 단순화되어 포함되지 않음)
CREATE TABLE products (
    product_id SERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL,
    price DECIMAL(10, 2) NOT NULL
);

-- 리뷰 및 평가 테이블
CREATE TABLE reviews (
    review_id SERIAL PRIMARY KEY,
    user_id INT REFERENCES users(user_id),
    product_id INT REFERENCES products(product_id),
    rating INT NOT NULL,
    review_text TEXT,
    review_date TIMESTAMP NOT NULL
);

-- 사용자 권한 테이블
CREATE TABLE user_permissions (
    permission_id SERIAL PRIMARY KEY,
    user_id INT REFERENCES users(user_id),
    permission VARCHAR(50) NOT NULL
);