当前位置:   article > 正文

JMU 数科 数据库与数据仓库期末总结(4)实验设计题

JMU 数科 数据库与数据仓库期末总结(4)实验设计题

E-R图

实体-关系图

E-R图的组成要素主要包括:

  1. 实体(Entity):实体代表现实世界中可相互区别的对象或事物,如顾客、订单、产品等。在图中,实体通常用矩形表示,并在矩形内标注实体的名称。

  2. 属性(Attribute):属性描述实体的特征或性质,比如顾客的姓名、年龄、地址等。属性在E-R图中一般位于实体的下方,用椭圆表示,并通过连线与实体相连。

  3. 关系(Relationship):关系表示实体之间的联系,例如一个顾客可以有多个订单。关系用菱形表示,并附有描述关系的文本标签,通过连线连接相关的实体。关系可以有一对一、一对多、多对一或多对多等多种类型。

举个栗子

商店:商店编号,商店名,地址

商品:商品号,单价

职工:职工号,名字,性别

有以下关系:一个商品可以提供给多个商店,一个商店可以销售多个商品,会产生月销售量。职工只能在一个商店工作,商店可以聘用多个员工,聘用时会签合同,谈薪资。

分析:

上述中,实体为商店,商品,职工;

属性有各个实体的属性;

关系有 销售(多对多),聘用(一对多);

E-R图如下:

将E-R图转为表 

还是上面的例子。

首先每个实体都各自为一张表。

1对1,则任选其一将对方的主键作为自己的外键,且将关系里的属性放入自己。

1对多,则选多的那一方,将对方的主键作为自己的外键,且将关系里的属性放入自己。

多对多,则此关系另成一张表,外键为跟这个关系连着的实体的主键。

分析:

如上关系,成以下表:

商店:商店编号,商店名,地址。

销售:销售量,商店号商品号

商品:商品号,单价。

职工:职工号,姓名,性别,商店号,合同,薪资。

(红色为主键,橙色为外键)

SQL写代码

创建数据库:

CREATE DATABASE SDSystem;

创建商店表并添加约束:

  1. CREATE TABLE SD(
  2. sdid INT PRIMARY KEY,
  3. sdname VARCHAR(50) NOT NULL,
  4. dz VARCHAR(50)
  5. );

创建商品表并添加约束:

  1. CREATE TABLE SP(
  2. spid INT PRIMARY KEY,
  3. dj INT
  4. );

创建销售表并添加约束:

  1. CREATE TABLE XS(
  2. xsl INT,
  3. FOREIGN KEY (sdid) REFERENCES SD (sdid),
  4. FOREIGN KEY (spid) REFERENCES SP (spid)
  5. );

创建职工表并添加约束:

  1. CREATE TABLE ZG(
  2. zgid INT PRIMARY KEY,
  3. name VARCHAR(50) NOT NULL,
  4. sex CHAR(1) CHECK(sex in ('M','F') ),
  5. xz INT,
  6. ht VARCHAR(50),
  7. FOREIGN KEY (sdid) REFERENCES SD (sdid)
  8. );

增删改查修改:

向商店表添加记录

INSERT INTO SD (sdid, sdname, dz) VALUES (1, '北京店', '北京市朝阳区');

 向商品表添加记录

INSERT INTO SP (spid, dj) VALUES (101, 100);

向销售表添加记录

INSERT INTO XS (xsl, sdid, spid) VALUES (1, 1, 101);

向职工表添加记录

INSERT INTO ZG (zgid, name, sex, xz, ht, sdid) VALUES (1, '张三', 'M', 5, '销售经理', 1);

从商店表删除记录

DELETE FROM SD WHERE sdid = 1;

修改职工的薪资

UPDATE ZG SET xz = 8 WHERE zgid = 1;

查询所有职工信息

SELECT * FROM ZG;

查询特定商店下的所有商品销售记录

  1. SELECT XS.xsl, SP.dj, SD.sdname
  2. FROM XS
  3. JOIN SP ON XS.spid = SP.spid
  4. JOIN SD ON XS.sdid = SD.sdid
  5. WHERE SD.sdid = 1;

注释一下: 

  1. -- 查询销售表(XS)、商品表(SP)以及商店表(SD)的相关信息
  2. SELECT
  3. -- 选取销售记录的编号(xsl)
  4. XS.xsl,
  5. -- 选取商品的单价(dj)
  6. SP.dj,
  7. -- 选取商店的名称(sdname)
  8. SD.sdname
  9. FROM
  10. -- 从销售表开始查询
  11. XS
  12. -- 首先通过商品ID(spid)将销售表(XS)与商品表(SP)进行连接,
  13. -- 这样就可以获取与每条销售记录相对应的商品信息
  14. JOIN SP ON XS.spid = SP.spid
  15. -- 然后,通过商店ID(sdid)进一步将上述结果与商店表(SD)连接,
  16. -- 使得每条销售记录都能关联到其发生的商店信息
  17. JOIN SD ON XS.sdid = SD.sdid
  18. -- 最后,通过WHERE子句过滤出特定条件的记录,
  19. -- 本例中只选取那些发生在商店ID为1的销售记录
  20. WHERE
  21. SD.sdid = 1;

单表查询示例

查询商店表中所有的商店名称
SELECT sdname FROM SD;

多表查询示例

多表查询通常涉及JOIN操作,用来从两个或多个相关联的表中获取数据。

查询每个商品的名称及其所属商店的名称
  1. SELECT SP.spname, SD.sdname
  2. FROM SP
  3. JOIN SD ON SP.sdid = SD.sdid;
创建一个视图,显示每个商店的销售总额

这个视图将汇总每个商店的销售总额,假设XS表中有一个字段je(金额)记录了每次销售的具体金额。

  1. CREATE VIEW VW_SalesByStore AS
  2. SELECT SD.sdid, SD.sdname, SUM(XS.je) AS TotalSalesAmount
  3. FROM SD
  4. JOIN XS ON SD.sdid = XS.sdid
  5. GROUP BY SD.sdid, SD.sdname;

注释一下:

  1. -- 创建一个名为VW_SalesByStore的视图,用于展示每个商店的销售总额
  2. --AS用来定义别名
  3. CREATE VIEW VW_SalesByStore AS
  4. -- 从商店表(SD)和销售表(XS)中选择数据
  5. SELECT
  6. -- 选择商店的ID(sdid)
  7. SD.sdid,
  8. -- 选择商店的名称(sdname)
  9. SD.sdname,
  10. -- 计算并汇总每个商店的销售总额,这里假设销售表中有字段'je'表示销售金额
  11. SUM(XS.je) AS TotalSalesAmount
  12. FROM
  13. -- 首先从商店表开始
  14. SD
  15. -- 使用INNER JOIN将销售表与商店表连接起来,基于商店ID(sdid)相等的条件
  16. JOIN XS ON SD.sdid = XS.sdid
  17. -- 使用GROUP BY语句按商店ID和商店名称分组
  18. GROUP BY
  19. SD.sdid,
  20. SD.sdname;

视图的应用示例:使用视图查询销售表现最佳的商店

我们可以利用第一个创建的视图VW_SalesByStore来快速查询销售总额最高的商店

  1. SELECT *
  2. FROM VW_SalesByStore
  3. ORDER BY TotalSalesAmount DESC
  4. LIMIT 1;

注释一下:

  1. -- 从先前创建的视图VW_SalesByStore中选择所有列
  2. SELECT *
  3. FROM
  4. -- 视图名称为VW_SalesByStore,它提供了每个商店的销售总额信息
  5. VW_SalesByStore
  6. -- 使用ORDER BY子句对结果集进行排序
  7. ORDER BY
  8. -- 按照TotalSalesAmount列(即每个商店的销售总额)进行降序排序
  9. TotalSalesAmount DESC
  10. -- 使用LIMIT子句限制返回的结果数量(销售额最高的那个商店)
  11. LIMIT 1;

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/772241
推荐阅读
相关标签
  

闽ICP备14008679号