小编典典

这是在脚本中标准化表的示例。我建议你做这样的事情

e.g Table: tbl_tmpData

Date, ProductName, ProductCode, ProductType, MarketDescription, Units, Value

2010-01-01, 'Arnotts Biscuits', '01', 'Biscuit', 'Store 1', 20, 20.00

2010-01-02, 'Arnotts Biscuits', '01', 'Biscuit', 'Store 2', 40, 40.00

2010-01-03, 'Arnotts Biscuits', '01', 'Biscuit', 'Store 3', 40, 40.00

2010-01-01, 'Cola', '02', 'Drink', 'Store 1', 40, 80.00

2010-01-02, 'Cola', '02', 'Drink', 'Store 2', 20, 40.00

2010-01-03, 'Cola', '02', 'Drink', 'Store 2', 60, 120.00

2010-01-01, 'Simiri Gum', '03', 'Gum', 'Store 1', 40, 80.00

2010-01-02, 'Simiri Gum', '03', 'Gum', 'Store 2', 20, 40.00

2010-01-03, 'Simiri Gum', '03', 'Gum', 'Store 3', 60, 120.00

您将首先创建日期表:

CREATE TABLE tbl_Date

(

DateID int PRIMARY KEY IDENTITY(1,1)

,DateValue datetime

)

INSERT INTO tbl_Date (DateValue)

SELECT DISTINCT Date

FROM tbl_Data

WHERE Date NOT IN (SELECT DISTINCT DateValue FROM tbl_Date)

然后,您将创建您的市场表

CREATE TABLE tbl_Market

(

MarketID int PRIMARY KEY IDENTITY(1,1)

,MarketName varchar(200)

)

INSERT INTO tbl_Market (MarketName)

SELECT DISTINCT MarketDescription

FROM tbl_tmpData

WHERE MarketName NOT IN (SELECT DISTINCT MarketDescription FROM tbl_Market)

然后,您将创建您的ProductType表

CREATE TABLE tbl_ProductType

(

ProductTypeID int PRIMARY KEY IDENTITY(1,1)

,ProductType varchar(200)

)

INSERT INTO tbl_ProductType (ProductType)

SELECT DISTINCT ProductType

FROM tbl_tmpData

WHERE ProductType NOT IN (SELECT DISTINCT ProductType FROM tbl_ProductType)

然后,您将创建您的产品表

CREATE TABLE tbl_Product

(

ProductID int PRIMARY KEY IDENTITY(1,1)

, ProductCode varchar(100)

, ProductDescription varchar(300)

,ProductType int

)

INSERT INTO tbl_Product (ProductCode, ProductDescription, ProductType)

SELECT DISTINCT tmp.ProductCode,tmp.ProductName, pt.ProductType

FROM tbl_tmpData tmp

INNER JOIN tbl_ProductType pt ON tmp.ProductType = pt.ProductType

WHERE ProductCode NOT IN (SELECT DISTINCT ProductCode FROM tbl_Product)

然后,您将创建数据表

CREATE TABLE tbl_Data

(

DataID int PRIMARY KEY IDENTITY(1,1)

, DateID varchar(100)

, ProductID varchar(100)

, MarketID varchar(300)

,Units decimal(10,5)

, value decimal(10,5)

)

INSERT INTO tbl_Data (ProductID, MarketID, Units, Value)

SELECT t.DateID

, p.ProductID

, m.MarketID

, SUM(tmp.Units)

, SUM(tmp.VALUE)

FROM tbl_tmpData tmp

INNER JOIN tbl_Date t ON tmp.Date = t.DateValue

INNER JOIN tbl_Product p ON tmp.ProductCode = p.ProductCode

INNER JOIN tbl_Market m ON tmp.MarketDescription = m.MarketName

GROUP BY t.DateID, p.ProductID, m.MarketID

ORDER BY t.DateID, p.ProductID, m.MarketID

2020-05-17

MYSQL中什么是规范化_如何规范化SQL数据库相关推荐

  1. mysql中Bname表示什么_《MY SQL实用教程》期末考试题

    一.单选 1.在SQL语言中的SELECT语句中,用于实现选择运算的句子是(B) A.FOR B.WHERE C.WHILE D.IF 2.设置语句结束的命令是(C) A.set B.end C.de ...

  2. mysql中图书编号类型_练习1答案-数据库设计

    练习1 数据库设计 学号:,姓名,班级 [实训目的] 1.掌握数据库的基本概念 2.了解数据库设计的基本步骤 3.掌握利用E-R图描述数据库的概念模型的方法 [实训内容] 1.某大学要开发一个选课管理 ...

  3. mysql中的方差函数_请问关于SQL中的方差函数VAR()相关问题?

    聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER 中具体有哪些聚合函数呢?我们来一一看一下: 1. AVG 返回指定组中的平 ...

  4. Mysql中循环拼接参数_利用循环向数据库中插入数据,参数重复的问题

    又看了些资料,发现对于说参数存在的问题可以把SqlCommand的创建放到For循环里,可以只连一次数据库,但是效率还是没提高.效率的问题不在于对数据库的开关,而是还是逐条地插入数据.而且数据库连接有 ...

  5. mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...

    问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...

  6. VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件

    VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件 目录 问题探究 图文教程 问题探究 使用Visual Studio ...

  7. mysql中下列关于创建_在 MySQL 中,下列关于创建数据库表的描述正确的是( )。_学小易找答案...

    [单选题]在表中设置外键实现的是哪一类数据完整性( ) [单选题]以下为概念模型的是() [论述题]• 参照 < 中国图书馆分类法 > ,谈一下你对自己所学专业在整个科学知识领域中所在的位 ...

  8. mysql中的leading用法_登录 - SegmentFault 思否

    前面我们主要分享了MySQL中的常见知识与使用.这里我们主要分享一下MySQL中的高阶使用,主要包括:函数.存储过程和存储引擎. 对于MySQL中的基础知识,可以参见 1 函数 函数可以返回任意类型的 ...

  9. mysql中jxgl什么意思_使用Management Studio按下表信息在JXGL数据库中创建名为CJ的成绩表。...

    [单选题]Java源文件和编译后的文件扩展名分别为() [简答题]1.请大家做完实验后将数据填写到表格相应空格中,教师验收,当堂签字确认. 2.课下按照指导书上关于实验报告的书写部分完成数据处理.总结 ...

  10. mysql中如何设置时区_如何设置MySQL的时区?

    我认为这可能是有用的: 有三个位置可以在MySQL中设置时区: 在[mysqld]部分中的"my.cnf"文件中default-time-zone='+00:00' @global ...

最新文章

  1. virtualbox centos5 分辨率_一种高分辨率、高帧率的LCoS显示芯片设计方法
  2. 玩转Docker Ceph集群及对象存储
  3. 小学生python-小学生学python(三)
  4. 这个图形的体积有限,但表面积却是无穷大
  5. kube-scheduler 磁盘调度源码分析
  6. qt获取QString中第一个汉字
  7. dokcer mysql修改编码_默认支持utf8编码的mysql docker镜像
  8. 区间数值计数(洛谷P1980题题解,Java语言描述)
  9. Flutter Row和 Column 布局、线性布局概述
  10. 天地图怎么看历史图像_解密:看猪八戒是怎么由一头猪变成天蓬元帅的
  11. 计算机应用及发展,计算机应用及发展趋势.docx
  12. OKHttp源码解析(1)----整体流程
  13. 帆软 在线Cron表达式
  14. 办理美国商务和旅游签证(B1 B2)和面签的奥秘
  15. oracle 查看进程
  16. 5G网络架构及其对承载网的影响
  17. flutter 斗音页面
  18. 用计算机撩人套路,撩人套路-撩人套路情话一问一答 - 个性说说吧
  19. 海思Hi3519A 基础入门教程
  20. 03-OSPF OE2和OE1外部路由详解

热门文章

  1. vue底部跳转_详解Vue底部导航栏组件
  2. linux hlist,linux内核V2.6.11学习笔记(2)--list和hlist
  3. 认证android retrofit,Retrofit之项目介绍
  4. android的时间代码怎么写,Android 日期和时间的使用实例详解
  5. linux sar 历史负载,查看负载、vmstat、top、sar以及nload命令
  6. 常见窗函数的C语言实现及其形状,适用于单片机、DSP作FFT运算
  7. Python的threading多线程
  8. SpringBoot(六):SpringBoot整合Redis
  9. 为Mac安装homebrew
  10. 求数组中数对的最大值