6数据库中的主键

时间:2012-05-13 04:56:26

标签: database primary-key

我可以知道我的数据库项目中是否能有6个主键。我刚刚开始创建我的数据库项目,并知道有一个和两个是可能的但不确定6.请帮助!

5 个答案:

答案 0 :(得分:3)

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

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

示例:-Employee table

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

此处EmpId是您的主键,经理Id是您的复合键。

通过这种方式,您可以使表格的列独一无二。

答案 1 :(得分:2)

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

答案 2 :(得分: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。)

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

答案 3 :(得分:2)

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

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

您还可以从多个列构建主键(尽可能多的列),但这仍然是一个主键,只是一个复合键。

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

答案 4 :(得分:2)

是的,每个表可以有多个密钥,每个密钥可以有多个属性。根据定义,每个密钥必须是 irreducible ,这意味着它包含维护该密钥唯一性所需的最小列集。

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