Mysqlはスーパー経営管理システムを設計し、従業員在庫表(stock)と倉庫表(warehouse)を含む.


インターネット技術学院週間測定機試験問題(三)
 
一、需要分析
チェーンスーパーの経営管理をさらに改善し、管理効率を高め、管理コストを減らすために、商品管理システムを開発し、日常の管理に使用することを決定した.本システムは商品管理、従業員管理、店舗管理、在庫管理などの機能モジュールに分けられる.今回の開発は、主に在庫管理機能に対して、各種商品の在庫量、仕入れ管理などを表示する機能を備えており、具体的なデータベースの設計は以下の通りで、需要に応じてデータベースの設計と相応の機能を完成してください.
二、データ辞書
表1:在庫表(stock)
シーケンス番号
フィールド名
説明
データ型
拘束
コメント
1
Sid
在庫番号
Int
プライマリ・キー、自動成長
 
2
Goodsname
商品名称
Varchar
長さ50、空でない
 
3
Num
在庫数量
Int
 
 
4
Wid
倉庫番号
Int
外部キー、倉庫テーブルを参照するプライマリ・キー
 
5
Title
注意事項
Varchar
長さ20
 
CREATE TABLE stock(
sid int PRIMARY KEY auto_increment,
goodsname VARCHAR(50) NOT NULL,
num int,
wid int,
CONSTRAINT fk_wid FOREIGN KEY(wid) REFERENCES warehouse(wid),
title VARCHAR(20) NOT NULL
);

表2:倉庫表(warehouse)
シーケンス番号
フィールド名
説明
データ型
拘束
コメント
1
wid
倉庫番号
Int
プライマリ・キー、自動成長
 
2
wname
倉庫名
Varchar
長さ20、空でない
 
CREATE TABLE warehouse(
wid int PRIMARY KEY auto_increment,
wname VARCHAR(20) NOT NULL
);

テストデータ
stockテーブル:
Sid
Goodsname
Num
Wid
Title
1
フィリップスSP 100浄化器
20
1
貴重品
2
山東紅富士りんご(一級果)
60
3
ファスト·カット商品
3
康さんのバケツ入りインスタントラーメン(牛肉麺の赤焼き)
100
2
ファスト·カット商品
4
グリスNS-8823周波数変換エアコン
10
1
在庫が少ない
5
タイ山竹特級
150
3
賞味期限が近づく
INSERT INTO `stock` VALUES (1, '   SP100   ', 20, 1, '    ');
INSERT INTO `stock` VALUES (2, '       (   )', 60, 3, '    ');
INSERT INTO `stock` VALUES (3, '        (     )', 100, 2, '    ');
INSERT INTO `stock` VALUES (4, '  NS-8823    ', 10, 1, '    ');
INSERT INTO `stock` VALUES (5, '      ', 150, 3, '     ');

warehouse:
wid
wname
1
華北1号倉庫
2
華北2号倉庫
3
華南2号倉庫
INSERT INTO `warehouse` VALUES (1, '  1   ');
INSERT INTO `warehouse` VALUES (2, '  2   ');
INSERT INTO `warehouse` VALUES (3, '  2   ');

三、機能実現
1、華南2号倉庫に30台のジェイアントBT 22自転車を追加し、注意事項は貴重品である.
INSERT INTO stock VALUES(null,'   BT22   ',30,3,'    ')

2、華北のすべての倉庫の商品名と在庫数量を表示する.
SELECT wname,goodsname,num FROM stock s,warehouse w WHERE s.wid=w.wid AND wname LIKE '  %'

3、各倉庫の在庫商品総量を統計し、倉庫名と在庫商品総量を表示する.
SELECT wname,SUM(num) FROM stock s,warehouse w WHERE s.wid=w.wid GROUP BY wname

4、タイ山竹特級販売100 KGを修正した後、残りの在庫量.
UPDATE stock SET num=(num-100) WHERE goodsname='      '

5、康さんの樽詰めインスタントラーメン(牛肉麺を焼く)の倉庫名を「華北4号倉庫」に変更した.
UPDATE warehouse SET wname='  4   ' WHERE wid=(SELECT wid FROM stock 
WHERE goodsname='        (     )')

データベースの完全なインポートコード:
-- ----------------------------
-- Table structure for stock
-- ----------------------------
DROP TABLE IF EXISTS `stock`;
CREATE TABLE `stock`  (
  `sid` int(11) NOT NULL AUTO_INCREMENT,
  `goodsname` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `num` int(11) NULL DEFAULT NULL,
  `wid` int(11) NULL DEFAULT NULL,
  `title` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`sid`) USING BTREE,
  INDEX `fk_wid`(`wid`) USING BTREE,
  CONSTRAINT `fk_wid` FOREIGN KEY (`wid`) REFERENCES `warehouse` (`wid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of stock
-- ----------------------------
INSERT INTO `stock` VALUES (1, '   SP100   ', 20, 1, '    ');
INSERT INTO `stock` VALUES (2, '       (   )', 60, 3, '    ');
INSERT INTO `stock` VALUES (3, '        (     )', 100, 4, '    ');
INSERT INTO `stock` VALUES (4, '  NS-8823    ', 10, 1, '    ');
INSERT INTO `stock` VALUES (5, '      ', 50, 3, '     ');

-- ----------------------------
-- Table structure for warehouse
-- ----------------------------
DROP TABLE IF EXISTS `warehouse`;
CREATE TABLE `warehouse`  (
  `wid` int(11) NOT NULL AUTO_INCREMENT,
  `wname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  PRIMARY KEY (`wid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 4 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of warehouse
-- ----------------------------
INSERT INTO `warehouse` VALUES (1, '  1   ');
INSERT INTO `warehouse` VALUES (2, '  2   ');
INSERT INTO `warehouse` VALUES (3, '  2   ');
INSERT INTO `warehouse` VALUES (4, '  4   ');