外键的作用很重要,最好在数据库中使用。举一个例子比较明白。
比如有两张表格,一个是学生档案,另一个是上学期间的成绩单
档案中会有:学号,姓名。(学号为主键)
成绩单有(简化过的):学期号,学号,平均分数(学期号,学号两个同时为主键,学号同时为外键)
为了保证成绩单上的数据有效,所以要求录入学号时,必需保证档案中有这个学号,否则就不能录入。
从而保证了成绩单上的成绩数据的引用完整,否则将会是垃圾数据。
用程序控制,有很多缺点;录入成绩单时为了保证学号有效,首先要搜索档案,当档案很大时会影响效率。程序控制并不能保证百分之百引用完整性,尤其是并发操作。
说一个特例(主要是说明程序控制不好):
A录入成绩单,B在编辑档案。
当A录入张三的成绩,保存时,搜索张三存在,于是程序下一步就要存盘,但这时B恰好把张三删除了。但A那边的程序并不知道,于是就把一条垃圾数据存进数据库中了。
此例的操作流程正确与否不重要,但说明了程序控制并不是好方法。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xianyu_0418/archive/2009/08/21/4469072.aspx
比如有两张表格,一个是学生档案,另一个是上学期间的成绩单
档案中会有:学号,姓名。(学号为主键)
成绩单有(简化过的):学期号,学号,平均分数(学期号,学号两个同时为主键,学号同时为外键)
为了保证成绩单上的数据有效,所以要求录入学号时,必需保证档案中有这个学号,否则就不能录入。
从而保证了成绩单上的成绩数据的引用完整,否则将会是垃圾数据。
用程序控制,有很多缺点;录入成绩单时为了保证学号有效,首先要搜索档案,当档案很大时会影响效率。程序控制并不能保证百分之百引用完整性,尤其是并发操作。
说一个特例(主要是说明程序控制不好):
A录入成绩单,B在编辑档案。
当A录入张三的成绩,保存时,搜索张三存在,于是程序下一步就要存盘,但这时B恰好把张三删除了。但A那边的程序并不知道,于是就把一条垃圾数据存进数据库中了。
此例的操作流程正确与否不重要,但说明了程序控制并不是好方法。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xianyu_0418/archive/2009/08/21/4469072.aspx
发表评论
-
myeclipes8.6 反编译插件的安装
2011-04-13 11:25 885如下步骤是在网上找的但是有两个地方有问题: 1 jad的路径问 ... -
JVM的理解
2011-02-16 09:57 623躁动的绵羊的 《深入JVM概要》我觉得写的挺好 可以到他的博 ... -
JVM启动类加载器加载些什么
2011-02-14 10:20 739Bootstrap里加载的是<JAVA_RUNTIME_ ... -
使用异常机制的建议
2010-12-02 17:12 6341 异常处理不能代替简单测试 只在异常情况下使用异常机制 ... -
静态导入
2010-12-01 17:15 613import java.lang.System.*; 可以使用 ... -
初始化块
2010-12-01 16:17 5613种两种初始化数据域的方法: 1 在构造器中设置值 2 在声明 ... -
杂七杂八的记了些笔记 回头看看
2010-11-19 23:28 633经常听人 要向前看 现在我得回头看 -
Java 反射机制的补充(转自 凯旋人生)
2010-11-19 23:01 625Java的反射机制是运行时的环境。 Reflection是j ... -
java反射机制
2010-11-19 22:54 675反射机制:所谓的反射机制就是java语言在运行时拥有一项自观的 ... -
系统基本业务流程
2010-11-19 14:51 684系统的基本业务流程: 在表示层中,首先通过JSP页面实现交互 ... -
ssh生命周期
2010-11-19 11:41 587... -
ssh 的简单认识
2010-11-19 10:47 686【转自 Java虫 】 Struts、spring、Hiber ... -
控制可见性的访问修饰符
2010-11-01 17:05 867private--仅对本类可见 public-- 对所有类可 ... -
final类和方法
2010-11-01 16:47 751有时候,可能希望阻止人们利用某个类来定义子类,不允许扩展的类被 ... -
类的设计技巧
2010-11-01 16:31 6661 将数据设计为私有 2 一定要将数据进行私有化 3 不要在类 ... -
静态块
2010-11-01 15:41 617public class NoMain { public ... -
默认域 初始化
2010-11-01 15:00 664如果在构造器中没有显示的给予域 赋初始化值,那么系统会自动的赋 ... -
参数调用
2010-11-01 14:40 653Java程序设计语言总是采用只调用。也就是说,方法得到的是所有 ... -
静态导入
2010-11-01 14:31 693静态导入 一般写法: public class Test { ... -
静态域 和 静态方法
2010-11-01 14:21 9481.静态域 如果将域定义 ...
相关推荐
9.2 使用简单SELECT语句查询数据 171 9.2.1 查询表中所有数据 171 9.2.2 查询表中指定字段的数据 172 9.2.3 查询结果中去除重复信息 174 9.2.4 根据现有列值计算新列值 174 9.2.5 命名新列 175 9.2.6 将查询结果保存...
索引与外键 同一字段,多个索引 系统生成键 索引访问的不同特点 4 机动灵活:思考SQL语句 SQL的本质 掌握SQL艺术的五大要素 过滤 5 了如指掌:理解物理实现 物理结构的类型 冲突的目标 把索引当成数据仓库 记录强制...
正确认识数据冗余 主键与外键在多表中的重复出现, 不属于数据冗余,这个概念必须清楚,事实上有许多人还不清楚。非键字段的重复出现, 才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的重复...
对于前者要求建立数据一致性和完整性强、安 全性好的库,而对于后者则要求应用程序功能完备,并简单易使用。因此,文章结合图 书馆数据库的要求,对SQL Server 2000数据库系统、SQL语言原理和VisualBasic6.0技术进行...
凡是 可以互相区别⽽且可以被⼈们认识的事、物、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E-R 数据模型中,也有型与值之分;实体可以作为型来定义,每个实体可以是它的...
引言 编写此文档目的 此文档主要是指导开发人员进行系统开发,指导实施人员对执法案件管理系统数据库结构有一定的了解,指导数据库人员可以对执法案件管理系统的数据库表结构有一定的认识和应用。 命名 语言 命名...
凡是可以互相区别而且可以被人们认识的事、物 、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E- R数据模型中,也有型与值之分;实体可以作为型来定义,每个实体可以是它的...
第1章 SQL语言的概述 1.1 认识SQL语言 1.1.1 什么是SQL语言 1.1.2 SQL的历史与发展 1.1.3 SQL的功能和优点 1.2 认识数据库 1.2.1 什么是数据库 1.2.2 数据库系统的结构 1.2.3 数据库系统的工作流程 1.2.4 常见的SQL...
1.5 用5分钟制作一个简单实例 22 1.5.1 实例运行界面 22 1.5.2 新建一个工作空间对象 22 1.5.3 新建一个应用程序对象 23 1.5.4 创建窗体 23 1.5.5 为应用程序添加open事件代码 25 1.6 小结 27 1.7 习题 27 ...
1.2.2 角色自我认识有讲究 9 1.3 明白学以致用方有意义 11 第2章震惊,体验物理体系之旅 13 2.1 必须提及的系列知识 13 2.2 物理体系从老余开店慢慢铺开 16 2.2.1 老余的三个小故事 16 2.2.1.1 顾客的尺寸 16 2.2....