MYSQL中什么是规范化_如何规范化SQL数据库
小编典典
这是在脚本中标准化表的示例。我建议你做这样的事情
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数据库相关推荐
- mysql中Bname表示什么_《MY SQL实用教程》期末考试题
一.单选 1.在SQL语言中的SELECT语句中,用于实现选择运算的句子是(B) A.FOR B.WHERE C.WHILE D.IF 2.设置语句结束的命令是(C) A.set B.end C.de ...
- mysql中图书编号类型_练习1答案-数据库设计
练习1 数据库设计 学号:,姓名,班级 [实训目的] 1.掌握数据库的基本概念 2.了解数据库设计的基本步骤 3.掌握利用E-R图描述数据库的概念模型的方法 [实训内容] 1.某大学要开发一个选课管理 ...
- mysql中的方差函数_请问关于SQL中的方差函数VAR()相关问题?
聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER 中具体有哪些聚合函数呢?我们来一一看一下: 1. AVG 返回指定组中的平 ...
- Mysql中循环拼接参数_利用循环向数据库中插入数据,参数重复的问题
又看了些资料,发现对于说参数存在的问题可以把SqlCommand的创建放到For循环里,可以只连一次数据库,但是效率还是没提高.效率的问题不在于对数据库的开关,而是还是逐条地插入数据.而且数据库连接有 ...
- mysql按某个条件升序_问题描述大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同):SELECT * FROM `MyTable` WHERE...
问题描述 大家都知道, MySQL 中按某字段升序排列的 SQL 为 (以 id 为例,下同): SELECT * FROM `MyTable` WHERE `id` IN (1, 7, 3, 5) ...
- VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件
VB:使用Visual Studio 2010中的VB语言工具箱DataGridView调用SQL数据库Database的表格文件 目录 问题探究 图文教程 问题探究 使用Visual Studio ...
- mysql中下列关于创建_在 MySQL 中,下列关于创建数据库表的描述正确的是( )。_学小易找答案...
[单选题]在表中设置外键实现的是哪一类数据完整性( ) [单选题]以下为概念模型的是() [论述题]• 参照 < 中国图书馆分类法 > ,谈一下你对自己所学专业在整个科学知识领域中所在的位 ...
- mysql中的leading用法_登录 - SegmentFault 思否
前面我们主要分享了MySQL中的常见知识与使用.这里我们主要分享一下MySQL中的高阶使用,主要包括:函数.存储过程和存储引擎. 对于MySQL中的基础知识,可以参见 1 函数 函数可以返回任意类型的 ...
- mysql中jxgl什么意思_使用Management Studio按下表信息在JXGL数据库中创建名为CJ的成绩表。...
[单选题]Java源文件和编译后的文件扩展名分别为() [简答题]1.请大家做完实验后将数据填写到表格相应空格中,教师验收,当堂签字确认. 2.课下按照指导书上关于实验报告的书写部分完成数据处理.总结 ...
- mysql中如何设置时区_如何设置MySQL的时区?
我认为这可能是有用的: 有三个位置可以在MySQL中设置时区: 在[mysqld]部分中的"my.cnf"文件中default-time-zone='+00:00' @global ...
最新文章
- virtualbox centos5 分辨率_一种高分辨率、高帧率的LCoS显示芯片设计方法
- 玩转Docker Ceph集群及对象存储
- 小学生python-小学生学python(三)
- 这个图形的体积有限,但表面积却是无穷大
- kube-scheduler 磁盘调度源码分析
- qt获取QString中第一个汉字
- dokcer mysql修改编码_默认支持utf8编码的mysql docker镜像
- 区间数值计数(洛谷P1980题题解,Java语言描述)
- Flutter Row和 Column 布局、线性布局概述
- 天地图怎么看历史图像_解密:看猪八戒是怎么由一头猪变成天蓬元帅的
- 计算机应用及发展,计算机应用及发展趋势.docx
- OKHttp源码解析(1)----整体流程
- 帆软 在线Cron表达式
- 办理美国商务和旅游签证(B1 B2)和面签的奥秘
- oracle 查看进程
- 5G网络架构及其对承载网的影响
- flutter 斗音页面
- 用计算机撩人套路,撩人套路-撩人套路情话一问一答 - 个性说说吧
- 海思Hi3519A 基础入门教程
- 03-OSPF OE2和OE1外部路由详解
热门文章
- vue底部跳转_详解Vue底部导航栏组件
- linux hlist,linux内核V2.6.11学习笔记(2)--list和hlist
- 认证android retrofit,Retrofit之项目介绍
- android的时间代码怎么写,Android 日期和时间的使用实例详解
- linux sar 历史负载,查看负载、vmstat、top、sar以及nload命令
- 常见窗函数的C语言实现及其形状,适用于单片机、DSP作FFT运算
- Python的threading多线程
- SpringBoot(六):SpringBoot整合Redis
- 为Mac安装homebrew
- 求数组中数对的最大值