繁体   English   中英

创建没有主键的MySQL表

[英]Create MySQL table without Primary Key

我有一个不需要主键的表。 它由4列组成,分别是电子邮件,日期,时间,消息。 每次用户登录,注销或执行任何重要的特定操作时,我都会记录电子邮件,日期,时间和操作(消息)。 目前,该表已使用电子邮件作为主键进行设置,但我无法在同一电子邮件中插入多个记录。 我想我可以将时间用作PK,但是有可能两个动作同时出现。 我如何不使用PK就使用桌子? 我尝试将其关闭以用于“电子邮件”列,但它不允许我这样做。

是,因为您已将电子邮件字段定义为主要字段,所以它只能保存唯一数据,并且不允许重复。

因此,您有两种选择:

1:删除电子邮件字段作为主键

2:将新的整数字段添加为具有自动增量的主键(我希望使用此整数)

您可以使用自然主键 ,该主键可以是电子邮件+日期+时间+操作的组合。 这种组合将是独特的。 同一用户不可能同时执行2个不同的操作。 这将帮助您保持信息的完整性。

希望这对您有所帮助。

要决定一个表的主键,首先要考虑以下几点(适用于innodb):

  1. 数据在写入后将如何访问(如果不查询,为什么要存储它?)。 如果您关心读取性能,则应按主键查询数据,因为对于innodb,主键是唯一可能的聚集索引。

  2. 数据是按主键排序存储的,因此,如果您关心写性能,则应按主键写入理想排序的数据,如果您具有auto_increment,则该数据总是自动发生的。 另外,您未明确为其指定主键的表将具有一个隐藏的auto_increment字段,您将无法访问该字段,即,以相同的成本获得的收益更少。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM