最近、多くのお店でモバイルオーダーシステムが導入されていて、お客さんにとっても便利で、お店にとっても効率的ですよね。そこで、自分も後学としてハンバーガー店向けのモバイルオーダーシステムの開発プロセス1として、まずPostgreSQLを使用したテーブル定義を作成してみました。
最初のテーブルは、店舗情報を格納する「Shopsテーブル」です。このテーブルには、店舗のID、店舗名、住所、営業時間などが格納されます。また、店舗ごとに異なる店舗IDを主キーに設定することで、複数の店舗情報を管理することができます。
CREATE TABLE shops (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL,
phone VARCHAR(20) NOT NULL,
opening_hours VARCHAR(50) NOT NULL,
latitude DOUBLE PRECISION NOT NULL,
longitude DOUBLE PRECISION NOT NULL
);
次に紹介するのは、顧客情報を格納する「Usersテーブル」です。このテーブルには、顧客ID、顧客名、電話番号、メールアドレスなどが格納されます。顧客IDを主キーに設定することで、顧客ごとの注文履歴を管理することができます。
CREATE TABLE users (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
phone VARCHAR(20) NOT NULL
);
最後に紹介するのは、メニュー商品情報、注文情報、注文された商品の詳細を格納する3つのテーブルです。
「Productsテーブル」には、商品ID、商品名、値段、商品説明などが格納されます。顧客が注文する際に、このテーブルの情報を参照し、注文する商品を決定します。
「Ordersテーブル」には、注文ID、顧客ID、注文日時、支払い方法、注文ステータスなどが格納されます。このテーブルを用いて、顧客ごとの注文履歴を管理し、ステータスを更新することができます。
「Order_itemsテーブル」には、注文ID、商品ID、数量、値段などが格納されます。このテーブルを用いて、注文された商品の詳細を管理することができます。
-- products
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(255) NOT NULL,
description TEXT NOT NULL,
price DECIMAL(10, 2) NOT NULL,
image_url VARCHAR(255),
shop_id INTEGER REFERENCES shops(id)
);
-- orders
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id),
shop_id INTEGER REFERENCES shops(id),
status VARCHAR(50) NOT NULL,
created_at TIMESTAMP NOT NULL,
updated_at TIMESTAMP NOT NULL
);
-- order_items
CREATE TABLE order_items (
id SERIAL PRIMARY KEY,
order_id INTEGER REFERENCES orders(id),
product_id INTEGER REFERENCES products(id),
quantity INTEGER NOT NULL,
price DECIMAL(10, 2) NOT NULL
);
今回は、ハンバーガー店向けモバイルオーダーシステムのテーブル定義について学びました。適切なテーブル設計により、顧客に使いやすいシステムを提供し、同時に店舗の業務効率も向上させることができます。(自分はまだまだですが、、、)
次回はrust言語でAPIサーバーを作成する記事を書こうと思います!!