以下のデータ項目を元にデータベースのテーブルを設計してください
必要であれば、項目を適宜追加してもOKです
仕入れ先
仕入れ先住所
仕入れ先代表者
仕入れ先電話番号
商品名
価格
在庫数
入荷日
入荷数
テーブル設計
- 仕入れ先情報 (
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 | レコード更新日時 |
- 商品情報 (
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 | レコード更新日時 |
- 入荷情報 (
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 | レコード更新日時 |
テーブル間の関係
SuppliersとProducts:
一対多(1つの仕入れ先は複数の商品を持つ可能性がある)。ProductsとStockEntries:
一対多(1つの商品は複数の入荷履歴を持つ可能性がある)。SuppliersとStockEntries:
一対多(1つの仕入れ先は複数の入荷履歴を持つ可能性がある)。
追加項目
CreatedAtとUpdatedAt:
各テーブルに作成・更新日時を記録するための列を追加しました。StockEntriesテーブルのArrivalDate:
入荷日を管理するために必須。
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)
);
設計の意図
- データの正規化により冗長性を排除。
- 拡張性を確保し、仕入れ先、商品、入荷情報を個別に管理。
- 入荷履歴を追跡可能にすることで、在庫管理や分析を容易に。
必要に応じてカスタマイズや追加の項目を検討してください!