我有一个典型的表格,例如
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实现会更好地适应这个问题吗?
答案 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)