【发布时间】:2013-04-10 03:45:12
【问题描述】:
我正在使用 php 开发一个记录管理应用程序。我设计了一个名为记录的表,其中包含字段id、recordname、recordvalue、recordid。例如,如果一条记录由 3 个数据组成:firstname、lastname、gender。 3 个数据(John Doe Male、Jane Doe Female 和 Sherlcok Holmes Male)插入到下表中-
----+-------------+--------------+-----------
id | recordname | recordvalue | recordid
----+-------------+--------------+-----------
1 | firstname | John | 001
2 | lastname | Doe | 001
3 | gender | Male | 001
4 | firstname | Jane | 002
5 | lastname | Doe | 002
6 | gender | Female | 002
7 | firstname | Sherlock | 003
8 | lastname | Holmes | 003
9 | gender | Male | 003
----+-------------+--------------+-----------
我的问题是当我要在表中插入新记录时,我需要检查记录是否有任何重复。这意味着可以随时复制不同记录的任何字段,但不能复制具有相同记录值的所有字段。从前面的示例记录中,具有 John Doe Female、Jane Doe Male、Sherlock Doe Male 等值的记录都可以,但不希望再次插入 John Doe Male,它会给出错误。
如何使用 PHP 轻松实现这一点?
提前致谢。
【问题讨论】:
-
我无法理解您的数据库结构,为什么您要存储不同的名字、姓氏和性别记录
-
您在表结构中使用这种方法(通常称为实体属性值;简称 EAV)是否有原因?与更传统的规范化数据结构相比,它通常不太适合与关系数据库一起使用。
-
@MarkBannister 我不明白他为什么使用这种结构
-
@maksbd19 先学习如何规范化表格
-
@YadavChetan:在没有更多信息的情况下,我也不能,尽管在某些情况下这种方法是合适的——请参阅en.wikipedia.org/wiki/…。