请问我可以在我的数据库项目中有 6 个主键吗?我刚刚开始创建我的数据库项目,并且知道一和二是可能的,但不确定是六。请帮助!
5 回答
多主键是什么意思?你可以解释吗?如果在数据库中您要询问多个主键,那么您可以占用每个表的主键。但在同一个表中,两个或多个主键是不可能的。
一张表只能有一个主键和多个唯一键,这将是您的复合键。
示例:-员工表
EmpID(Not null) ManagerID(null)
001 001
002 002
这里 EmpId 是您的主键,经理 ID 是您的复合键。
像这样,您可以使表格的列独一无二。
当你说不止一个时,它就变成了一个复合键。从技术上讲,您可以拥有一个包含多于一列的复合键。但我真的很想知道这样一个用例是什么,它满足了在表中将 6 个键作为复合键的要求。
我猜你是想问如何在一个表中拥有多个主键,而不是在数据库中。(严格来说,这使它成为一个复合键)。
你当然可以做到这一点。例如,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。)
但是您的问题是如此基本,我怀疑您可能应该问一个关于如何设计模式的更详细的示例问题,您可能会发现您的主键会小得多。
您可以在数据库中拥有与表一样多的主键 - 每个表允许一个主键。
当然,每个表可以有多个索引,但它们不被视为主键。
您还可以从多列(任意多列)构造主键,但这仍然是一个主键,只是一个复合主键。
它与多个主键有很大不同,因为前者允许复制键的复合部分,只要完整的键是唯一的。后者(如果允许)将要求每个部分都是唯一的,因为这是主键的属性。
是的,每个表可以有多个键,每个键中可以有多个属性。根据定义,每个键都必须是不可约的,这意味着它包含保持该键唯一性所需的最小列集。
根据您的评论,我怀疑您实际上是在询问具有多个属性而不是多个键的 ONE 键。区别很重要,你应该明白这一点。您可能需要考虑学习一本书或参加有关数据库设计基础的课程,以帮助您回答此类问题。