数据库表结构设计参考(第三版)
- 格式:doc
- 大小:447.00 KB
- 文档页数:14
数据库表结构设计数据库表结构设计是数据库设计的重要环节之一。
一个好的数据库表结构设计可以提高数据存储和查询效率,保证数据的准确性和一致性,同时也方便扩展和维护数据库系统。
在进行数据库表结构设计之前,需要明确数据库系统的需求和目标。
对于不同的应用场景和业务需求,数据库表结构设计可能会有所不同。
下面将以一个电商网站为例,介绍如何进行数据库表结构设计。
一、需求分析在电商网站中,我们需要存储商品、用户、订单等相关信息。
首先,我们需要明确需要存储哪些信息,这些信息之间是否存在关联关系。
例如,商品和订单之间存在关联关系,订单和用户之间也存在关联关系。
其次,我们需要确定每个信息对象的属性,即每个表中的字段。
二、实体-关系图设计根据需求分析的结果,我们可以根据实体-关系模型进行数据库表结构设计。
在这个电商网站中,我们可以根据实体-关系图设计出商品表、用户表和订单表三个基本表。
1. 商品表商品表用于存储商品的相关信息,可以包括商品ID、名称、描述、价格、库存等字段。
其中,商品ID作为主键,可以用于唯一标识每个商品。
另外,可以根据实际需求添加其他字段,如商品分类、销量等。
2. 用户表用户表用于存储用户的相关信息,可以包括用户ID、用户名、密码、手机号、邮箱等字段。
其中,用户ID作为主键,可以用于唯一标识每个用户。
另外,可以根据实际需求添加其他字段,如用户等级、积分等。
3. 订单表订单表用于存储订单的相关信息,可以包括订单ID、用户ID、商品ID、数量、金额、下单时间等字段。
其中,订单ID作为主键,可以用于唯一标识每个订单。
用户ID和商品ID可以作为外键,用于关联用户表和商品表。
另外,可以根据实际需求添加其他字段,如订单状态、收货地址等。
三、表关系设计在实体-关系图设计的基础上,我们需要确定表之间的关系。
在这个电商网站中,商品和订单之间存在一对多的关系,即一个订单可以包含多个商品;订单和用户之间也存在一对多的关系,即一个用户可以有多个订单。
数据库表结构设计参考数据库表结构设计参考表名外部单位表(DeptOut)列名数据类型(精度范围)空/非空约束条件外部单位ID 变长字符串(50) N 主键类型变长字符串(50) N单位名称变长字符串(255) N单位简称变长字符串(50)单位全称变长字符串(255)交换类型变长字符串(50) N 交换、市机、直送、邮局单位邮编变长字符串(6)单位标识(英文) 变长字符串(50)排序号整型(4)交换号变长字符串(50)单位领导变长字符串(50)单位电话变长字符串(50)所属城市变长字符串(50)单位地址变长字符串(255)备注变长字符串(255)补充说明该表记录数约3000条左右,一般不做修改。
初始化记录。
表名外部单位子表(DeptOutSub)列名数据类型(精度范围)空/非空约束条件外部子单位ID 变长字符串(50) N父ID 变长字符串(50) N 外键单位名称变长字符串(255) N单位编码变长字符串(50)补充说明该表记录数一般很少表名内部单位表(DeptIn)列名数据类型(精度范围)空/非空约束条件内部单位ID 变长字符串(50) N 主键类型变长字符串(50) N单位名称变长字符串(255) N单位简称变长字符串(50)单位全称变长字符串(255)工作职责排序号整型(4)单位领导变长字符串(50)单位电话(分机)变长字符串(50)备注变长字符串(255)补充说明该表记录数较小(100条以内),一般不做修改。
维护一次后很少修改表名内部单位子表(DeptInSub)列名数据类型(精度范围)空/非空约束条件内部子单位ID 变长字符串(50) N父ID 变长字符串(50) N 外键单位名称变长字符串(255) N单位编码变长字符串(50)单位类型变长字符串(50) 领导、部门排序号Int补充说明该表记录数一般很少表名省、直辖市表(Province)列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 名称变长字符串(50) N 外键投递号变长字符串(255) N补充说明该表记录数固定表名急件电话语音记录表(TelCall)列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 发送部门变长字符串(50) N接收部门变长字符串(50) N拨打电话号码变长字符串(50)拨打内容变长字符串(50)呼叫次数Int呼叫时间Datetime补充说明该表对应功能不完善,最后考虑此表表名摄像头图像记录表(ScreenShot)列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 拍照时间Datetime N取件人所属部门变长字符串(50) N取件人用户名变长字符串(50)取件人卡号变长字符串(50)图片文件BLOB/Image补充说明该表记录数可能较多,并且有大对象表名箱体设置表(BoxSet)列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N主控箱体号Int N分控箱体号Int N箱体名称变长字符串(50)所属部门名称变长字符串(50)控制用户ID 变长字符串(50) 外键补充说明该表记录数比实际分控箱体数略多,小表表名信件表(Letters)列名数据类型(精度范围)空/非空约束条件信件ID 变长字符串(50) N发信/收信变长字符串(50) N信件类型变长字符串(50) N 信/交换/汇款单/挂号信信件年份变长字符串(50)信件条码变长字符串(50) 一维条码信件号变长字符串(50) 信件条码的单元码接收单位变长字符串(255)接收二级单位变长字符串(255)接收人名称变长字符串(50) 外键箱体名变长字符串(50)箱体单位变长字符串(50)发送单位变长字符串(255)密级变长字符串(50)紧急程度变长字符串(50)限制时间Datetime大宗号变长字符串(50)备注变长字符串(255)状态变长字符串(50) 登记/箱中创建部门变长字符串(50) 外键创建人变长字符串(50) 外键创建时间Datetime修改部门变长字符串(50) 外键修改人变长字符串(50) 外键修改时间Datetime信件内容?是否直送?直送列表码?序列号?补充说明该表记录数大,此信件表删除时的Trigger转移到信件历史记录表表名信件历史记录表(LetterHistory)列名数据类型(精度范围)空/非空约束条件信件ID 变长字符串(50) N发信/收信变长字符串(50) N信件类型变长字符串(50) N 信/交换/汇款单/挂号信信件年份变长字符串(50)信件条码变长字符串(50) 一维条码信件号变长字符串(50) 信件条码的单元码接收单位变长字符串(255)接收二级单位变长字符串(255)接收人名称变长字符串(50) 外键箱体名变长字符串(50)箱体单位变长字符串(50)发送单位变长字符串(255)密级变长字符串(50)紧急程度变长字符串(50)限制时间Datetime大宗号变长字符串(50)备注变长字符串(255)状态变长字符串(50) 登记/箱中创建部门变长字符串(50) 外键创建人变长字符串(50) 外键创建时间Datetime修改部门变长字符串(50) 外键修改人变长字符串(50) 外键修改时间Datetime补充说明该表记录数大,由原来的信件表删除时的Trigger转移到此表表名信函流程跟踪表(LetterTrace)列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N信函ID 变长字符串(50) N 外键连接信函表条码变长字符串(100)流程类型变长字符串(50) 登记/创建部门变长字符串(50) 外键创建人变长字符串(50) 外键创建时间Datetime补充说明该表记录数较小,因为模板一般用户自定义的个数不会太多表名大宗发信模板表(LetterBulkTpl)列名数据类型(精度范围)空/非空约束条件模板ID 变长字符串(50) N模板名称变长字符串(50) N选择单位类型变长字符串(50) N 外键单位名称变长字符串(255) N 外键二级单位名称变长字符串(50)单位用户名变长字符串(50)顺序号Int补充说明该表记录数较小,因为模板一般用户自定义的个数不会太多表名发信排序表(LetterOrder)列名数据类型(精度范围)空/非空约束条件ID 变长字符串(50) N 发送方式变长字符串(50) N单位名称变长字符串(50) N 外键信件ID 变长字符串(50) N 外键清单号变长字符串(50)排序单位变长字符串(50)排序用户名变长字符串(50)排序时间Datetime补充说明该表记录数普通,使用扫描枪录入。
数据结构实用教程( 第三版) 课后答案file:///D|/ ------------------ 上架商品---------------------- / 数据结构实用教程( 第三版)课后答案(徐孝凯著)清华大学/第一章绪论.txt第一章绪习题一一、单选题1. 一个数组元数a[i] 与( A ) 的表示等价。
A *(a+i)B a+iC *a+iD &a+i2. 对于两个函数,若函数名相同,但只是( C) 不同则不是重载函数。
A 参数类型B 参数个数C 函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为(B) 参数。
A 指针B 引用C 值4. 下面程序段的复杂度为(C ) 。
for(int i=0;i<m;i++)for(int j=0;j<n;j++)a[i][j]=i*j;A O(m2)B O(n2)C O(m*n)D O(m+n)5. 执行下面程序段时,执行S语句的次数为(D )。
for(int i=1;i<=n;i++)for(int j=1; j<=i;j++)S;A n2B n2/2C n(n+1)D n(n+1)/26. 下面算法的时间复杂度为( B) 。
int f(unsigned int n){if(n==0||n==1) return 1;Else return n*f(n-1);}A O(1)B O(n)C O(n2)D O(n!)二、填空题1. 数据的逻辑结构被除数分为集合结构、线性结构、树型结构和图形结构四种。
2. 数据的存储结构被分为顺序结构、结构、索引结构和散列结构四种。
3. 在线性结构、树型结构和图形结构中,前驱和后继结点之间分别存在着1 对1 、1 对N 和M对N的关系。
4. 一种抽象数据类型包括数据和操作两个部分。
5. 当一个形参类型的长度较大时,应最好说明为引用,以节省参数值的传输时间和存储参数的空间。
6. 当需要用一个形参访问对应的实参时,则该形参应说明为引用。
VisualFoxpro教程第三版课程设计前言Visual FoxPro(简称VFP)是一种好用而且易于开发的数据库管理程序和工具。
使用 Visual FoxPro,您可以轻松地创建数据库、表单、报表、查询和许多其他组件。
本文将针对VisualFoxpro教程第三版进行课程设计。
课程目标•熟练掌握VisualFoxpro的基本操作方法和技能;•能够独立开发一套基于VisualFoxpro的数据库管理系统;•能够解决常见的VisualFoxpro开发问题。
教学内容本课程分为以下几个部分:第一部分:VisualFoxpro基础1.VisualFoxpro的基础知识介绍;2.VisualFoxpro开发环境的配置;3.VisualFoxpro开发工具的使用;4.VisualFoxpro数据库的创建和维护;5.VisualFoxpro表单设计;6.VisualFoxpro报表设计;7.VisualFoxpro查询语言。
第二部分:VisualFoxpro进阶1.数据库的高级管理技巧;2.动态数据处理;3.事务处理;4.数据安全与维护;5.自定义组件开发;6.VisualFoxpro高级编程技巧。
第三部分:实战与案例1.实战案例解析;2.VisualFoxpro应用实战;3.VisualFoxpro数据库开发实战;4.案例分析与设计。
参考书目以下书目为VisualFoxpro教学的参考书目:1.《Visual FoxPro 9.0 开发实例教程》;2.《Visual FoxPro 之家:高效应用开发技巧与案例精讲》;3.《Visual FoxPro 程序架构设计实战指南》;4.《Visual FoxPro 9.0 高级实战》。
教学计划本课程计划为20周,每周3个课时,共60课时。
下面是课程计划内容:时间课程内容第1周VisualFoxpro基础(一)第2周VisualFoxpro基础(二)第3周VisualFoxpro基础(三)第4周VisualFoxpro表单设计(一)第5周VisualFoxpro表单设计(二)第6周VisualFoxpro表单设计(三)第7周VisualFoxpro报表设计(一)第8周VisualFoxpro报表设计(二)第9周VisualFoxpro报表设计(三)第10周VisualFoxpro查询语言(一)第11周VisualFoxpro查询语言(二)第12周VisualFoxpro查询语言(三)第13周数据库的高级管理技巧(一)第14周数据库的高级管理技巧(二)第15周数据库的高级管理技巧(三)第16周动态数据处理、事务处理与数据安全维护(一)第17周动态数据处理、事务处理与数据安全维护(二)第18周自定义组件开发与VisualFoxpro高级编程技巧第19周VisualFoxpro应用实战第20周实战案例分析与设计结语VisualFoxpro是一个非常实用的数据库管理程序和工具,学好它对职业生涯和项目开发来说非常有益益。
数据库表结构设计1. 原始单据与实体之间的关系可以是一对一、一对多、多对多的关系。
在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。
在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。
这里的实体可以理解为基本表。
明确这种对应关系后,对我们设计录入界面大有好处。
〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。
这就是“一张原始单证对应多个实体”的典型例子。
2. 主键与外键一般而言,一个实体不能既无主键又无外键。
在E—R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。
主键与外键的设计,在全局数据库的设计中,占有重要地位。
当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。
因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。
3. 基本表的性质基本表与中间表、临时表不同,因为它具有如下四个特性:(1) 原子性。
基本表中的字段是不可再分解的。
(2) 原始性。
基本表中的记录是原始数据(基础数据)的记录。
(3) 演绎性。
由基本表与代码表中的数据,可以派生出所有的输出数据。
(4) 稳定性。
基本表的结构是相对稳定的,表中的记录是要长期保存的。
理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来。
4. 范式标准基本表及其字段之间的关系, 应尽量满足第三范式。
但是,满足第三范式的数据库设计,往往不是最好的设计。
为了提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的目的。
〖例2〗:有一张存放商品的基本表,如表1所示。
“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。