`
cn_arthurs
  • 浏览: 327601 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库中主键和外键的设计原则<转>

阅读更多

http://www.cnblogs.com/tianyamoon/archive/2008/04/02/1134394.html

 

主键和外键是把多个表组织为一个有效的关系数据库的粘合剂。主键和外键的设计对物理数据库的性能和可用性都有着决定性的影响。

必须将数据库模式从理论上的逻辑设计转换为实际的物理设计。而主键和外键的结构是这个设计过程的症结所在。一旦将所设计的数据库用于了生产环境,就很难对这些键进行修改,所以在开发阶段就设计好主键和外键就是非常必要和值得的。

主键:

  关系数据库依赖于主键---它是数据库物理模式的基石。主键在物理层面上只有两个用途:

        1. 惟一地标识一行。

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

  基于以上这两个用途,下面给出了我在设计物理层面的主键时所遵循的一些原则:

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

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

       注:使用复合键的人通常有两个理由为自己开脱,而这两个理由都是错误的。其一是主键应当具有实际意义,然而,让主键具有意义只不过是给人为地破坏数据库提供了方便。其二是利用这种方法可以在描述多对多关系的连接表中使用两个外部键来作为主键,我也反对这种做法,理由是:复合主键常常导致不良的外键,即当连接表成为另一个从表的主表,而依据上面的第二种方法成为这个表主键的一部分,然,这个表又有可能再成为其它从表的主表,其主键又有可能成了其它从表主键的一部分,如此传递下去,越靠后的从表,其主键将会包含越多的列了。

        3. 永远也不要更新主键。实际上,因为主键除了惟一地标识一行之外,再没有其他的用途了,所以也就没有理由去对它更新。如果主键需要更新,则说明主键应对用户无意义的原则被违反了。

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

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

        5. 主键应当有计算机自动生成。如果由人来对主键的创建进行干预,就会使它带有除了惟一标识一行以外的意义。一旦越过这个界限,就可能产生认为修改主键的动机,这样,这种系统用来链接记录行、管理记录行的关键手段就会落入不了解数据库设计的人的手中。

分享到:
评论

相关推荐

    数据库主键和外键设计的原则.doc

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

    如何区分SQL数据库中的主键与外键

    在SQL数据库中,主键和外键是关系型数据库设计的核心概念,它们对于确保数据的完整性和一致性至关重要。主键是表中一个或一组字段,它们的值在该表内是唯一的,用来唯一标识一条记录。例如,在学生表中,学号可能是...

    主键和外键.doc

    #### 四、数据库中主键和外键的设计原则 主键和外键是构建有效的关系数据库的基础。合理的设计对数据库的性能和可用性至关重要。 1. **主键**: - 主键应当是对用户没有意义的,以避免用户对其产生误解。 - 主键...

    深入理解数据库关系:主键与外键的选择与应用

    主键和外键是数据库设计中不可或缺的部分。正确选择和使用它们可以确保数据的完整性、一致性和安全性。在实际开发中,应根据业务需求和数据模型仔细设计主键和外键,以实现最优的数据管理和性能。 本文通过详细解释...

    SQL中的主键和外键.doc

    #### 三、数据库中主键和外键的设计原则 1. **主键设计原则**: - **无意义性**:主键应该对用户没有实际意义,避免用户对主键的依赖。 - **单列性**:主键最好为单列,以提高连接和筛选操作的效率。 - **不可...

    数据库中表的主键设计原则收藏.doc

    "数据库中表的主键设计原则收藏" 在设计数据库表时,主键的设计是非常重要的一步。一个好的主键设计可以提高数据库的性能和可维护性,而一个糟糕的主键设计可能会带来一系列的问题。本文将讨论数据库中表的主键设计...

    数据库表设计命名规范.doc

    数据库表设计命名规范是软件开发中非常重要的环节,它直接影响着代码的可读性、维护性和团队协作效率。本文档主要针对航运系统的数据库表、字段、索引、主键和外键的命名进行了详细的规范说明。 首先,表名命名遵循...

    数据库设计原则14法则

    数据库设计是IT领域中至关重要的一个环节,它直接影响着系统的性能、可维护性和数据的一致性。以下是关于“数据库设计原则14法则”的详细解析: 1. 原始单据与实体之间的关系:数据库设计时,需要考虑原始数据源...

    数据库技术与应用 外键约束-A学习任务书.doc

    在数据库技术中,外键约束是一项至关重要的概念,它确保了数据的一致性和完整性。外键约束是关系数据库设计中的一个关键元素,特别是在实施参照完整性的场景下。本学习任务书将带你深入理解和掌握外键约束的应用。 ...

    数据库设计原则总结

    本文总结了数据库设计的重要原则,包括原始单据与实体之间的关系、主键与外键的设计、基本表的性质、范式标准、通俗地理解三个范式、要善于识别与正确处理多对多的关系、主键PK的取值方法等七个方面的内容。这些原则...

    数据库答案

    在数据库画板中创建数据表的SQL语句示例为:`create table &lt;表名&gt; ( &lt;列名&gt; &lt;类型&gt; not null, &lt;列名&gt; &lt;类型&gt; notnull )`。 【菜单设计】 PowerBuilder支持多种菜单类型,如下拉式菜单、级联菜单、图标按钮式菜单和...

    数据库设计原则数据库设计原则.docx

    本文将从八个方面详细讲解数据库设计原则,包括原始单据与实体之间的关系、主键与外键、基本表的性质、范式标准、通俗地理解三个范式、要善于识别与正确处理多对多的关系、主键 PK 的取值方法、正确认识数据冗余等。...

    数据库建表原则-设计思想-查询优化

    在数据库设计中,主键和外键是非常重要的概念。主键是用于唯一标识表中每一条记录的字段或字段集合,而外键则用于建立不同表之间的联系。在一个完整的数据库设计中,每个实体至少需要有一个主键或者外键,以便于建立...

    数据库建表原则 数据库建表原则

    主键与外键的设计,在全局数据库的设计中,占有重要地位。 3. 基本表的性质 基本表与中间表、临时表不同,因为它具有四个特性:原子性、原始性、演绎性和稳定性。理解基本表的性质后,在设计数据库时,就能将基本...

    经典数据库设计14个原则

    - **时间成本考虑**:在数据库的设计和维护过程中,需要考虑时间和资源的成本效益。 - **策略建议**:定期评估数据库性能,并根据需要进行优化。此外,在进行重大变更之前,评估其对系统性能的影响。 #### 11. 约束...

    数据库设计及优化规范

    - **外键**:`FK_&lt;TABLENAME&gt;_&lt;COLNAME1&gt;_&lt;COLNAME2&gt;/FK_&lt;TABLENAME&gt;_0x` (X=1,2,3)。 - **唯一约束及对应索引**:`UK_&lt;TABLENAME&gt;_&lt;COLNAME1&gt;_&lt;COLNAME2&gt;/UK_&lt;TABLENAME&gt;_0x` (X=1,2,3)。 - **检查**:`CHK_...

    数据库表设计原则技巧

    主键与外键是数据库设计中的核心元素,用于确保数据的完整性和一致性。一般来说,一个实体至少需要有一个主键或外键。在E-R图中,位于叶子位置的实体可以定义主键,也可以不定义主键(因为它没有下级实体),但必须...

    数据库设计原则

    其次,主键和外键是数据库设计的核心元素。主键用于唯一标识一个实体,而外键则用于关联不同的实体。在E-R图中,位于叶子位置的实体如果没有子孙,可以定义主键,但必须有外键来连接其父实体。主键和外键的配合构建...

    html考试系统

    需要理解关系型数据库的基本概念,如ER模型、字段类型、主键、外键等,以及SQL查询语句的编写。 7. 安全性与性能:系统应考虑防止SQL注入、XSS攻击等安全问题,同时优化加载速度和用户体验,如压缩代码、利用缓存、...

Global site tag (gtag.js) - Google Analytics