数据库主键外键设计原则 sky-v 博客园

合集下载

数据库设计中的主键和外键使用准则(三)

数据库设计中的主键和外键使用准则(三)

数据库设计中的主键和外键使用准则引言在数据库设计中,主键和外键是关键概念,它们在保证数据完整性和数据关联性方面起着至关重要的作用。

本文将介绍数据库设计中主键和外键的使用准则。

一、主键的选择与设计主键是用于唯一标识数据库表中的每一条记录的字段或字段组合。

正确选择和设计主键对于数据库的性能和数据一致性具有重要影响。

1. 选择单一字段作为主键:单一字段作为主键的优点是简单明确,容易理解和实现。

一般情况下,应选择一个不可变且唯一的字段作为主键,例如自增字段、身份证号等。

2. 复合主键的使用:某些情况下,单一字段无法唯一标识一条记录,这时需要使用复合主键。

复合主键是由多个字段组成的,共同保证记录的唯一性。

在选择复合主键时,应注意不要选择过多的字段,以避免影响性能。

3. 避免使用敏感信息作为主键:主键在外键关联等场景中会被暴露出来,因此应避免使用敏感信息作为主键,如手机号、邮箱等。

二、外键的使用准则外键是用于建立数据库表之间关系的字段,它能够保证表与表之间的数据一致性。

以下是关于外键使用准则的探讨。

1. 选择正确的外键关联关系:外键关联关系分为一对一、一对多和多对多三种类型。

在建立关联关系时,应根据实际需求选择合适的关系类型。

2. 引入外键约束:引入外键约束可以保证数据的一致性,避免出现脏数据。

外键约束可以限制外键字段的取值范围,只允许参照被关联表的合法主键值。

3. 级联操作的谨慎使用:级联操作是外键的一个重要属性,可以在主表进行更新或删除操作时,自动更新或删除相关联的记录。

然而,滥用级联操作可能导致数据的异常修改或误删除。

因此,在使用级联操作时,应慎重考虑,并进行充分测试。

4. 外键的性能影响:外键的存在可能会降低数据库的性能,因为在查找和插入数据时需要额外的查询操作。

为了提高性能,可以考虑使用索引来优化外键的检索效率。

三、其他注意事项除了上述两个准则之外,还有一些其他需要注意的事项,如下:1. 主键和外键的命名:命名主键和外键时,应使用有意义的字段名,并且命名要规范统一,便于清晰理解和维护。

数据库主键设计原则

数据库主键设计原则

数据库主键设计原则或许⼤家都设计过数据库,也为表定义过主键,今天我想阐述的是,应该如何正确的设计⼀个主键,在以往的⼀些资料中,都没有提及到主键设计的原则.我为此总结了⼀下:1.是否要采⽤GUID作为主键⽤GUID作主键有它的优势与不⾜.优势是GUID具有唯⼀性,在任何情况下,可以产⽣全球唯⼀的值.这是GUID最⼤的优势,也⽅便数据导⼊,⽐如要求从另⼀个系统中把数据导⼊进来,那么,不⽤担⼼,导⼊时,会导致主键冲突.不⾜是GUID值太复杂.不易记忆,因为有时,难免我们会⽤记录的⽅式,来进⾏记录判断.⽽且数据太长,影响数据库效率.GUID的产⽣不是以⼀定的次序产⽣,对于按主键物理排序的数据库来说,如果在记录的前部插⼊⼀条记录,可能会导致后⾯N次⽅的数据条数后移.这将导致数据插⼊效率.因此GUID的采⽤应该要慎重.2.是否要采⽤⾃动递增的⽅式对于以前谈到的主键,要求唯⼀性,因此⼤家都⽤⾃动递增的⽅式.这样的⽅式是⾮常不可取的.可能是为了⽅便插⼊记录时,不必去⼈为创建主键值.以为这样会⽅便,其实不是的.带来的⿇烦要远远胜于这种所谓的"⽅便".第⼀:数据导⼊不⽅便,经常会有从另⼀系统导⼊数据进来,⾃动递增的主键,将不允许原表中的ID被导⼊进来.这会导致主键丢失.第⼆:对于象订单这样的有主外键的表来说,如果订单的"主档表"主键是⾃动⽣成的.那么在保存⼀个订单时,会要求对主档表与明细表同进⾏事务保存,⽽此时,先要⽣成⼀条订单,然后取出这个订单⾃动⽣成的主键,然后再把此作为明细表的⼀个外键,进⾏明细的保存.这过程中,将变以复杂⽽且不可⾏.事务如何处理.订单主档表插⼊记录后,要是明细保存时遇到错误,主档表记录还要进⾏删除.烦.插⼊成功以后,还要取出产⽣的最⼤值.这将是⼀个严重的浪费.记录多的话会影响速度,⽽且会存在并⾏插⼊.导致获取的记录可能是不正确的. 因此在以上的严重问题下,请不要采⽤⾃动递增⽅式.3.是否要采⽤int型作为主键以前⼤家都采⽤int型,都是出来主键都是数字导致的.其实我们也明⽩.并不是只是数字的东西就是数字型的.⽐如电话号码等.因此对于主键,采⽤int型的优势是速度快,插⼊,查询时都可能会⽐其他的⽅式快.但我这种快的效果也未必有多明显,⽐如以varchar(15)为例,物理主键排序的数据,会⾃动以主键进⾏物理数据排序.因此,就算是字符型的数据,在插⼊时也会插⼊到相应的物理位置上,也就是说,在插⼊时可能会影响⼀些速度.但在以后的查询中,速度影响不会太明显.⽽我要说的,不采⽤int型作为主键,不是说,⾥⾯不存数据.我还是建议⼤家在主键中存放数字,这样的排序⽐较要⽐夹杂字母的排序来的快,之所以要采⽤字符型,也是为以后的数据导⼊作准备,有⼀天,会要求从其他表导⼊数据时,可以在导⼊数据的主键上加⼀个特定字母来避免与原主键冲突.⽐如在导⼊数据的主键前加⼀个"N"字母.这也就不⽤担⼼,要求导⼊数据表中的主键是数字型还是字符型了.4.是否采⽤编号来定义主键这个问题是⽼⽣常谈了.主键设计有个原则,就是主键不应具有任何实际意义.这条其实是⾮常重要,有⼈就是觉得编号本⾝是唯⼀的,可以作为主键⽤,但可能会为以后带来⿇烦.因为带有实际意义的字段,还是存在被修改的可能性.⽽对于主键最⼤的忌讳就是修改主键,这可能会导致⾮常严重的不可估计的后果.⽐如学⽣编号,平时以为永远不会修改,但修改的可能还是会存在.还有⼀种,表⾯上是唯⼀的,但实际上应该是允许重复的.我举个例⼦,订单吧,订单编号应该是唯⼀吧.是的.可是会存在这样的情况,⼀张原来的订单是因为某个原因,要求订单作废.那好给订单的状态标识为"cancel".然后允许再次录⼊同样编号的订单.因此.对于这样的情况下在,虽然有效的订单编号只有⼀个,但在数据库⾓度会允许编号重复.所以不管如何,还是建议⼤家为表都建⼀个没有任何意义的主键,如ID.因此,总结⼀下,我在设计主键,会采⽤字符型的.不采⽤⾃动递增,在新增记录时,系统⽣成主键值.⼀般为全数字进⾏存⼊,⾄于主键值的⽣成规则,可以按需求进⾏规则定义.如果没有特殊的要求,只是为了保持唯⼀,可以定义⼀个字段存放⼀个数值.在⽣成时,⾃动加⼀.然后再存回去.这也⽐从⼀个表中寻找最⼤值要来的快吧.。

数据库的主键与外键设计原则与解析

数据库的主键与外键设计原则与解析

数据库的主键与外键设计原则与解析数据库的主键(Primary Key)和外键(Foreign Key)在设计和构建数据库时起着至关重要的作用。

它们不仅能够保证数据的完整性和一致性,还能够提高数据库的性能和查询效率。

本文将深入探讨数据库的主键和外键设计原则,解析其重要性和应用场景。

首先,我们来了解主键的概念和设计原则。

主键是用来唯一标识数据库表中的每一行数据的一列或一组列。

主键必须满足以下条件:唯一性、非空性和不可变性。

唯一性保证了每一行数据都有一个唯一的标识符,这样就可以通过主键值来准确定位和访问特定的数据。

非空性要求主键的值不能为NULL,确保每一行数据都有一个有效的主键值。

不可变性意味着主键的值在行的生命周期内保持不变,不允许对主键进行修改。

在设计主键时,通常有两种选择:自然主键和人工主键。

自然主键是从表中已有的某些列中选择一个作为主键,例如学生表中的学号、订单表中的订单号等。

自然主键有一个明显的优点,即具有含义,能够直观地表示表中的某些属性。

然而,自然主键的缺点是容易发生冲突和变化,例如学生调整学号或订单被撤销后再次生成订单号等。

为了解决这些问题,人工主键即是通过增加一个特定的列来作为主键,例如自增列或全局唯一标识符(GUID)。

人工主键的优点是稳定和唯一,不容易发生变化和冲突,但缺点是相对于自然主键而言会增加额外的存储和维护成本。

接下来,我们探讨外键的概念和设计原则。

外键是用来建立数据表之间的关联关系的一列或一组列,它引用了另一个表中的主键。

外键能够保证数据的一致性和完整性,并且确保相关表之间的关联关系正确有效。

外键还可以用于实现表之间的连接和查询操作,提高查询效率和性能。

在设计外键时,需遵循以下原则。

首先,外键的值必须与所引用主键的值保持一致,确保所建立的关联关系是正确有效的。

其次,外键的值可以为空,表示当前行的数据未与其他表建立关联。

第三,外键的删除和更新操作应该受到限制,以免破坏关联关系和数据的一致性。

了解MySQL的主键和外键的作用与设计原则

了解MySQL的主键和外键的作用与设计原则

了解MySQL的主键和外键的作用与设计原则引言:数据库是计算机科学中非常重要的概念,它用于存储和管理结构化数据。

MySQL是最常用的关系型数据库管理系统之一,被广泛应用于各个领域。

本文将深入探讨MySQL中主键和外键的作用与设计原则。

主键和外键是数据库中关系模型中的重要概念,它们用于建立表与表之间的关系。

一、主键的作用与设计原则主键是表中的唯一标识符。

它的作用是用于确保数据的唯一性和快速检索。

主键的设计原则如下:1. 唯一性:主键的值必须在整个表中是唯一的,用来标识表中的每一行数据。

可以选择一个或多个列作为主键,如果选择多个列,则这些列的组合必须唯一。

2. 不可为空:主键的值不能为空。

这样可以避免出现无效数据。

3. 稳定性:主键的值应尽量稳定,不应该经常变动。

因为主键被用作索引,如果频繁修改主键值,会导致索引频繁更新,影响数据库性能。

4. 简洁性:主键的值应该尽量简洁,以确保执行效率和空间利用率。

5. 具有实际意义:主键的值最好具有实际意义,便于开发人员和用户理解和维护。

二、外键的作用与设计原则外键用于建立表与表之间的关联关系。

它的作用是用于维护表之间的一致性和完整性。

外键的设计原则如下:1. 关联性:外键用于表与表之间的关联,必须指向其他表的主键。

2. 级联操作:外键可以设置级联操作,当关联的主键值发生变化或被删除时,外键也会相应地变化或被删除,确保数据的一致性。

3. 存在性:外键的值必须在关联表中存在,这样可以保证数据的完整性。

4. 空值允许:外键的值可以为空,表示该关联可以为空。

5. 数据类型要一致:外键和关联的主键数据类型必须一致,方便建立有效的关联关系。

6. 性能与索引:外键的使用应考虑性能和索引的影响。

如果外键的查询频繁,可以对外键列建立索引,以提高查询效率。

三、主键和外键的使用场景主键和外键在数据库设计中有许多使用场景,下面介绍几个常见的场景:1. 基本表关系:有些表之间的关系是一对一或一对多的关系,使用外键可以帮助维护表之间的关联性。

数据库设计中的主键和外键使用准则(四)

数据库设计中的主键和外键使用准则(四)

数据库设计中的主键和外键使用准则引言:数据库是现代信息管理不可或缺的工具,它提供了存储、管理和检索大量数据的功能。

在数据库设计中,主键和外键是两个至关重要的概念,正确使用主键和外键可以提高数据库的性能和数据完整性,本文将探讨在数据库设计中主键和外键的使用准则。

一、主键的定义和使用主键是用于唯一标识数据库表中每一条记录的字段或字段组合。

主键的作用是保证数据的唯一性,并充当数据的唯一标识符。

在数据库设计中,主键的定义和使用有以下准则:1. 主键的选择:主键的选择应遵循简单、唯一和稳定的原则。

简单的主键有助于提高数据库查询性能,唯一的主键保证数据的完整性,稳定的主键可以避免数据冲突。

一般而言,选择唯一确定的字段作为主键,如ID字段或工号字段。

2. 主键的长度:主键的长度应尽量短,避免过长的主键对性能造成负面影响。

常见的主键类型有自增长整数和GUID(全球唯一标识符),根据实际需求选择适当的主键类型,并设置适当的字段长度。

3. 主键的赋值方式:主键的赋值方式有手动赋值和自动赋值两种。

手动赋值需要用户在插入数据时指定主键的值,自动赋值则由数据库系统自动生成主键的值。

一般而言,推荐使用自动赋值方式,避免主键冲突和错误。

二、外键的定义和使用外键是用于建立不同数据库表之间关联关系的字段,它连接了两个不同的表,并通过参照完整性约束来保证数据的一致性。

在数据库设计中,外键的定义和使用有以下准则:1. 外键的选择:外键的选择应遵循直观、相关和必要的原则。

直观的外键可以使数据库结构更易理解,相关的外键可以建立表与表之间的关联,必要的外键可以维持数据的完整性。

根据实际需求,选择适当的字段作为外键。

2. 外键的命名:外键的命名应具有描述性和规范性,能够准确反映表与表之间的关联关系。

常见的外键命名方式有“fk_表名_字段名”或“表名_字段名_fk”等。

命名规范可以提高数据库结构的可读性和可维护性。

3. 外键的级联操作:外键的级联操作是指在进行插入、更新和删除操作时,数据库系统会自动执行与外键相关的操作。

数据库设计中的主键和外键使用准则

数据库设计中的主键和外键使用准则

数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是两个重要的概念。

它们不仅能够帮助我们组织数据,还能够确保数据的完整性和准确性。

在设计数据库时,合理使用主键和外键是非常重要的。

本文将探讨主键和外键的使用准则,帮助读者更好地理解和运用它们。

1. 主键的使用准则主键是用来唯一标识一张表中的每一行数据的字段。

在选择主键时,我们需要考虑以下准则:选择唯一性高的字段作为主键主键需要具备唯一性,不能存在重复的值。

因此,我们应该选择那些唯一性高的字段作为主键。

例如,在用户表中,可以选择用户ID 作为主键,因为每个用户的ID都是唯一的。

选择稳定不变的字段作为主键主键应该是一个稳定不变的字段,即它的值在整个数据表的生命周期中保持不变。

这样能够确保主键的稳定性,避免在数据更新时引起主键的变动。

例如,在学生表中,可以选择学生的学号作为主键,因为学号一般不会发生改变。

主键不应包含有意义的信息主键最好不包含有意义的信息,而应当是一个生成的标识符。

这样可以避免主键的含义与业务相关,一旦业务需求改变,主键不需要发生变动。

例如,在订单表中,可以选择自增的订单号作为主键,而不是选择用户手机号等具有特定含义的字段。

2. 外键的使用准则外键是用来建立表与表之间关系的字段。

它可以用来确保数据的一致性和完整性。

在使用外键时,我们需要考虑以下准则:确保外键与主键对应外键需要与其他表的主键对应,以建立表之间的关系。

这样可以确保在数据操作中,外键的引用始终指向正确的数据行。

例如,在订单表中,可以添加一个外键指向用户表的主键,表示该订单属于哪个用户。

设置外键约束设置外键约束可以保证引用的数据的完整性。

外键约束可以指定引用的表和字段,并定义引用关系的各种操作,例如级联更新、级联删除等。

这能够确保数据的一致性,防止数据出现脏数据。

例如,在商品表和订单表之间建立一对多的关系时,可以设置级联更新约束,当商品信息发生变化时,相关的订单信息也会自动更新。

数据库主键设计的原则与方法

数据库主键设计的原则与方法

数据库主键设计的原则与方法在数据库设计过程中,主键的设计是至关重要的一步。

主键的选择会影响数据库的性能和数据完整性。

因此,本文将介绍数据库主键设计的原则与方法,以帮助读者更好地理解和应用主键设计。

1. 原则一:唯一性主键必须具有唯一性,即每条记录的主键值必须是唯一的。

这样可以确保数据库中不存在重复的数据,避免数据冗余和不一致性。

常用的实现唯一性的方法包括自增长字段、全局唯一标识符(GUID)等。

2. 原则二:稳定性主键的值应该是稳定的,不会频繁发生变化。

主键的变化会引起相关数据的变动,增加数据库维护的复杂度和成本。

因此,最好选择一个与业务逻辑无关、不会经常改变的属性作为主键。

3. 原则三:简洁性主键的设计应该简洁明了,避免过于复杂的组合字段作为主键。

复杂的主键设计会增加数据库的存储空间和查询的复杂度,影响数据库的性能。

通常情况下,使用一个字段作为主键已经足够满足大部分需求。

4. 原则四:不可空性主键的值不应该为空,它应该在插入新记录时必须有值。

空主键将导致数据库无法保证记录的唯一性和一致性。

如果数据库中某些记录没有主键值,可以考虑使用自增长字段或者默认值作为主键。

5. 方法一:自增长主键自增长主键是最常用的主键设计方法之一。

数据库会自动为每条新插入的记录分配一个唯一的主键值,无需手动指定。

这种主键设计简单方便,且能够确保唯一性。

6. 方法二:组合主键在某些情况下,使用一个字段作为主键可能无法满足需求。

可以考虑使用多个字段组合作为主键,称之为组合主键。

组合主键要求多个字段的组合值在整个表中唯一。

7. 方法三:全局唯一标识符(GUID)全局唯一标识符(GUID)是一个128位的二进制数,通常以字符形式呈现。

GUID保证在全球范围内的唯一性,适用于分布式系统。

可以将GUID作为主键,确保数据在不同数据库之间的唯一性。

8. 方法四:业务相关字段在某些情况下,可以使用业务相关字段作为主键。

例如,对于一个学校的学生表,可以使用学生的学号作为主键。

数据库表设计中的主键外键与索引的使用原则

数据库表设计中的主键外键与索引的使用原则

数据库表设计中的主键外键与索引的使用原则数据库表设计中的主键、外键与索引的使用原则在数据库表设计中,主键、外键和索引是常用的概念和技术,用于提高数据库的性能和数据的完整性。

合理运用这些设计原则能够使数据库的查询效率更高、数据一致性更好。

本文将介绍数据库表设计中主键、外键与索引的使用原则,并分别对其进行详细阐述。

一、主键的使用原则主键是用来唯一标识表中的每一条记录的字段或字段组合。

在数据库表设计中,主键是非常重要的,它具有以下使用原则:1.1 唯一性主键值在表中是唯一的,任意两条记录的主键值不相同。

这样能够确保数据的唯一性,防止出现重复数据。

1.2 不可为空主键字段不允许为空,确保每条记录都有主键值。

这样可以方便对数据进行查找和更新操作。

1.3 稳定性主键值应该是永久不变的,不会因为数据的修改而改变。

这样能够保证数据的关联性和一致性。

1.4 简洁性主键应该尽量使用较短、简洁的字段或字段组合。

这样可以减小索引占用的空间,并提高查询效率。

二、外键的使用原则外键是用来建立表与表之间关系的字段,它定义了表与表之间的约束关系。

在数据库表设计中,外键的使用原则如下:2.1 强制关联性外键用于建立表与表之间的关联关系,确保数据的一致性和完整性。

在建立外键关系时,可以设置级联操作,定义当主表记录删除或修改时,从表的相应记录如何处理。

2.2 谨慎选择外键关联在选择外键关联字段时,应该基于业务逻辑和数据关系来确定。

避免不必要的关联,降低数据库的复杂性和冗余性。

2.3 维护外键关系外键关联的表之间存在一致性和完整性的要求。

在数据操作时,应该谨慎维护外键关系,确保数据的正确性和可靠性。

三、索引的使用原则索引是用于提高数据库查询效率的数据结构。

在数据库表设计中,索引的使用原则如下:3.1 选择合适的字段作为索引在选择字段作为索引时,应该考虑字段的唯一性和频繁性。

选择唯一性高、频繁被查询的字段作为索引字段,例如主键字段和外键字段。

数据库主键设计原则

数据库主键设计原则

数据库主键设计原则1.唯一性:主键必须保证数据表中的每一条记录都有唯一的标识。

这可以通过单一字段或多个字段的组合来实现。

唯一性可以保证数据的正确性和完整性。

2.稳定性:主键应该是一个稳定的标识,不会随着数据的变化而改变。

稳定的主键可以保证数据表的连贯性,并且避免因主键变化而引起的数据冗余和错误。

3.简洁性:主键应该是简洁明了的,不应该包含过多的信息。

主键的长度应该尽可能小,以提高数据库的性能和效率。

4.静态性:主键的值应该是静态的,即不会随着其他数据的变化而改变。

静态性主键可以保证数据表的完整性,避免因主键值变化而导致的数据冗余和错误。

5.极简化:主键的数量应该是极简的,即只包含最少的字段。

过多的字段会增加索引的复杂性,降低数据库的性能和效率。

6.效率性:主键的设计应该尽可能提高数据库的查询和插入性能。

主键的选择应该能够简化索引的结构,并且使查询和插入操作更加高效。

7.一致性:主键的设计应当与数据库中的其他对象(如外键、索引等)保持一致。

一致性可以提高数据库的可维护性和可操作性。

8.可读性:主键的值应该具有一定的可读性,以方便人工识别和理解。

这样可以减少程序员的工作量,提高开发效率。

9.唯一性验证:主键的值应该经过唯一性验证,确保在数据库中不存在重复的主键值。

唯一性验证可以通过在数据库中创建唯一性约束或唯一性索引来实现。

10.简单性:主键的设计应该尽可能简单,避免过于复杂的计算和逻辑运算。

简单的主键设计可以提高数据库的性能和效率。

综上所述,数据库主键的设计原则包括唯一性、稳定性、简洁性、静态性、极简化、效率性、一致性、可读性、唯一性验证和简单性。

合理的主键设计可以提高数据库的性能和数据的完整性,避免数据冗余和错误。

同时,主键设计也应该与数据库中的其他对象保持一致,提高数据库的可维护性和可操作性。

数据库主键设计原则

数据库主键设计原则

数据库主键设计原则1.唯一性原则:主键必须具有唯一性,即每个记录的主键值都必须是唯一的。

这样可以确保在数据库中没有重复的记录,并且在进行数据检索和更新时,不会出现混淆或冲突。

2.稳定性原则:主键应该是稳定的,即主键值在记录的生命周期内不应该发生改变。

如果主键发生变化,会导致与该主键相关的记录和索引无效,从而影响数据库的正常操作。

3.简洁性原则:主键应该是简洁明了的,最好是一个单一的字段。

通常情况下,使用一个整型的自增字段作为主键是最简洁和高效的方式。

这样可以保证数据的一致性和连续性,并且减少主键的存储空间和索引的大小。

4.持久性原则:主键的值应该在记录插入数据库时立即生成,并且在记录删除后不能再次使用。

这样可以确保数据库中的所有记录都有一个唯一的主键,并且主键值不会被再次分配给其他记录。

5.可读性原则:主键的值应该具有一定的可读性,以便于人们直观地理解和使用。

如果主键是自动生成的,可以考虑使用一些有意义的前缀或后缀来提高可读性,例如使用固定长度的英文字母前缀作为表的标识。

6.高效性原则:主键的值应该是简单、连续和无规律的,以便于数据库完成相关操作的时候能够快速定位到相应的数据。

如果主键是整型的,可以考虑使用自增的方式来生成主键值。

7.可扩展性原则:主键的设计应该考虑到数据库的扩展性,以便于在将来的需求变化中可以方便地进行扩展。

例如,可以使用复合主键来满足多字段的唯一性需求,并且可以采用其他技术手段来保证主键的稳定性和唯一性。

8.外键关联原则:主键可以用作外键与其他表进行关联。

在设计数据库表之间的关系时,主键和外键之间应该具有一致性和合适的约束,以确保数据的一致性和完整性。

总而言之,数据库主键的设计必须满足唯一性、稳定性、简洁性、持久性、可读性、高效性、可扩展性和外键关联等原则。

这些原则是确保数据库的正确性、高效性和可维护性的基础,对于数据库的设计和性能优化是非常重要的。

数据库设计中的主键和外键使用准则(八)

数据库设计中的主键和外键使用准则(八)

数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是两个重要的概念。

它们用于建立数据表之间的关系,确保数据的完整性和一致性。

然而,在实际的设计过程中,很多人在使用主键和外键时存在一些困惑和误解。

本文将探讨主键和外键的使用准则,帮助读者更好地理解和应用它们。

1. 主键主键是用于唯一标识数据表中的每一行记录的字段或字段组合。

它具有以下几个特点:(1)主键的值在整个数据表中必须是唯一的,不能重复。

(2)主键的值不能为空,即不能为NULL。

(3)主键的值是不可变的,一旦确定就不能再修改。

在选择主键时,应注意以下几点:(1)选择唯一标识一行记录的字段或字段组合作为主键。

(2)尽量选择较短的字段作为主键,可以提高查询效率。

(3)避免选择经常变化的字段作为主键,这样可以减少更新操作的开销。

(4)考虑使用自增长字段作为主键,可以简化插入操作。

(5)不要使用业务相关的字段作为主键,以防止将来需求变化导致主键变化。

2. 外键外键用于建立不同数据表之间的关系,确保数据之间的一致性。

它具有以下几个特点:(1)外键是一个指向另一个数据表主键的字段。

(2)外键的值可以为NULL,表示该记录与其他记录没有关联。

(3)外键的值必须是在被关联表的主键值中存在的。

在使用外键时,应注意以下几点:(1)外键的命名应该具有描述性,清楚表示它与所关联表的关系。

(2)尽量限制外键字段的数据类型与长度与所关联表主键字段一致,以避免数据类型不匹配的错误。

(3)在创建外键时,应设定合适的级联操作,如级联更新或级联删除,以确保关联关系的完整性。

(4)外键的使用应尽量遵循数据库设计规范,避免滥用或误用。

3. 主键与外键的关系主键和外键是数据库设计中密不可分的概念。

它们之间的关系可以总结为以下几点:(1)主键可以作为外键的参照对象,即一个数据表的主键可以作为其他表的外键。

(2)外键必须引用主键,确保引用的数据是有效的。

(3)外键的引用关系可以建立多对一、一对一、多对多等多种关系。

数据库设计中的主键和外键使用准则(六)

数据库设计中的主键和外键使用准则(六)

数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是两个重要的概念。

主键用来唯一标识数据库表中的每一条记录,而外键则用来建立表与表之间的关联关系。

在实际的数据库设计过程中,正确地使用主键和外键是至关重要的,可以确保数据库的数据完整性和一致性。

本文将探讨数据库设计中主键和外键的使用准则。

1. 主键的选择主键是用来唯一标识数据库表中每一条记录的字段或字段组合。

在选择主键时,需要考虑以下几个准则:唯一性主键必须具有唯一性,即每个记录的主键值都不相同。

这可以通过设置数据库表的主键约束来实现。

稳定性主键的值应该是稳定的,即不会随着时间的推移而发生改变。

这样可以确保主键的唯一性和数据的一致性。

简洁性主键的值应该尽可能简洁,以便提高数据库的查询和操作效率。

一般来说,可以选择整型数据类型作为主键。

可读性主键的值应该具有一定的可读性,以便人工识别和操作数据。

可以考虑使用自增长的方式为主键赋予更直观的含义。

2. 外键的使用外键用来建立表与表之间的关联关系,可以确保数据之间的一致性和完整性。

在使用外键时,需要考虑以下几个准则:引用完整性外键应该引用到一个已经存在的表中的主键。

这样可以确保数据的引用关系的完整性,防止数据的孤立或者冗余。

级联操作在建立外键关系时,可以选择级联操作,在主表或者外键表上进行的修改、删除操作会自动引发相关的级联操作,保证数据的一致性。

索引性能外键字段的索引可以提高查询的性能。

在设计数据库时,可以选择在外键字段上建立索引,以提高数据操作的效率。

规范命名外键字段应该有一个规范的命名,可以直观地表达它与主表之间的关系。

命名规范可以有助于更清晰地理解和维护数据库结构。

3. 主键和外键的适用场景主键和外键的使用并不是适用于所有的场景。

在确定是否使用主键和外键时,需要综合考虑以下几个因素:数据关联性如果数据库中的表之间存在较为复杂的关联关系,如一对多、多对多等情况,那么使用外键可以方便地维护数据的一致性和完整性。

数据库设计中的主键和外键使用准则(九)

数据库设计中的主键和外键使用准则(九)

数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是非常重要的概念。

它们不仅可以用来唯一标识和连接不同表之间的数据,还可以保证数据的完整性和一致性。

然而,如何正确使用主键和外键却是一个比较复杂的问题。

本文将从不同的角度探讨主键和外键的使用准则,并给出一些实用的建议。

一、主键的选择主键是用来唯一标识每一条记录的字段。

在选择主键时,需要考虑以下几点准则:1.唯一性:主键字段的值在整个表中必须是唯一的,不能重复。

2.不可更改性:主键字段的值不应该被修改,更不能被删除。

因为主键是用来标识一条记录的,如果主键发生变化,将导致数据的混乱和错误。

3.稳定性:主键应该是一个相对稳定的字段,不容易发生变化。

这样可以保证主键的唯一性和连续性。

4.简洁性:主键字段的值应该尽量简洁、易于理解,不过于复杂。

这样可以提高数据库的查询效率和可读性。

二、外键的使用外键用来建立不同表之间的关系,通过外键可以实现表与表之间的连接和数据的一致性约束。

在使用外键时,需要考虑以下几点准则:1.关联性:外键字段应该与主表的主键字段建立关联。

这样可以保证数据的一致性和完整性。

2.一致性:外键字段的值必须存在于主表中,否则会违反关联性约束。

3.级联更新和删除:通过设置级联更新和删除的规则,可以保证数据的一致性。

当主表中的主键值发生变化时,相关联的外键值也会相应发生变化。

4.避免过度使用:不应该过度使用外键,否则会导致查询性能下降。

只有在必要的情况下,才应该使用外键。

三、主键和外键的数量在设计数据库时,应该尽量减少主键和外键的数量。

过多的主键和外键不仅会增加数据库的复杂性,还会导致查询性能下降。

因此,应该合理选择主键和外键的数量,只保留必要的键。

四、主键和外键的命名规范为了增强数据库的可读性和可维护性,应该为主键和外键选择有意义的名称。

命名规范可以遵循以下几点:1.清晰易懂:主键和外键的名称应该能够清晰地表达其作用和含义。

2.一致性:主键和外键的命名应该保持一致,遵循相同的命名规则。

数据库主键和外键的设计原则与应用

数据库主键和外键的设计原则与应用

数据库主键和外键的设计原则与应用数据库是现代信息系统中不可或缺的组成部分,它承载着大量的数据和信息。

而数据库设计中最基本的概念之一就是主键和外键。

本文将重点探讨数据库主键和外键的设计原则与应用,并介绍它们在数据库管理中的重要作用。

一、主键的设计原则与应用1. 主键的定义:主键是唯一标识数据库表中每一条记录的字段或字段组合。

主键的值在表中必须唯一,不能重复,并且不能为空。

2. 主键的设计原则:2.1. 唯一性:主键字段的值在整个表中必须唯一。

2.2. 稳定性:主键字段的值不能随意更改,以保持主键的稳定性。

2.3. 简洁性:主键字段应该选择一个简洁的字段或字段组合,以提高查询效率和数据存储的效果。

2.4. 简单性:主键字段的设计应尽量简单,避免过多的复杂操作。

3. 主键的应用:3.1. 唯一标识每一条记录:主键字段用于唯一标识数据库表中的每一条记录,便于查询和操作特定的数据。

3.2. 加速查询速度:主键字段的唯一性可以帮助数据库引擎快速定位和检索数据,提高查询效率。

3.3. 保证数据完整性:主键的要求确保了每一条记录都必须具有唯一值,从而保证了数据的完整性和准确性。

二、外键的设计原则与应用1. 外键的定义:外键是连接两个表的一个字段,它定义了一种从一个表到另一个表的引用关系。

外键建立在与它相关联的主键之上。

2. 外键的设计原则:2.1. 引用约束:外键字段的值必须是被引用表中的主键值,或者为空值。

2.2. 删除和更新约束:外键字段所引用的主键值发生改变时,可以选择级联更新或级联删除等约束动作。

2.3. 一致性维护:外键关系的建立和维护要保持一致性,确保被引用表中的主键值的稳定性。

2.4. 索引创建:对外键字段建立索引,以提高查询效率。

3. 外键的应用:3.1. 数据关联性维护:外键建立了不同表之间的关联关系,方便进行数据的关联和查询操作。

3.2. 数据一致性保证:外键约束可以保证多个表之间的数据一致性,防止不合法的引用和数据错误。

数据库设计中的主键和外键使用准则(五)

数据库设计中的主键和外键使用准则(五)

数据库设计中的主键和外键使用准则在数据库设计中,主键和外键是两个重要的概念。

它们在关系型数据库中起着至关重要的作用,用于实现数据的完整性和关系的建立。

本文将就数据库设计中的主键和外键的使用准则进行探讨,以期帮助读者更好地理解和应用这两个概念。

一、主键的使用准则主键是用来唯一标识数据库表中的每一行数据的字段或一组字段。

它在数据库设计中具有以下几点使用准则:1. 唯一性原则:主键必须唯一,并且不允许为空值。

这是因为主键用于标识每一行数据,如果存在重复主键或者主键为空值,则无法准确地标识和访问特定的数据行。

2. 稳定性原则:主键的值应该是相对稳定的,不经常变动。

主键一旦确定,最好不要轻易修改,以免影响到其他关联的数据和程序逻辑。

3. 简洁性原则:主键字段应尽量使用简洁、易于理解的字段名,这样能够提高数据表的可读性和可维护性。

4. 单一性原则:主键应由一列或一组列组成,不宜包含多个数据元素。

这样可以避免主键冗余和复杂性。

5. 效率性原则:主键的数据类型应尽量选择较小的数据类型,以节省存储空间,提高查询效率。

二、外键的使用准则外键是用来建立数据库表之间关系的字段。

通过外键,可以实现表与表之间的联系和数据的关联操作。

外键的使用准则如下:1. 参照完整性原则:外键应参照其他表中已有的主键,确保数据的完整性和一致性。

外键的值必须在被参照表的主键范围内,否则会引发关系不一致的问题。

2. 更新和删除原则:在更新和删除主表中的记录时,需要考虑外键的影响。

一般情况下,禁止更新和删除具有外键关联的主键值,以免导致关联表数据的混乱和不一致。

3. 级联操作原则:在某些特殊情况下,可以采用级联操作的方式处理外键关联。

例如,级联更新和级联删除等,可以自动更新或删除关联表中的数据。

4. 简洁性原则:外键字段应该使用易于理解和标识的命名规则,以提高数据库表的可读性和可维护性。

5. 数据完整性原则:外键的数据类型和长度应该与参照表的主键字段保持一致,以保证数据的完整性和规范性。

数据库设计中的主键和外键使用准则(十)

数据库设计中的主键和外键使用准则(十)

数据库设计中的主键和外键使用准则在数据库的设计过程中,主键和外键是两个非常重要的概念。

主键用于唯一标识数据库表中的每一行数据,而外键则用于建立表之间的关联关系。

本文将探讨数据库设计中主键和外键的使用准则,以期帮助读者更好地理解和应用这两个概念。

一、主键的选择主键是用来唯一标识数据库表中的每一行数据的字段。

在选择主键时,需要考虑以下几个准则:1. 唯一性:主键值必须在表中是唯一的,不能重复。

这可以通过给主键字段设置自增约束或者使用全局唯一标识符(GUID)来保证。

2. 稳定性:主键值应该是稳定的,即不会随着时间的变化而改变。

这样可以保证数据库中的数据和引用关系的一致性。

3. 简洁性:主键的值应该尽可能简洁,避免使用过长的字符串或者复杂的计算公式作为主键。

简洁的主键可以提高数据库的性能,并且使数据更易于理解和维护。

4. 可读性:虽然主键的值一般不会直接暴露给用户,但是在调试和排错的时候,可读性好的主键可以提高工作效率。

因此,最好选择一种易于阅读和理解的主键形式。

二、外键的应用外键用于建立数据库表之间的关联关系,可以确保数据的一致性和完整性。

在应用外键时,需要注意以下几个准则:1. 主从关系:外键一般建立在一对多或多对多关系中的主表上。

主表是外键的参照表,从表是外键的依赖表。

通过外键建立的关联关系,可以方便地查询和管理表之间的关联数据。

2. 删除和更新操作:当主表上的记录被删除或者更新时,外键的引用关系应该能够自动处理。

一般来说,可以通过级联删除或者级联更新来实现。

级联删除是指当主表上的记录被删除时,从表上的相关记录也被删除;级联更新是指当主表上的记录被更新时,从表上的相关记录也随之更新。

3. 约束和限制:外键可以对从表上的数据进行约束和限制。

例如,可以限制从表上的外键字段只能引用主表上的特定值,或者设置外键字段不能为空。

4. 性能和索引:外键的应用可能会对数据库的性能产生影响。

为了提高查询效率,可以在外键字段上建立索引,这样可以快速地查找和比较外键的值。

数据库主键与外键的设计与使用

数据库主键与外键的设计与使用

数据库主键与外键的设计与使用在数据库设计和管理过程中,主键和外键是最为重要的概念之一。

主键用于唯一标识数据库中的每个记录,而外键则用于建立表之间的关联。

本文将介绍数据库主键与外键的概念、设计原则以及使用技巧。

一、主键的设计与使用主键是用来标识每个数据库表中的唯一记录的字段或字段组合。

主键的设计要遵循以下原则:1. 唯一性:每个记录的主键值都必须是唯一的,从而确保每个记录都可以被准确地标识和引用。

2. 不可为空:主键字段不允许为空值,因为一个为空的字段无法唯一地标识一个记录。

3. 稳定性:对主键字段的值进行修改或更新应该是非常少见的,因为主键作为记录的唯一标识,任何改变都将导致数据的重组和调整。

根据以上原则,我们可以选择一个或多个合适的字段作为主键。

通常情况下,每个表都应该至少有一个主键,并且最好是由一个具有唯一性的字段或字段组合来构成。

常用的主键设计包括自增长的整型字段、全局唯一标识符(GUID)、组合字段等。

同时,在设计主键时还需要注意以下几点:1. 不宜选取长度过长的字段作为主键,因为主键字段将出现在表的索引中,索引长度过长将会影响查询性能。

2. 不宜选取频繁变化的字段作为主键,因为主键的更新会引起索引的调整和数据的迁移,导致性能下降。

3. 可以考虑在需要频繁查询的字段上创建索引,以提高查询性能。

二、外键的设计与使用外键用于建立表与表之间的关联关系,通过外键可以实现数据的完整性约束和数据的一致性。

外键的设计要遵循以下原则:1. 引用完整性:外键字段必须引用主表的主键字段,从而建立起表与表之间的关联关系。

2. 数据一致性:通过外键,可以确保表与表之间的关联数据是一致的。

外键字段的值必须存在于主表的主键字段中,否则将无法建立关联。

3. 数据操作规则:在使用外键时,插入、更新和删除从表的数据时要考虑外键的引用关系,避免破坏数据的完整性。

在创建外键时,需要注意以下几点:1. 外键字段的数据类型和长度要和主键字段一致,以确保数据的匹配性。

数据库设计中的主键和外键使用准则(一)

数据库设计中的主键和外键使用准则(一)

数据库设计中的主键和外键使用准则引言:在数据库设计中,主键和外键是两个非常重要的概念。

主键用于唯一标识一个实体,而外键用于建立实体之间的关系。

正确使用主键和外键可以确保数据库的数据完整性和可靠性。

本文将探讨主键和外键使用的准则,以帮助读者更好地设计数据库。

一、主键的选择和使用1. 主键的定义主键是用来唯一标识一个实体的属性或属性组合。

它具有唯一性和非空性的特点。

在数据库中,主键可以是一个单独的字段,也可以是多个字段的组合。

2. 主键的选择选择主键时,应考虑以下几点:(1)唯一性:主键的值必须唯一标识一个实体,不可重复。

(2)非空性:主键的值不可为空,不能为空或NULL。

(3)稳定性:主键的值在实体的生命周期中应该保持稳定,不会经常变动。

(4)简洁性:主键的值应该尽可能地简洁,不宜过长。

(5)易于索引:主键的值应易于建立索引,以提高查询的效率。

在使用主键时,需要遵循以下准则:(1)仅使用必要的字段作为主键,避免冗余。

(2)避免使用与业务无关的字段作为主键,保持主键与实体的相关性。

(3)不要使用易变的字段作为主键,以免导致主键值频繁变动。

(4)主键值的生成可以使用自增长序列或其他算法,使其具有自动增长的特性。

二、外键的选择和使用1. 外键的定义外键用于建立实体之间的关系。

它是一个指向其他表中主键的字段。

外键用于维护实体之间的引用完整性,当一个表的外键与其他表的主键建立关联时,就会形成外键关系。

2. 外键的选择选择外键时,应考虑以下几点:(1)相关性:外键应该与当前表中的某个字段具有关联性,以建立实体之间的合理连接。

(2)一致性:外键的值应该与所指向表中的主键值一致,确保关联的正确性。

(3)完整性:外键关系应该具备完整性约束,确保数据的完整性。

在使用外键时,需要遵循以下准则:(1)建立外键关系时,需要确保所指向表中的主键存在且唯一。

(2)外键值的修改应该受到限制,以确保外键关系的完整性。

(3)采取适当的级联操作,以便在父表数据更新或删除时,能够同步更新或删除相关的子表数据。

数据库设计中的主键与外键关系建立原则

数据库设计中的主键与外键关系建立原则

数据库设计中的主键与外键关系建立原则在数据库设计中,主键与外键关系的建立原则至关重要。

主键和外键是关系型数据库中关联表之间的互动机制,通过建立这种关系,可以实现数据的正确性、完整性和一致性。

下面将介绍一些主键与外键关系建立原则。

1. 主键的选择主键是用于唯一标识表中每一条记录的字段或字段组合。

在选择主键时,应该遵循以下原则:a. 唯一性:主键的值必须在表中是唯一的,不能重复。

b. 稳定性:主键的值应该是稳定不变的,不宜经常变动。

c. 简洁性:主键的字段应该尽可能简洁,避免使用过长或冗余的字段作为主键。

2. 外键的定义外键用于表与表之间的关联,通过外键可以实现表之间的数据引用和关联,确保数据的一致性。

在定义外键时,应该注意以下原则:a. 数据类型和长度:外键的数据类型和长度应该与主键完全匹配,确保数据的一致性。

b. 外键约束:外键应该设置为约束,防止无效数据的插入和更新操作。

c. 索引优化:对外键字段创建索引,可以提高查询效率。

3. 主键与外键的关系建立主键与外键的关系建立是数据库设计中非常重要的一环。

以下是一些关系建立的原则:a. 一对多关系:当一个表的主键与另一个表的外键建立关系时,通常情况下是一对多的关系。

一个表的一条记录可以对应另一个表中的多条记录。

b. 多对多关系:多对多关系需要通过中间表来建立主键与外键的关联。

中间表包含两个外键,分别引用两个表的主键。

c. 一对一关系:一对一关系中,两个表的主键与外键建立关联。

每个表的一条记录只能对应另一个表中的一条记录。

4. 级联操作在主键与外键关系建立过程中,还需要考虑级联操作的问题。

级联操作是指在更新或删除主表记录时,自动更新或删除相关的从表记录。

常见的级联操作有:a. 级联更新:当主表的主键更新时,相关的从表中的外键也会被更新。

b. 级联删除:当主表的主键删除时,相关的从表中的记录也会被删除。

通过遵循以上主键与外键关系建立原则,可以确保数据库的数据完整性和一致性。

数据库主键外键设计原则-sky-v-博客园

数据库主键外键设计原则-sky-v-博客园

数据库主键外键设计原则-sky-v-博客园主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。

主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。

而主键和外键的结构是这个设计过程的症结所在。

一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

主键:关系数据库依赖于主键---它是数据库物理模式的基石。

主键在物理层面上只有两个用途:1. 惟一地标识一行。

2. 作为一个可以被外键有效引用的对象。

基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:1. 主键应当是对用户没有意义的。

如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2. 主键应该是单列的,以便提高连接和筛选操作的效率。

注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。

其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。

其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

3. 永远也不要更新主键。

实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。

如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

注:这项原则对于那些经常需要在数据转换或多数据库合并时进行数据整理的数据并不适用。

4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

5. 主键应当有计算机自动生成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库主键外键设计原则- sky-v - 博客园
主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。

主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。

而主键和外键的结构是这个设计过程的症结所在。

一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

主键:
关系数据库依赖于主键---它是数据库物理模式的基石。

主键在物理层面上只有两个用途:
1. 惟一地标识一行。

2. 作为一个可以被外键有效引用的对象。

基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:
1. 主键应当是对用户没有意义的。

如果用户看到了一个表示多对多关系的连接表中的数据,并抱怨它没有什么用处,那就证明它的主键设计地很好。

2. 主键应该是单列的,以便提高连接和筛选操作的效率。

注:使用复合键的人通常有两个理由为自己开脱,
而这两个理由都是错误的。

其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。

其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

3. 永远也不要更新主键。

实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。

如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

注:这项原则对于那些经常需要在数据转换或多数
据库合并时进行数据整理的数据并不适用。

4. 主键不应包含动态变化的数据,如时间戳、创建时间列、修改时间列等。

5. 主键应当有计算机自动生成。

如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。

一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就
会落入不了解数据库设计的人的手中。

转载:
/tianyamoon/archive/2008/04/02/1 134394.html
数据库外键的使用
外键的作用我认为主要有两个:一个是让数据库自己通过外键来保证数据的完整性和一致性,一个就是能够增加ER图的可读性。

我觉得第二点的重要性甚至比第一点还高。

有些人认为外键的建立会给开发时操作数据库带来很大的
麻烦,因为数据库有时候会由于没有通过外键的检测而使得开发人员删除,插入操作失败,他们觉得这样很麻烦,其实这正式外键在强制你保证数据的完整性和一致性,这是好事儿。

应该说如果系统比较小,外键的作用可能不会很明显,如果你的系统后台有几百个表的话,没有外键的数据库设计是我无法想象的,有一个基础数据的表:商品,其他表都保存商品ID ,查询时需要连表来查询商品的名称,单据1的商品表
中有商品ID字段,单据2的商品表中也有商品ID字段,如果不拉出外键的话,当单据1,2都使用商品ID为3的商品后,删除此商品后,再查看单据1,2的时候就会查不到商品的名称
当表很少的时候,有人认为可以在程序实现的时候来通过写脚本来保证数据的完整性和一致性,也就是在删除商品的操
作的时候去检测单据1,2中是否已经使用了商品ID为3的商品,但是当你写完脚本之后系统有增加了一个单据3
他也保存商品ID找个字段,如果不拉出外键,你还是会出
现查不到商品名称的情况,你总不能每增加一个使用商品ID 的字段的单据时就回去修改你检测商品是否被使用的脚本

第二点就是增加ER图的可读性。

这也同样是在后台数据库表非常多的时候能够体现出来的,外键能够明确的两个表之间的关系,例如一个单据的主表和单据的品的子表,如果两个表没有拉出外键表明关系,且两个表的位置在ER图中很远,对于一个对这个系统不是非常了解的人来说,让他去理出两个表之间的关系是很麻烦的,如果你拉出外键就算两个表离的很远,他也能随着外键找出他们之间的关系来,ER图的
可读性对于一个刚刚接触大型系统的新手来说是极为重要的。

当然,外键的个数也不是没有个尺度,因为外键拉的过多会使ER图极为混乱(到处都是线) ,所以应该掌握合适的尺度才行,必要的外键必须要拉出来。

如果实在不想因为外键过多而造成ER图的混乱,可以对基础数据的删除用假删除的办法,以避免在没有外键约束和检查的情况下造成数据的不一致性。

转载:
/dowson2002/archive/2007/08/29/1764 148.aspx
uniqueidentifier数据类型
uniqueidentifier数据类型可存储16字节的二进制值,其作用与全局唯一标记符(GUID)一样。

GUID是唯一的二进制数:世界上的任何两台计算机都不会生成重复的GUID值。

GUID主要用于在用于多个节点,多台计算机的网络中,分配必须具有唯一性的标识符。

在SQL中ROWGUIDCOL 表示新列是行的全局唯一标识列。

对于每个表只能指派一个uniqueidentifier 列作为ROWGUIDCO列。

ROWGUIDCOL 属性只能指派给uniqueidentifier列
一什么是uniqueidentifier?
Uniqqueidentifier 是全局唯一的标识
p d [3~)F F C E0二UniqueIdentifier 数据类型的列如何赋值?
1 使用NewID()函数来实现
2 直接将字符串的常量转化成这样的格式
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
举例:
6F9619FF-8B86-D011-B42D-00C04FC964FF 为有效的UniqueIdentifier数据
3 直接赋于32位的十六位数据
举例0xffffffff00000000ffffffff00000000
三UniqueIdentifier 数据类型数据实际是怎么在数据库中
保存的?
UniqueIdentifier 数据类型存储实际的数据是16个字节的二进制值,
UniQueIdentifier 可以转化成实际的字符串型和二进制数据
类型
四NewID()函数是如何生成唯一的UniqueIdentifier 值的呢?
NewID()函数是从他们的网卡上的标识数字和CPU时钟
的唯一的数字生成新的UniqueIdentifier数据,这个数据和GUID是一样的每台计算机能生成全球唯一的值
这样在多台计算机和多网络之间生成具有唯一性的标识符
五使用Uniqueidentifier数据类型的主要的优点
Uniqueidentifier 数据类型主要的优点是在使用newid 函数生成值的时候是可以保证值的全球唯一性
可以唯一的标识单行的记录对于多库(尤其是多机器,多网段的数据库的复制)来将比IDEntity来的更有效其次在使用Identity的情况下,我们对自动生成的值是不能修改的,而Uniqueidentifier数据类型是可以随时修改的
六使用Uniqueidentifier的数据类型的缺点
1 对于生成的Uniqueidentifier 类型的值来讲,是无序
在正常显示相关的数据信息的时候,返回的信息是无序的ITPUB个人空间p e%A _0`2I l(G!v t0]
对于Identity 为标识的数据显示的时候,默认的情况下是根据添加记录的顺序来显示的。

这样,对于uniqueidentifier为主键的信息集,还是需要一个默认标识排序的字段。

2 对于Uniqueidentifier 字段来将数据的实际的信息为16个字节,相对来将比Identity来讲大的多,相对来将存储空间和查询的效率会降低很多的。

七在系统数据库的设计中我们如何对Uniqueidentifier,Identity ,和可标识的记录属性(有实际的含义的信息)作为主键,这三种方式进行取舍
以属性为主键的系统设计情况
在系统设计的过程中
单条信息中包含可以表示唯一性的属性(一般不能太多3个以内)而且这样的属性是必填字段。

在记录生存周期内一般是不进行改动的,表一般多于50个这样级别的系统
以属性为主键,这样的方式还是最佳的
举例:关于学生的管理信息系统以学生的学号为主键以Uniqueidentifier 列为主键的情况
在需要多个数据库之间,多个网段之间需要进行数据库的复制时,我们就需要在每一个唯一的标识来区别每一个单条记录,在没有合适的属性来做主键的情况下可以用Uniqueidentifier列来生成主键
以Identity为主键的情况
不需要数据库的复制,和系统比较小的情况下(50表以内)可以用Identity列来生成主键,适合于快速开发。

相关文档
最新文档