将额外数据与MySQL列相关联

时间:2010-11-29 19:48:40

标签: mysql entity-relationship relational-database

我有一个典型的表格,例如

id(int) name(varchar) address(varchar) date(datetime)

我还有一个引用每个验证函数的表,例如

id(int) function(varchar) fail_message(varchar)
   1    email             Please enter a valid email address
   2    required          This field can not be left blank

我希望能够将第一个表中的每个列与一个或多个验证器相关联。

我能想到这样做的唯一方法是将ID填入列名称,例如(列名:电子邮件; 1; 2)并通过PHP跟踪它,但这看起来非常混乱。

对关系数据库有一个好方法吗? NoSQL实现会更好地适应这个问题吗?

2 个答案:

答案 0 :(得分:2)

与Dan说的相似,在sql中实现关联的一种相对简单的方法是执行以下操作:

id(int) function_id(int) col_name(varchar)
1       1                address
2       1                second_address
3       2                address
4       2                name

然后当您想要进行故障检查时,使用上面的表将错误消息链接到列名称(例如'select_table from above_table where col_name =“address”'),然后查询故障表。随后可以使用带有连接的视图组合这些表,以便单个查询就足够了。

希望这有帮助。

答案 1 :(得分:0)

把它放在另一个描述表的列的表中,奇怪的是这非常类似于扩展列表和其他列的表列

让我们假设你扩展你的例子,说明了本地化字符串,这意味着fail_message将成为fail_message_id,而表fail_message将包含列(id,language,message)