首页 > 代码库 > 范式化对应用程序的响

范式化对应用程序的响

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

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

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

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

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

设计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是有

          优势的。

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

 

范式化对应用程序的响