数据库设计(1)

建表


保证数据完整性:
。主键、unique、标识列
。外键
。类型
。约束:是否允许为null,默认值

在某个字段上应用primary key或unique约束,默认会自动生成一个唯一索引。索引是能提高许多数据库操作性能的对象,能使web应用程序运行更快

性能:
。索引


外键(多)所对应的主键(一)必须是唯一键或主键,注意不能是仅为标识列,并且不能为null
外键:
。强制外键约束(Enforce Foreign Key Constraint):这是针对 对外键表的增、改以及主键表的删、改的数据完整性检查
。Insert和Update规范(Insert  and Update specification):针对 对主键表的删、改,对应的外键表所采取的相应措施(?不明白为什么是insert规范)
。强制用于复制(Enforce For Replication):这个选项应用于数据库复制。复制是一种技术,可以使位于不同地方的SQL Server中的数据保持同步


在我们将某一列设置为标识列之后,SQL Server默认不允许手动修改该列的值。因此在SQL表创建脚本中出现了如下所示的命令,它允许临时向标识列插入自定义数据:
SET IDENTITY_INSERT Departments ON

标识列所生成的值在表的生命周期中是唯一的。在生成一个值之后,就不会再次生成了,即使你删除了表中的所有行。如果想让SQL Server重新从初始值开始生成,必须删除并重新创建表或是用SQL命令TRUNCATE去截断表。截断表跟删除并重新创建表的效果一样


what 索引

索引是一种特殊的数据库对象,用来提高数据库操作的整体速度。它通过维护特殊的数据结构来映射已索引表的内容,这将大大加速该表的查找操作

why 索引以及它的弊端

 索引将能够提高从表中读取数据的速度,但会降低插入,删除,更新操作的速度,因为使用这些操作,数据服务器不仅需要修改该表,还要修改索引创建的额外的数据结构。在实际的应用程序中,绝大多数的数据库操作都是读取操作,因此使用索引将会明显提高性能


在一个表中可以创建多个索引,每个索引可以包含一个或多个列。当一个表按某个列创建了索引后,不是行被索引,就是根据该列的值和索引类型被物理索引


对于索引,应该注意以下内容:

  • 索引可以加快数据库查询操作,但同时会减慢更改数据库的操作(删除、更新和插入操作)。
  • 太多索引会降低数据库性能。通常的做法是,在where,order by 和 group by子句中常用的列,以及常用于表连接、与其他表进行关联的外键列创建索引
  • 默认情况下,主题和唯一表列会自动创建索引

原文地址:https://www.cnblogs.com/eversteins/p/2190254.html