2010-11-29 85 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,語言,消息)