范式化对应用程序的响

  从目的上来说、范式化越高数据库的一致性就越容易维护,范式化越高数据的冗余就越小。通过消除重复数据或数据的各种副本可获得更高效的数据修改操作。

因为通常这样只要修改一个地方,就可以减少锁及日志记录。

  上面说了这么多你是不是感觉范式化越高就越好呢?可是万事万物都有一个度,过了这个度就不好了。

  我不是讲禅道的,还是用一个例子说明一下吧。

-------------------------------------------------------------

设计A:

  --------------------------------------------------------

  create table employee(
    ID int,Name nvarchar(4), -- 工号
    PhoneNumber nvarchar(11),-- 手机号码
    Department nvarchar(8), -- 部门名
    DepartmentPhoneNumber nvarchar(11)); -- 部门分机
  go

设计B:

  ------------------------------------------------------

  create table department(
    DepartmentID int , -- 部门ID
    PhoneNumber varchar(11)); -- 分机号
  go

  create table employe(
    EmployeeID int, -- 工号
    Name nvarchar(8),--姓名
    PhoneNumber nvarchar(11),-- 手机
    DepartmentID int -- 所属部门号);
  go

*********************************************************************************************************************

  总结:

    这两种设计哪个好呢?

      情况一:

          数据是修改部门的电话号码、设计A可能要修改多行(如果这个部门有多个人的话)。设计B 可以改动一行就可以了。

      情况二:

          如果是要读出员工的手机号和所在部门的分机号的话设计A只要读一张表。设计B要连接两张表。这种情况下设计A是有

          优势的。

      高范式化对更改有优势,低范式化对读有优势。

时间: 2024-10-01 05:23:39

范式化对应用程序的响的相关文章

Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..

Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid App为什么会兴起编辑 1 1.2. 如何实现网页语言与程序语言的混合编辑 2 1.2.1. 多View混合型 2 1.2.2. 单View混合型 2 1.2.3. Web主体型 2 1.3. Hybrid App的瓶颈与未来编辑 3 2. Web App.Hybrid App.Native APP对比

Android Monkey详解

Monkey是一个运行在Android设备或者虚拟机上的程序,它能随机模拟一系列用户的操作,点击,滑动,可以用它来做压力测试. 在Monkey运行的过程中,它会产生并发送一系列的事件给系统,并且监听系统:当给它指定一个或多个程序时,它会限制系统中的其他程序,阻止他们运行:当程序崩溃时,Monkey会停止,并反馈错误:当程序为响应时,Monkey会停止,并反馈错误. 它包括四个选项:常规选项,比如设置产生事件的次数:事件选项:约束选项:调试选项. 常规选项: --help:打印帮助信息 -v:指定

转---视图动画和坐标系介绍!

Core Animation基础 Core Animation利用了硬件加速和架构上的优化来实现快速渲染和实时动画.当视图的drawRect:方法首次被调用时,层会将描画的结果捕捉到一个位图中,并在随后的重画中尽可能使用这个缓存的位图,以避免调用开销很大的drawRect:方法.这个过程使Core Animation得以优化合成操作,取得期望的性能. Core Animation把和视图对象相关联的层存储在一个被称为层树的层次结构中.和视图一 样,层树中的每个层都只有一个父亲,但可以嵌入任意数量

UIView如何管理它的子视图

UIView提供了很多建立和管理视图的方法. 1.添加视图 insertSubview:atIndex:   //放在子视图数组的具体索引位置 insertSubview:aboveSubview:   //某个子视图前面 insertSubview:aboveSubview:   //某个子视图前面 2.重新排序和删除子视图 [parentView exchangeSubviewAtIndex:i withSubviewAtIndex:j]//交换两个视图的位置 bringSubviewToF

C#操作 word代码

#region 读取word /// <summary> /// 读取word所有文字内容(不包含表格) /// </summary> /// <returns>word中的字符内容(纯文本)</returns> public string ReadAllFromWord() { Word.ApplicationClass app = null; Word.Document doc = null; object missing = System.Reflec

【转】 UIView如何管理它的子视图

原文:http://my.oschina.net/u/1984662/blog/293690 目录[-] Core Animation基础 改变视图的层 动画支持 视图坐标系统 边框.边界.和中心的关系 坐标系统变换 内容模式与比例缩放 自动尺寸调整行为 创建和管理视图层次 创建一个视图对象 添加和移除子视图 视图层次中的坐标转换 标识视图 在运行时修改视图 实现视图动画 配置动画的参数 配置动画的委托 响应布局的变化 重画视图的内容 隐藏视图 创建一个定制视图 初始化您的定制视图 描画您的视图

Windows 修改电脑属性(二)

一.秀出自我风格的屏幕保护画面 1.气泡屏幕保护 打开电脑,按开始键,点击运行输入regedit按回车键进入注册表界面,找到如下路径:HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/ScreenServer. 切换到Bubbles子键上 单击鼠标右键执行:新建(N)/DWORD(32-位)值(D),将新建的键值命名为MaterialGlass 即可. 注:MaterialGlass: 此为DWORD类型,加入此条记录并将其值

Android(java)学习笔记161:Framework运行环境之启动SystemServer进程

      SystemServer进程是zygote孵化出的第一个进程,该进程是从ZygoteInit.java的main函数中调用startSystemServer()开始的.与启动普通进程的差别在于:类zygote为启动SystemServer提供专门的函数startSystemServer(),而不是标准的forAndSpecilize函数.同时,SystemServer进程启动后首先要做的事情和普通进程也有所差别.     函数startSystemServer()的关键功能如下: (

移动互联测试

Android日志 实时打印日志 状态信息日志 ANR日志 application not responding Monkey日志 实时打印日志 adb logcat -b main -v time> app.log 打印应用程序的log adb logcat -v time> app.log 默认main adb logcat -b radio -v time> radio.log 打印射频相关的log adb logcat -b events -v time > event.l