附录A SQL入门之样例表

news2024/11/17 20:37:36

编写SQL语句需要良好地理解基本数据库设计。如果不知道什么信息存放在什么表中,表与表之间如何互相关联,行中数据如何分解,那么要编
写高效的SQL是不可能的。
强烈建议读者实际练习本书的每个例子。所有课都共同使用了一组数据文件。为帮助你更好地理解这些例子、学好各课内容,本附录描述了所用的
表、表之间的关系以及如何创建(或获得)它们。

A.1 样例表

本书中所用的表是一个假想玩具经销商使用的订单录入系统的组成部分。这些表用来完成以下几项任务:

  • 管理供应商;
  • 管理产品目录;
  • 管理顾客列表;
  • 录入顾客订单。

完成它们需要5个表(它们作为一个关系数据库设计的组成部分紧密关联)。以下各节给出每个表的描述。
说明:简化的例子
这里使用的表不完整,现实世界中的订单录入系统还会记录这里所没有的大量数据(如工资和记账信息、发货追踪信息等)。不过,这些表确实示范了现实世界中你将遇到的各种数据的组织和关系。读者可以将这些技术用于自己的数据库。

表的描述

下面介绍5个表及每个表内的列名。

  1. Vendors表
    Vendors表存储销售产品的供应商。每个供应商在这个表中有一个记录,供应商ID列(vend_id)用于进行产品与供应商的匹配。
    表A-1 Vendors表的列
说 明
vend_id唯一的供应商ID
vend_name供应商名
vend_address供应商的地址
vend_city供应商所在城市
vend_state供应商所在州
vend_zip供应商地址邮政编码
vend_country供应商所在国家
  • 所有表都应该有主键。这个表应该用vend_id作为其主键。
  1. Products表
    Products表包含产品目录,每行一个产品。每个产品有唯一的ID(prod_id列),并且借助vend_id(供应商的唯一ID)与供应商相关联。
    表A-2 Products表的列
说 明
prod_id唯一的产品ID
vend_id产品供应商ID(关联到Vendors表的vend_id)
prod_name产品名
prod_price产品价格
prod_desc产品描述
  • 所有表都应该有主键。这个表应该用prod_id作为其主键。
  • 为实施引用完整性,应该在vend_id上定义一个外键,关联到Vendors的vend_id列。
  1. Customers表
    Customers表存储所有顾客信息。每个顾客有唯一的ID(cust_id列)。
    表A-3 Customers表的列
说 明
cust_id唯一的顾客ID
cust_name顾客名
cust_address顾客的地址
cust_city顾客所在城市
cust_state顾客所在州
cust_zip顾客地址邮政编码
cust_country顾客所在国家
cust_contact顾客的联系名
cust_email顾客的电子邮件地址
  • 所有表都应该有主键。这个表应该用cust_id作为它的主键。
  1. Orders表
    Orders表存储顾客订单(不是订单细节)。每个订单唯一编号(order_num列)。Orders表按cust_id列(关联到Customers表的顾客唯一ID)关联到相应的顾客。

表A-4 Orders表的列

说 明
order_num唯一的订单号
order_date订单日期
cust_id订单顾客ID(关联到Customers表的cust_id)
  • 所有表都应该有主键。这个表应该用order_num作为其主键。

  • 为实施引用完整性,应该在cust_id上定义一个外键,关联到Customers的cust_id列。

  • OrderItems表
    OrderItems表存储每个订单中的实际物品,每个订单的每个物品一行。对于Orders表的每一行,在OrderItems表中有一行或多行。每个订单物品由
    订单号加订单物品(第一个物品、第二个物品等)唯一标识。订单物品用order_num列(关联到Orders表中订单的唯一ID)与其相应的订单相关
    联。此外,每个订单物品包含该物品的产品ID(把物品关联到Products表)。

表A-5 OrderItems表的列

说 明
order_num订单号(关联到Orders表的order_num)
order_item订单物品号(订单内的顺序)
prod_id产品ID(关联到Products表的prod_id)
quantity物品数量
item_price物品价格
  • 所有表都应该有主键。这个表应该用order_num和order_item作为其主键。
  • 为实施引用完整性,应该在order_num和prod_id上定义外键,关联order_num到Orders的order_num列,关联prod_id到Products的prod_id列。数据库管理员通常使用关系图来说明数据库表的关联方式。要记住,正如上面表描述提到的,外键定义了这些关系。图A-1是本附录描述的五个表的关系图。
    图A-1 样例表关系图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1298871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux CentOS 7.6安装jdk1.8教程

安装教程 第一种方式(通过yum安装):第一步:输入查找命令:第二步:输入安装命令:第三步:安装完成,输入安装命令后,等到出现Complete!代表安装完成第…

springboot+jdbcTemplate+sqlite编程示例——以沪深300成分股数据处理为例

引言 我们在自己做一些小的项目或者小的数据处理分析的时候,很多时候是不需要用到mysql这样的大型数据库,并且也不需要用到maven这样很重的框架的,取而代之可以使用jdbcTemplatesqlite这样的组合。 本文就介绍一下使用springbootjdbcTempla…

画对比折线图【Python】

出这一期想必是我做某个课程作业遇到了。 由于去各个官网下载对比图要钱,我还是不想花钱的!真讨厌!浅浅水一期。 以下是要做的对比图的数据: 代码: from matplotlib import pyplot as plt#设置中文显示plt.rcParams[…

C语言 题目

1.写一个函数算一个数的二进制(补码)表示中有几个1 #include<stdio.h>//统计二进制数中有几个1 //如13:1101 //需要考虑负数情况 如-1 结果应该是32// n 1101 //n-1 1100 //n 1100 //n-1 1011 //n 1000 //n-1 0111 //n 0000 //看n的变化 int funca(int c){int co…

浪潮信息 KeyarchOS 安全可信攻防体验

1. KeyarchOS——云峦操作系统简介 KeyarchOS 即云峦服务器操作系统(简称 KOS)是浪潮信息基于 Linux 内核、龙蜥等开源技术自主研发的一款服务器操作系统&#xff0c;支持 x86、ARM 等主流架构处理器&#xff0c;广泛兼容传统 CentOS 生态产品和创新技术产品&#xff0c;可为用…

【Delphi】一个函数实现ios,android震动功能 Vibrate(包括3D Touch 中 Peek 震动等)

一、前言 我们在开发移动端APP的时候&#xff0c;有时可能需要APP能够提供震动功能&#xff0c;以便提醒操作者&#xff0c;特别是ios提供的3D Touch触感功能&#xff0c;操作者操作时会有触感震动&#xff0c;给操作者的感觉很友好。那么&#xff0c;在Delphi的移动端FMX开发中…

Java群聊程序

先运行服务端&#xff0c;如果不先连接服务端&#xff0c;就不监听&#xff0c;那客户端不知道连接谁 服务端 import java.io.*; import java.net.*; import java.util.ArrayList; public class QLFWD{public static ServerSocket server_socket;public static ArrayList<S…

Nacos 基础篇:Nacos简介、基本概念、基本架构、Standalone单机搭建部署

文章目录 什么是Nacos基本架构逻辑架构及其组件介绍领域模型数据模型服务领域模型配置领域模型 下载目录结构配置启动 什么是Nacos Nacos&#xff1a;(Dynamic) Naming and Configuration Service&#xff0c;动态的服务发现和配置的服务&#xff0c;是一个更易于构建云原生应…

二维码智慧门牌管理系统升级:社区关怀

文章目录 前言一、系统的工作原理二、系统功能与关怀服务三、社区关怀的意义 前言 随着科技的发展&#xff0c;生活日益智能化&#xff0c;门牌系统也随之发展。近日&#xff0c;一种新型的二维码智慧门牌管理系统正在崛起&#xff0c;以创新的方式将社区关怀融入到每一个家庭…

浮点数在计算机中如何存储

举例&#xff1a; 结果&#xff1a; 文字描述&#xff1a; 先将浮点数转化为二进制的表示形式&#xff0c; 接着将其二进制的形式按照科学计数法来表示&#xff0c; 符号位的确定&#xff1a;正数0&#xff0c; 负数1 指数的确定&#xff1a;将其二进制表示成为科学计数法…

通过Nginx的log日志对站点进行数据统计

文章目录 前言统计独立ip访问数量查看访问最频繁的前100个IP查看访问100次以上的IP查询某个IP的详细访问情况,按访问频率排序统计所有的PV数统计当天的PV数查看访问最频的页面(TOP100)每分钟请求量统计每小时请求量统计可视化报表工具 前言 请自行确认nginx的日志是否开始且知…

Windows使用Redis

Windows使用Redis 前言一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09;二、在wsl中下载并安装Redis一主二仆哨兵模式 前言 主要是记录一下&#xff0c;免得自己忘了。 一、安装wsl2&#xff08;Windows Subsystem for Linux&#xff09; Redis官网中说&…

听GPT 讲Rust源代码--src/tools(11)

File: rust/src/tools/rust-analyzer/crates/hir/src/lib.rs 在Rust源代码中&#xff0c;rust/src/tools/rust-analyzer/crates/hir/src/lib.rs文件的作用是定义了Rust语言的高级抽象层次&#xff08;Higher-level IR&#xff0c;HIR&#xff09;。它包含了Rust语言的各种结构和…

联合体和枚举

联合体&#xff1a; 联合体是什么&#xff1f; 联合体也是一种自定义类型&#xff0c;这种类型定义的变量也包含一系列类型&#xff0c;特征是这些类型公用一块内存空间(所以叫联合体也叫公用体)可以理解为结构体公用一块内存。 //联合-联合体-共用体 //联合也是一种特殊的自…

基于SSM的高校共享单车管理系统的设计与实现论文

摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所以对于信息的宣传和管理就很关键。因此高校单车租赁信…

前端开发学习 (五) 生命周期函数、Ajax请求

关于vue实例的声明周期&#xff0c;从Vue实例创建、运行、到销毁期间&#xff0c;总是伴随着各种各样的事件&#xff0c;这些事件&#xff0c;统称为生命周期 &#xff08;https://cn.vuejs.org/v2/guide/instance.html#实例生命周期 &#xff09; 而声明周期勾子就是生命周期…

我的创作纪念日(2周年)

机缘 在进入大学之前&#xff0c;完全没有听说过CSDN&#xff0c;第一次使用CSDN应该是搜C语言如何学&#xff0c;或者是和C语言相关的其他内容 因为我本人是学计算机专业的&#xff0c;大一刚开学因为疫情延迟了开学时间&#xff0c;老师线上教课&#xff0c;但是我之前是完…

[架构之路-260]:目标系统 - 设计方法 - 软件工程 - 软件设计 - 架构设计 - 基于Web的软件架构(REST与RESTful)

目录 一、基于Web的软件架构 1.1 什么是基于Web的软件架构 1.2 基于Web的软件架构的发展历史 1.3 基于Web的软件架构的优点 1.4 基于Web的软件架构的示例 1.5 基于Web的软件架构的协议标准 1.6 基于Web的软件架构 二、REST与RESTful 2.1 概述 2.2 RESTful协议 2.3 R…

自治调优!人大金仓解放DBA双手

数据库系统的性能是确保整个应用系统高效运转的关键因素&#xff0c;因此数据库性能调优工作至关重要。KingbaseES通过将人工调优过程内化为数据库内核&#xff0c;成功实现了自治调优。这种创新的调优方案为DBA提供了更高效且准确的性能调优途径&#xff0c;同时也显著降低了数…

【头歌系统数据库实验】实验5 SQL的多表查询-1

目录 第1关&#xff1a;等值连接&#xff1a;求S表和J表城市相同的等值连接(列顺序还是按照S、J表) 第2关&#xff1a;查询供应情况&#xff0c;并显示供应商、零件和工程三者的名称 第3关&#xff1a;找出上海厂商供应的所有零件号码 第4关&#xff1a;找出使用上海产的零…