1

请问我可以在我的数据库项目中有 6 个主键吗?我刚刚开始创建我的数据库项目,并且知道一和二是可能的,但不确定是六。请帮助!

4

5 回答 5

3

多主键是什么意思?你可以解释吗?如果在数据库中您要询问多个主键,那么您可以占用每个表的主键。但在同一个表中,两个或多个主键是不可能的。

一张表只能有一个主键和多个唯一键,这将是您的复合键。

示例:-员工表

     EmpID(Not null)   ManagerID(null)
     001               001
     002               002

这里 EmpId 是您的主键,经理 ID 是您的复合键。

像这样,您可以使表格的列独一无二。

于 2012-10-20T05:34:31.653 回答
2

当你说不止一个时,它就变成了一个复合键。从技术上讲,您可以拥有一个包含多于一列的复合键。但我真的很想知道这样一个用例是什么,它满足了在表中将 6 个键作为复合键的要求。

于 2012-05-13T05:02:15.290 回答
2

我猜你是想问如何在一个表中拥有多个主键,而不是在数据库中。(严格来说,这使它成为一个复合键)。

你当然可以做到这一点。例如,mysql中的语法是:

CREATE TABLE tbl_name (
  col1 int,
  col2 int,
  col3 int,
  col4 int,
  col5 int,
  col6 int,
  col7 int,
  col8 int,
  col9 int,
  PRIMARY KEY (col1, col2, col3, col4, col5, col6));

话虽如此,除非您真的知道自己在做什么,否则这可能不是您应该做的。我当然曾使用过具有大型复合键的非常复杂的业务模型。

(例如,一个客户有很多表,组合键中有 5 个字段,例如,代表某些库存/订购行项目的 salesOrganizationNumber、salesRepNumber、locationId、styleNumber、styleType。)

但是您的问题是如此基本,我怀疑您可能应该问一个关于如何设计模式的更详细的示例问题,您可能会发现您的主键会小得多。

于 2012-05-13T05:16:17.757 回答
2

您可以在数据库中拥有与表一样多的主键 - 每个表允许一个主键。

当然,每个表可以有多个索引,但它们不被视为主键。

您还可以从多列(任意多列)构造主键,但这仍然是一个主键,只是一个复合主键。

它与多个主键有很大不同,因为前者允许复制键的复合部分,只要完整的键是唯一的。后者(如果允许)将要求每个部分都是唯一的,因为这是主键的属性。

于 2012-05-13T05:25:11.857 回答
2

是的,每个表可以有多个键,每个键中可以有多个属性。根据定义,每个键都必须是不可约的,这意味着它包含保持该键唯一性所需的最小列集。

根据您的评论,我怀疑您实际上是在询问具有多个属性而不是多个键的 ONE 键。区别很重要,你应该明白这一点。您可能需要考虑学习一本书或参加有关数据库设计基础的课程,以帮助您回答此类问题。

于 2012-05-13T08:33:22.020 回答