2010-11-29 4 views
0

Ich habe eine typische Tabelle, z.Zusätzliche Daten mit einer MySQL-Spalte verknüpfen

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

Ich habe auch eine Tabelle, die Validierungsfunktionen für jedes referenziert, z.

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

Ich möchte in der Lage sein, jede Spalte aus der ersten Tabelle mit einem oder mehreren dieser Validatoren zu verknüpfen.

Die einzige Möglichkeit, die ich dabei tun kann, ist, die IDs in die Spaltennamen z. (Spaltenname: E-Mail; 1; 2) und verfolgen Sie es durch PHP, aber das scheint sehr chaotisch.

Gibt es eine gute Möglichkeit, dies mit relationalen Datenbanken zu tun? Würde eine NoSQL-Implementierung dieses Problem besser lösen?

Antwort

2

Ähnlich wie Dan sagte, eine relativ einfache Art und Weise eine Verbindung in sQL zu implementieren wäre folgendes zu tun:

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

Wenn Sie die Fehlerprüfung durchführen möchten, verwenden Sie die obige Tabelle, um die Fehlermeldung mit dem Spaltennamen zu verknüpfen (z. 'wähle function_id von oben_tabelle, wobei col_name = "Adresse"') und dann die Fehlertabelle abfragen. Diese Tabellen könnten anschließend unter Verwendung einer Sicht mit einem Join kombiniert werden, so dass eine einzelne Abfrage ausreichen würde.

Hoffe, das hilft.

0

dieses in einer anderen Tabelle, die die Spalten für Tabellen beschreibt seltsam das ist sehr ähnlich wie die Tabelle erstreckt, die Tabellenspalten mit zusätzlichen Spalten aufgelistet

lassen Sie uns sagen, wenn Sie Ihr Beispiel mit sagen lokalisierten Strings erweitern, das würde bedeuten, die fail_message wäre ein fail_message_id werden und die Tabelle fail_message die Spalten (id, Sprache, message) haben würde