在多个表中防止MySQL重复插入

时间:2014-07-30 16:02:45

标签: mysql

我正在尝试将不同的用户列表导入mysql数据库中的不同表。 样本表结构:

uid | uname |电子邮件|

任何表中的uid字段都不应包含重复值。实现这一目标的最简单方法是什么?有帮助吗?

1 个答案:

答案 0 :(得分:1)

这听起来像是一个不正确的数据模型。这些记录很可能应该在一个表中,而不是很多。 (虽然可能存在您尚未分享的信息,证明您的方法合理,但我确实怀疑它。)

可以帮助您的一个想法是将标识符提取到公共父表中,其他表继承了#34;身份标识。例如,您可能有这样的父表:

BaseUser
--------
uid (int, PK)
etc.

然后其他类型的用户表可能如下所示:

DerivedUser
--------
uid (int, PK, FK to BaseUser.id)
etc.

如果所有"派生"表格将uid列作为BaseUser表格uid列的外键,然后它们都会使用该集中式唯一强制执行。我相信这被称为" supertyping"表。从概念上讲,这是设计数据模型,使得一组不相关的记录的标识符与这些记录的详细信息分开(因此,起源于单独的表中) )。