Ich bin neu in Datenbanken und MySQL
insbesondere. Angenommen, ich muss flache Schlüsselwertdatenstrukturen in MySQL
speichern. Jede Datenstruktur hat einige erforderliche Felder und eine Anzahl von optionalen Feldern, die nicht im Voraus bekannt sind und häufig geändert werden können.Wie speichere ich Schlüsselwertpaare in MySQL?
Ich muss alle Datenstrukturen von einem der erforderlichen Felder abrufen und wahrscheinlich löschen.
So würde Ich mag diese Daten speichern Strukturen in einer Tabelle wie folgt aus: (nur eine Copy-Paste aus dem Internet eher als Arbeitscode)
CREATE TABLE my_data_structures (
my_data_structure_id INT NOT NULL,
my_required_field1 VARCHAR NOT NULL,
my_required_field2 INT NOT NULL,
PRIMARY KEY (my_data_structure_id)
)
CREATE TABLE my_optional_fields (
my_optional_field_name VARCHAR NOT NULL,
my_optional_field_value VARCHAR NOT NULL,
FOREIGN KEY (my_data_structure_id) REFERENCES my_data_structures(my_data_structure_id)
)
Ist dieser Ansatz sinnvoll? Wie definiert man die primary key
für die zweite Tabelle?
Werfen Sie einen Blick auf [EAV-Modell] (https://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model) –
@PaulSpiegel Danke. Ich habe es nur ein bisschen gegoogelt. Viele Leute sagen "EAV" ist BÖSE. – Michael
Es ist leicht zu sagen, etwas ist böse, ohne eine geeignete Alternative zu bieten. Allerdings - ich sage nicht, dass du EAV benutzen solltest - ich sage, was du versuchst zu tun ** ist ** ein EAV-Modell. –