以下のデータ項目を元にデータベースのテーブルを設計してください
必要であれば、項目を適宜追加してもOKです
仕入れ先
仕入れ先住所
仕入れ先代表者
仕入れ先電話番号
商品名
価格
在庫数
入荷日
入荷数


テーブル設計

  1. 仕入れ先情報 (Suppliers)
    • 仕入れ先に関する基本情報を管理します。
カラム名 データ型 制約 説明
SupplierID INT PRIMARY KEY, AUTO_INCREMENT 仕入れ先のユニークID
SupplierName VARCHAR(100) NOT NULL 仕入れ先名
Address VARCHAR(255) 仕入れ先住所
Representative VARCHAR(100) 仕入れ先代表者
PhoneNumber VARCHAR(15) 仕入れ先電話番号
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP レコード作成日時
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP レコード更新日時

  1. 商品情報 (Products)
    • 商品に関する基本情報を管理します。
カラム名 データ型 制約 説明
ProductID INT PRIMARY KEY, AUTO_INCREMENT 商品のユニークID
ProductName VARCHAR(100) NOT NULL 商品名
Price DECIMAL(10, 2) NOT NULL 商品価格
StockQuantity INT NOT NULL DEFAULT 0 現在の在庫数
SupplierID INT FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID) 仕入れ先ID(外部キー)
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP レコード作成日時
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP レコード更新日時

  1. 入荷情報 (StockEntries)
    • 商品の入荷履歴を管理します。
カラム名 データ型 制約 説明
StockEntryID INT PRIMARY KEY, AUTO_INCREMENT 入荷のユニークID
ProductID INT FOREIGN KEY (ProductID) REFERENCES Products(ProductID) 商品ID(外部キー)
SupplierID INT FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID) 仕入れ先ID(外部キー)
ArrivalDate DATETIME NOT NULL 入荷日
ArrivalQuantity INT NOT NULL 入荷数
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP レコード作成日時
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP レコード更新日時

テーブル間の関係

  • SuppliersProducts:
    一対多(1つの仕入れ先は複数の商品を持つ可能性がある)。
  • ProductsStockEntries:
    一対多(1つの商品は複数の入荷履歴を持つ可能性がある)。
  • SuppliersStockEntries:
    一対多(1つの仕入れ先は複数の入荷履歴を持つ可能性がある)。

追加項目

  • CreatedAtUpdatedAt:
    各テーブルに作成・更新日時を記録するための列を追加しました。
  • StockEntries テーブルのArrivalDate:
    入荷日を管理するために必須。

SQLスクリプト例

以下は、上記テーブルを作成するSQLスクリプトです:

sql
CREATE TABLE Suppliers (
SupplierID INT AUTO_INCREMENT PRIMARY KEY,
SupplierName VARCHAR(100) NOT NULL,
Address VARCHAR(255),
Representative VARCHAR(100),
PhoneNumber VARCHAR(15),
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE Products (
ProductID INT AUTO_INCREMENT PRIMARY KEY,
ProductName VARCHAR(100) NOT NULL,
Price DECIMAL(10, 2) NOT NULL,
StockQuantity INT NOT NULL DEFAULT 0,
SupplierID INT,
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)
);

CREATE TABLE StockEntries (
StockEntryID INT AUTO_INCREMENT PRIMARY KEY,
ProductID INT NOT NULL,
SupplierID INT NOT NULL,
ArrivalDate DATETIME NOT NULL,
ArrivalQuantity INT NOT NULL,
CreatedAt DATETIME DEFAULT CURRENT_TIMESTAMP,
UpdatedAt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (ProductID) REFERENCES Products(ProductID),
FOREIGN KEY (SupplierID) REFERENCES Suppliers(SupplierID)
);


設計の意図

  • データの正規化により冗長性を排除。
  • 拡張性を確保し、仕入れ先、商品、入荷情報を個別に管理。
  • 入荷履歴を追跡可能にすることで、在庫管理や分析を容易に。

必要に応じてカスタマイズや追加の項目を検討してください!

4o