我可以创建带有额外字符的复合键吗?

问题描述 投票:0回答:1

我正在使用MySQL构建一个新的数据库,以存储从多个项目中汲取的经验教训。当我们在办公室中谈论此问题时,我们通过项目编号和课程编号来引用课程,即PR12-81,其中PR12引用项目,而81引用该项目中的特定课程。我也希望数据库中的主键中也有连字符。

在SQL中定义组合键时,我可以使其引用项目和课程,但不带连字符,即PR1281。我还考虑过创建一个单独的数据类型为CHAR(1)的列,在每行中都添加一个连字符,并说明PK由3列组成。

还有另一种方法可以指定首选格式的主键吗?

mysql sql database composite-primary-key
1个回答
0
投票

让表的主键是一个无意义的自动递增数字,没有任何“含义”。然后,在该表中定义two列:project_numberlesson_number。如果两个字段必须唯一,请定义一个包含两个字段的UNIQUE索引。

Do n't(!)创建数据库密钥,这些密钥将信息嵌入到其中,即使企业这样做也是如此。如果企业需要引用诸如PR12之类的字符串,那么...创建一个列来存储适当的值,或者使用一对多表。根据需要使用索引来增强唯一性。

我现在已经描述了[[four列:]的通知(!):

    基于自动增量的“实际”主键,不包含任何信息。
  1. project_number列,可能是projects表的外键。
  2. 同上lesson_number。 (如果需要,可使用UNIQUE复合
  3. index
。)包含“企业使用的字符串的列(或表)。”
  • 随着时间的流逝,商业惯例

    do

  • 发生变化。有一天,您可能会..不,您will ... ...遇到一个“企业使用的字符串”,该字符串是由做此类事情的人分配的“ [错误地]”!您的数据库设计需要妥善处理此问题。我所描述的模式称为第三范式。如果您还没有Google,请搜索“范式”。
    © www.soinside.com 2019 - 2024. All rights reserved.