【目的】
1. ステップとタスク、方法、結果などを含む、標準化されたデータベース設計をマスターします。
2. データベース設計プロセスにおける主要なドキュメントの書き方をマスターします。
3. データベース支援設計ツールを理解する。
【実験内容】
実験レポートは、以下の概要に従って作成してください(ページは各自で貼り付けてください)。
(1) 要件分析、与えられたデータディクショナリとデータフロー図
(2) データ分析、ERモデルの設計
(3) ERモデルをリレーショナルモデルに変換
(4) データベースの説明
(5) テーブル作成SQL文
要件: ER 図には少なくとも3 つのエンティティがあり、各エンティティには5つ以上の属性があり、少なくとも2 つ以上の接続が必要です。
ユーザーが注文をした後、注文内容をシステムに送信して処理されます 最初にシステムが価格情報などを判断し、指定された時間内に支払いが行われた場合、注文はすぐに加盟店に送信されます
データフロー辞書:
名前 | ソース | 所在 | 含まれるデータ構造 | 説明する |
---|---|---|---|---|
注文 | U1 | F1 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | ユーザーが投稿した製品リスト |
注文情報 | F1 | D2 |
JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 注文資格情報 |
注文数 | F2 | D3 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 処理された注文数 |
通常の支払い注文 | F2.1 | D4 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 注文の支払いステータス情報が含まれます |
未払いの注文 | F2.1 | D4 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 注文の支払いステータス情報が含まれます |
オンタイム処理 | D4 | F2.2 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 注文の支払いステータス情報が含まれます |
対処したことさえある | D4 | F2.3 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 注文の支払いステータス情報が含まれます |
注文を送る | D5 | S1 | JSON タイプのデータ形式。キーと値のペアの形式で保存されます。 | 完全な注文情報が含まれています |
データ処理辞書(F1~Fn):
シリアルナンバー | 名前 | ソース | 処理ロジックの一般化 | 出力ストリーム | 説明する |
---|---|---|---|---|---|
F1 | 注文チェック | オーダー+メニューカタログ | 注文の金額と価格がエンティティと一致しているかどうかを判断する | 注文情報 | |
F2 | 統計 | 注文情報 | 注文数を計算する | 注文数 | |
F2.1 | 注文分類 | 注文数 | 注文が支払われたかどうかに従って並べ替えます | 通常の支払い注文と未払いの注文 | |
F2.2 | オンタイム処理 | 通常の順序 | 金額を決定し、お客様にデータを返却します | オンタイム処理 | |
F2.3 | 対処したことさえある | 支払い保留中の注文のカウントダウン | 注文がタイムアウトになった場合は、注文を削除し、取引を終了に戻し、指定された時間内に支払いが行われた場合は、注文を販売者に送信します。 | 対処したことさえある | |
F2.4 | 注文を送る | 保留中の注文 | 注文を顧客に送信する | 注文を送る |
データ格納辞書(D1~Dn):
シリアルナンバー | 名前 | データストリームを挿入する | 出力ストリーム | コンテンツ | 説明する |
---|---|---|---|---|---|
D2 | 適格な注文 | F1 | F2 | 注文 | 対象となる注文を保存するために使用されます |
D3 | 注文数 | F2 | F2.1 | 注文数量 | 注文数量と価格を保存するために使用されます |
D4 | 通常の支払い注文 | F2.1 | F2.2 | 注文詳細 価格 支払額 | 通常の支払いの注文を保存するために使用されます |
D4 | 未払いの注文 | F2.1 | F2.3 | 注文の詳細、価格、数量、支払い時間、注文時間 | 未払いまたは異常に支払われた注文を保存するために使用されます |
D5 | 先送り注文 | F2.1+F2.3 | F2.4 | 注文に関するすべての情報 | すべての注文関連情報を保存するために使用されます |
データ項目辞書:
データの説明の一部を指定し、データ フロー図の各ストレージ ファイルのレコード フィールドを 1 つずつ定義します。
シリアルナンバー | 名前 | タイプ | 長さ | 説明する | 述べる |
---|---|---|---|---|---|
I1 | 注文ID | 整数 | |||
l2 | 注文名 | 可変長文字 | 50 | ||
l3 | 注文金額 | 浮く | 支払金額 | ||
l4 | 注文_支払い時間 | 日付時刻 | 時間 | ||
l5 | 注文時間 | 日付時刻 | |||
l6 | 注文_販売者_ID | 整数 | |||
l7 | 注文詳細_ステータス | 可変長文字 | 50 | 支払い状況、支払いの有無、支払い例外情報など |
ER図
上記の ER 図をリレーショナル スキーマ モデルに変換する
アンダースコアはメインコード、取り消し線は外側のコードです。
注文に対応する物理的な注文(注文番号、注文名、注文金額、支払い時間、注文時間、販売者番号) (連絡先が「所属する」を含む)
加盟店(加盟店番号、加盟店名、加盟店電話番号、加盟店住所、店舗所有者、登録日)は、実体加盟店に相当します。
メニュー(メニュー番号、料理名、カテゴリー、味、重さ、単価)
連絡先「構成」に対応する注文内容(注文番号、メニュー番号、注文状況)
料理のリスト(メニュー番号、営業番号)は連絡先「含む」に対応します
データベースの説明
テーブル名 | コンテンツ |
---|---|
注文 | 注文 |
商人 | 商人 |
メニュー | メニュー |
注文詳細 | 注文詳細 |
メニューリスト | メニューリスト |
1.注文:
フィールド名 | データ型の長さ | フィールド中国語名 | 制約 |
---|---|---|---|
注文ID | 整数 | 注文番号 | 主キー |
注文名 | varchar(50) | 注文名 | Null ではありません |
注文金額 | 浮く | 注文金額 | |
注文_支払い時間 | 日付時刻 | 支払い時期 | |
注文時間 | 日付時刻 | 注文時間 | |
注文_販売者_ID | 整数 | 販売者ID | 外部キー |
2.販売者
フィールド名 | データ型の長さ | フィールド中国語名 | 制約 |
---|---|---|---|
販売者ID | 整数 | 販売者ID | 主キー |
販売者名 | varchar(50) | 店の名前 | Null ではありません |
販売者の電話番号 | varchar(50) | ビジネス用電話機 | Null ではありません |
販売者_ローカル | varchar(50) | 職場の住所 | |
Merchant_Master | varchar(50) | 店主 | |
Merchant_LoginTime | time | 注册日期 | Not Null |
3.Menu
字段名 | 数据类型长度 | 字段中文名 | 约束 |
---|---|---|---|
Menu_Id | int | 菜单编号 | Primary Key |
Menu_Name | varchar(50) | 菜名 | Not Null |
Menu_Type | varchar(50) | 类别 | Not Null |
Menu_Taste | varchar(50) | 味道 | |
Menu_Weight | varchar(50) | 重量 | |
Menu_Price | float | 单价 | Foreign Key |
4.OrderDetail
字段名 | 数据类型长度 | 字段中文名 | 约束 | |
---|---|---|---|---|
OrderDetail_Order | int | 订单编号 | FOREIGN KEY | Primary Key |
OrderDetail_Menu | int | 菜单编号 | FOREIGN KEY | |
OrderDetail_Status | varchar(50) | 订单状态 |
5.MenuList
字段名 | 数据类型长度 | 字段中文名 | 约束 | |
---|---|---|---|---|
MenuList_Menu_ID | int | 菜单编号 | FOREIGN KEY | Primary Key |
MenuList_Merchant_ID | int | 商家编号 | FOREIGN KEY |
创建表sql语句
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu` (
`Menu_Id` int(11) NOT NULL COMMENT '菜单编号',
`Menu_Name` varchar(50) NOT NULL COMMENT '菜名',
`Menu_Type` varchar(50) DEFAULT NULL COMMENT '类别',
`Menu_Taste` varchar(50) DEFAULT NULL COMMENT '味道',
`Menu_Weight` varchar(50) DEFAULT NULL COMMENT '重量',
`Menu_Price` float NOT NULL COMMENT '单价',
PRIMARY KEY (`Menu_Id`),
CONSTRAINT `menu_ibfk_1` FOREIGN KEY (`Menu_Id`) REFERENCES `menulist` (`MenuList_Menu_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `menu` */
/*Table structure for table `menulist` */
DROP TABLE IF EXISTS `menulist`;
CREATE TABLE `menulist` (
`MenuList_Menu_ID` int(11) NOT NULL COMMENT '菜单编号',
`MenuList_Merchant_ID` int(11) NOT NULL COMMENT '商家编号',
PRIMARY KEY (`MenuList_Menu_ID`,`MenuList_Merchant_ID`),
KEY `MenuList_Merchant_ID` (`MenuList_Merchant_ID`),
CONSTRAINT `menulist_ibfk_1` FOREIGN KEY (`MenuList_Merchant_ID`) REFERENCES `merchant` (`Merchant_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `menulist` */
/*Table structure for table `merchant` */
DROP TABLE IF EXISTS `merchant`;
CREATE TABLE `merchant` (
`Merchant_Id` int(11) NOT NULL COMMENT '商家编号',
`Merchant_Name` varchar(50) NOT NULL COMMENT '商家名称',
`Merchant_Tel` varchar(50) NOT NULL COMMENT '商家电话',
`Merchant_Local` varchar(50) NOT NULL COMMENT '商家地址',
`Merchant_Master` varchar(50) DEFAULT NULL COMMENT '店主',
`Merchant_LoginTime` time DEFAULT NULL COMMENT '注册日期',
PRIMARY KEY (`Merchant_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `merchant` */
/*Table structure for table `order` */
DROP TABLE IF EXISTS `order`;
CREATE TABLE `order` (
`Order_Id` int(11) NOT NULL COMMENT '订单编号',
`Order_Name` varchar(50) NOT NULL COMMENT '订单名称',
`Order_Amount` float DEFAULT NULL COMMENT '订单金额',
`Order_PayTime` datetime DEFAULT NULL COMMENT '付款时间',
`Order_Time` datetime DEFAULT NULL COMMENT '下单时间',
`Order_Merchant_ID` int(11) DEFAULT NULL COMMENT '商家编号',
PRIMARY KEY (`Order_Id`),
KEY `Order_Merchant_ID` (`Order_Merchant_ID`),
CONSTRAINT `order_ibfk_1` FOREIGN KEY (`Order_Merchant_ID`) REFERENCES `merchant` (`Merchant_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Data for the table `order` */
/*Table structure for table `orderdetail` */
DROP TABLE IF EXISTS `orderdetail`;
CREATE TABLE `orderdetail` (
`OrderDetail_Order` int(11) NOT NULL COMMENT '订单编号',
`OrderDetail_Menu` int(11) NOT NULL COMMENT '菜单编号',
`OrderDetail_Status` varchar(50) DEFAULT NULL COMMENT '订单状态',
PRIMARY KEY (`OrderDetail_Order`,`OrderDetail_Menu`),
KEY `OrderDetail_Menu` (`OrderDetail_Menu`),
CONSTRAINT `orderdetail_ibfk_1` FOREIGN KEY (`OrderDetail_Order`) REFERENCES `order` (`Order_Id`),
CONSTRAINT `orderdetail_ibfk_2` FOREIGN KEY (`OrderDetail_Menu`) REFERENCES `menu` (`Menu_Id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;