数据库表设计的原则攻略(一)

从今天开始是设计数据库,这里需要一个星期的时间来讨论数据库的构建,对于数据库分析,必须是要跟需求相联系的,今天的首要任务就是理清总共需要多少个表,怎么来创建这些表,到晚上了我们也只是分析出了一部分。下面我就说下我对表的设计方面的看法。

     创建数据库里最基本的应该就是建表,建索引、存储过程等一系列操作了。谈到表就不得不谈到实体。

    一、数据实体

        什么是实体,客观存在并且可以相互区别的事物称为实体。这里我们就简单的把它理解为一个表吧,描述实体的特性,我们就把他们称为了属性。也可以说当我们把一个数据库表当作一个实体,那么它里面的所有字段是不是就是一个属性了呢?结果是肯定的。

   二、实体间的联系

       我想说的是,很简单,数据库里表跟表间的关系莫过于三种:一对一;多对多;一对多。

       一对一其实就是说我们建的主表跟相关联的表之间是一一对应的,比如说,我建了一个学生基本信息表:t_student,然后我又建了一个成绩表,里面有个外键,studentID,学生基本信息表里的字段studentID和成绩表里的studentID就是一对一。

      一对多,也是类似,我另外建一个班级表,而每个班级有多个学生,每个学生就对应一个班级,对班级来说当然就是一对多了。

     多对多,我还举这个例子,我建个选课表,可能有许多科目,每个科目有很多学生选,而每个学生又可以选择多个科目。这就是多对多了。

   三、基本表的完整性

       (1) 原子性。基本表中的字段是不可再分解的。

     (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。

     (3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。

     (4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。

       这是基本表的完整性,也是它特有的。这里我想说的是,在数据库里还有几种表也是常用的那就是中间表和临时表。

      1、中间表

         中间表是针对多对多关系的,就比如做公交查询系统。里面有两个表,分别是车站表、线路表。这里我们起个名字叫:t_busstation 、t_road,根据常识我们也知道,一个站有多个线路经过,而每个线路又有多个车站,怎么才能将两个表联系起来呢,如果是一对一,一对多,我们一个表,两个表就可以将他们实现了,但是多对多呢,这样我们就必须借助中间表用来连接两个表。一般中间表都是有一个本表的自增主键,还有另外两个表的主键。中间表是没有属性的因为它不是一个基本表。

     2、临时表

        在本次项目中,我们就要用到临时表,首先来看看什么是临时表吧。这是我从网上书上查到的。因为我们用的是MS SQL Server 2000数据库,而在这个数据库里是支持临时表的。

       临时表:其实就是那些以#号开头为名字的数据表,它主要是用来存放临时数据的,当用户断开连接但没有出去临时表里的数据时,系统会自动把临时表里的数据清空。这里要说一点,临时表是放在系统数据库 tempdb中的,而不是当前数据库。

       临时表总共是分两种:本地临时表和全局临时表。

       (1)这里我们需要了解的就是,在数据库中本地临时表是以一个#开头的,这种临时表只对当前的数据库用户可见,而其他的用户是不可见的。当数据库实例断开后当然也就丢失了数据了,不管是显式清空还是系统回收。  

       (2)还有一个就是全局临时表。它是以“##”开头的,而且是对于所有的用户都是可见的,当你断开数据库实例连接时,只要还有别的系统项目在引用它,连着数据库,那么数据就存在,只有当别的系统也断开连接时,系统才会清除全局临时表的数据。

    下面是建立临时表的语句:

     本地临时表:

    create table #student
    (
      studentID int ,
      studentName nvarchar (40),
      classID int
     )



     全局临时表:

     create table ##student
    (
      studentID int ,
      studentName nvarchar (40).
      classID int
     )      

   这里我们也可以用SQL语句完成:

  
select * from employee into  #student


   今天先写到这明天接着学习。

你可能感兴趣的:(数据结构,sql,SQL Server)