我可以知道我的数据库项目中是否能有6个主键。我刚刚开始创建我的数据库项目,并知道有一个和两个是可能的但不确定6.请帮助!
答案 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 ,这意味着它包含维护该密钥唯一性所需的最小列集。
根据您的评论,我怀疑您实际上是在询问是否有一个具有多个属性而非多个键的键。差异很重要,你应该明白这一点。您可能需要考虑学习一本书或参加数据库设计基础课程,以帮助您回答类似这样的问题。