2010-11-29 60 views
0

我有一个典型的表,例如将额外数据与MySQL列关联

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

类似于丹说,在SQL中实现关联一个相对容易的方法是做到以下几点:

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

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

希望这会有所帮助。

0

把这个在另一张表描述了表中的列奇怪的是这很像延伸,列出了其他列的表列的表

让你用说的本地化字符串这将意味着,延长您的例子说,在fail_message将成为fail_message_id和表fail_message将有列(ID,语言,消息)