Access编程交流网
  • 设为首页|收藏本站|繁体中文|手机版
  •     
  • Access培训-Access开发平台-Access行业开发

  • 首页
  • 资讯
  • 技巧
  • 源码
  • 行业
  • 资源
  • 活动
  • 关于

技巧

ACCESS数据库

启动/设置/选项/背景

修复/压缩

安全/加密/解密

快捷键

版本升级/其它等

数据表

命名方式/设计规范

表设计

查询

Sql语言基础

选择查询

更新查询

删除查询

追加查询

生成表查询

交叉表查询

SQL特定查询

查询参数

查询综合应用

界面/窗体/控件

标签

文本框

命令按钮

组合框/列表框

选项组/复选框/选项按钮

选项卡

子窗体

窗体本身/综合应用

其它

报表打印

报表设计

高级报表

模块/函数/VBA/API/系统

VBA基础

内置函数

调试/跟踪/Debug

模块/类模块

API/COM/系统相关

字符数字日期

网络通信游戏

加密解密安全

文件处理

经典算法

宏/菜单/工具栏/功能区

宏/脚本

菜单/工具栏

功能区/Ribbon

图表/图形/图像/多媒体

图表

图形/图像

音频

视频/动画

DAO/链接表/ADO/ADP

DAO/链接表/ODBC

ADO/RDO

ADP

ActiveX/第三方控件/插件

Treeview树控件

ListView列表控件

Toolbar工具栏控件

微软其它控件

Dbi-Tech

CodeJock

Grid++Report

FastReport

ComponentOne

加载项/插件/Addin

OFFICE集成/导入导出/交互

Excel导入导出/交互

Word导入导出/交互

PPT交互

Outlook控制/邮件

Text文本文件/INI/CSV

PDF/SWF/XML格式

CAD格式

Sharepoint/其它Office

SqlServer/其它数据库

表

视图

存储过程/触发器

函数

用户/权限/安全

调试/维护

SqlServer其它/综合

发布/打包/文档/帮助

开发版/运行时

打包/发布/部署

开发文档/帮助制作

Access完整行业系统

采购管理系统

销售管理系统

仓库管理系统

人力资源管理HRM

CRM管理系统

MRP/ERP管理系统

BRP/流程优化

其它管理系统

心得/经验/绝招
其它/杂项
Excel技巧

Excel应用与操作

Excel开发编程

Word技巧

Word应用与操作

Word开发编程

Outlook技巧

Outlook应用与操作

Outlook开发编程

热门文章

  • 如何在数?表之『格式』属性..
  • Access VBA 开发..
  • 在安全补丁Security..
  • 如何用代码链接带有密码的数..
  • 通过ASP与ACCESS数..
  • Access应用程序应注意..

最新文章

  • Access工程名称与文件..
  • Access 实现前后台数..
  • 用SSMA升迁工具移植Ac..
  • 导出Access图片控件的..
  • 同一字段中简单代替 Or ..
  • Access提示“操作或事..

联系方式

Access交流网(免费Access交流)

QQ:18449932 

网  址:www.access-cn.com

当前位置:首页 > 技巧 > ACCESS数据库
ACCESS数据库

数据库标准化基础

作    者:Microsoft  
发布日期:2002年11月30日
摘    要:本文向初学者讲述数据库标准化的术语。在讨论关系型数据库的设计时,对该术语有一个基本了解是很有用的。

正    文:

MS 在线讲座: http://support.microsoft.com/default.aspx?scid=%2fservicedesks%2fwebcasts%2fwc060600%2fwc060600.asp%3ffr%3d1

标准化说明


    标准化是在数据库中组织数据的进程。其中包括,根据设计规则创建表并在这些表间建立关系;通过取消冗余度与不一致相关性,该设计规则可以同时保护数据并增加数据的灵活性。 

    冗余数据会浪费磁盘空间并带来维护问题。如果必须更改同时放在几个位置的一个数据,则必须按同一种方式更改所有位置的数据。如果该数据只保存在 Customers 表中而非数据库中的其它位置,更改客户地址要容易得多。 

    什么是“不一致相关性”?虽然在 Customers 表中查找部分客户的地址对于用户来说很直观,但是对于在此查找访问该客户的雇员的薪水来说可能没有意义。雇员的薪水与雇员本身有关或者说取决于雇员本身,因此应在“雇员”表中进行查看。由于查找数据的路径有可能丢失或破坏掉,不一致相关性会使得数据难于访问。 

    有一些规则用于数据库标准化。每个规则称为“常规表单(范式)”。如果遵循了第一条规则,则数据库是“第一常规表单(范式)”。如果遵循了前三条规则,则数据库是“第三常规表单(范式)”。虽然标准化可能有其它等级,但对于大多数应用程序而言,通常认为第三常规表单(范式)是必须的最高等级。 

    由于有许多常规规则与规范,实际情况并不总是要求完全符合。一般说来,标准化需要其它表,而且一些客户觉得这比较麻烦。如果您决定不遵循标准化前三个规则之一,请确保应用程序会预见可能发生的任何问题,如冗余数据与不一致相关性问题。 

    下面的说明中包括一些示例。 


第一常规表单(第一范式) 

    1.去掉各个表中的重复组。 
    2.为每组关联数据创建独立的数据。 
    3.使用主关键字确定每组关联数据。
 
    请勿在一个表中使用多个字段保存相似数据。例如,要跟踪可能来自两个可能资源的清单项,清单记录可能包含 Vendor Code 1 和 Vendor Code 2 的字段。 

    添加第三方供应商时会出现什么情况?添加字段并不能解决问题;添加字段需要修改程序和表,而且无法很好地适应供应商个数不断变化的情况。反而,将所有供应商信息放在称为 Vendors 的独立表中,然后使用项目编号关键字将清单链接到供应商,或使用供应商代码关键字将供应商链接到清单。 

第二常规表单(第二范式) 

    1.为应用到多个记录的多组数值创建独立表。 
    2.使用外部关键字将这些表关联起来。 

    记录不应取决于表主关键字(如有必要,可以是组合关键字)之外的任何关键字。例如,在计帐系统中考虑使用客户地址。除 Customers 表需要该地址外,Orders、Shipping、Invoices、Accounts Receivable 与 Collections 表也需要该地址。在上述每个表中并不是将客户地址作为独立条目进行保存的,而是将其保存在一个位置,即保存在 Customers 表或独立的 Addresses 表中。 

第三常规表单(第三范式)

    去掉了不取决于关键字的字段。 

    在记录中而不是记录的关键字部分的数值并不包含在表中。一般来说,在任何时候,字段组的内容可能适用于表中的多个记录,可以考虑在一个独立表中存放这些字段。 

    例如,在 Employee Recruitment 表中,可能包括应聘者的大学名称和地址。但是,您需要一个完整的大学列表以便于进行分组邮寄。如果大学信息保存在 Candidates 表中,没有当前的应聘者无论如何无法列出这些大学。创建独立的 Universities 表并使用大学代码关键字将其链接至 Candidates 表。 

    例外情况:遵循第三常规表单(这在理论上是必要的)不一定总是实际有用的。如果您有一个 Customers 表且要去掉所有可能的字段内相关性,则必须对城市、邮政编码、销售代表、客户类别以及任何其它可能在多个字段中重复的因素创建独立的表。理论上讲,标准化是值得投资的。但是,许多小的表可能会使性能降低或超出打开文件与内存的能力。 

    仅将第三常规表单应用于不断变化的数据的方法可能更加灵活。如果还保留了一些相关的字段,则需要将应用程序设计为当对一个数据进行更改时,需要用户确认所有的相关字段。 

其它标准化表单(范式)

    也有第四常规表单(第四范式)(也称为 Boyce Codd 常规表单(范式)(BCNF))与第五常规表单(第五范式)存在,但是在实际设计中很少考虑。忽视这些规则可能使得数据库的设计不太完美,但这不应影响功能。 

将示例表标准化

    这些步骤说明将一个虚构的学生表进行标准化的步骤。 

    非标准化的表: 

1022  Jones  412  101-07  143-01  159-02  
4123  Smith  216  201-01  211-02  214-01

第一常规表单(第一范式):无重复组 

    表应只有两维。由于一个学生有好几个类别,因此这些类别应在一个独立的表中列出。在上述记录中,Class1、Class2 和 Class3 字段是遇到设计困难时的一些提示。 

    电子表格通常使用第三维,但是表不应该使用第三维。解决该问题的另一种方法是使用一对多关系,一方和多方不应放在同一表中。反之,通过去掉重复组 (Class#) 在第一常规表单中创建另一个表,如下所示: 

1022  Jones  412  101-07  
1022  Jones  412  143-01  
1022  Jones  412  159-02  
4123  Smith  216  201-01  
4123  Smith  216  211-02  
4123  Smith  216  214-01

第二常规表单(第二范式):去掉冗余数据 

    请注意在上述表中每个 Student# 值的多个 Class# 值。Class# 实际上不取决于 Student#(主关键字),因此该关系不在第二常规表单中。 

    以下两个表说明第二常规表单(第二范式): 

Students: 

1022  Jones  412  
4123  Smith  216

Registration: 

1022  101-07  
1022  143-01  
1022  159-02  
4123  201-01  
4123  211-02  
4123  214-01

第三常规表单(第三范式):去掉不取决于关键字的数据 

    在最后一个示例中,Adv-Room(顾问办公室号码)实际上取决于 Advisor 属性。该解决方案是将该属性从 Students 表中转移到 Faculty 表中,如下所示: 

Students: 

1022  Jones  
4123  Smith

Faculty: 

Jones  412  42  
Smith  216  42





来 源 于:Microsoft

发布人:Microsof…-AccessFaq  
分享到:
点击次数:  更新时间:2004-11-23 21:47:07  【打印此页】  【关闭】
上一条:数据库规范化技巧  下一条:自定义自四舍五入函数



相关文章

  • • Access工程名称与文件名称的区别
  • • Access 实现前后台数据库压缩
  • • 用SSMA升迁工具移植Acceses到SQL Server的几点问题
  • • 导出Access图片控件的图片到文件
  • • 同一字段中简单代替 Or 和 in 的多条件查询
  • • Access提示“操作或事件已被禁用模式阻止“解决办法
  • • 如何判断Access数据库是运行在正常完整版本(Full Access)还是运行时版本(Access Runtime)
  • • Access VBA获取U盘(优盘)机器码系列号及U盘开发的各种代码

热门文章

  • [2017-04-13] Access VBA获取U盘(优盘)机器码系列号及U盘开发的各种代码access数据库
  • [2009-04-22] 局域网:ODBC连接SQL SEVER详解access数据库
  • [2006-10-09] 攻防实战:注水漏洞的利用和防范access数据库
  • [2009-09-18] Access2007循序渐进教程课件与源文件(PPT格式)[1]access数据库
  • [2009-07-24] Access2003设置压缩和修复数据库的方法access数据库
  • [2004-11-05] 谁可以告诉我怎样将ACCESS中的窗体保存为网页形式access数据库

热门产品

公司动态|在线留言|在线反馈|友情链接|会员中心|站内搜索|网站地图

中山市天鸣科技发展有限公司 版权所有 1999-2023 粤ICP备10043721号

QQ:18449932

Access应用 Access培训 Access开发 Access平台

access|数据库|access下载|access教程|access视频|access软件

Powered by MetInfo 5.3.12 ©2008-2025  www.metinfo.cn