Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL So teilen Sie eine Spalte in mehrere Variablenspalten auf

Das Aufteilen dieser Daten in separate Spalten ist ein sehr guter Anfang (Koma-getrennte Werte sind eine Ketzerei). Eine „variable Anzahl von Eigenschaften“ sollte jedoch typischerweise als one-to- viele Beziehung .

CREATE TABLE main_entity (
  id INT PRIMARY KEY,
  other_fields INT
);

CREATE TABLE entity_properties (
  main_entity_id INT PRIMARY KEY,
  property_value INT,
  FOREIGN KEY (main_entity_id) REFERENCES main_entity(id)
);

entity_properties.main_entity_id ist ein Fremdschlüssel zu main_entity.id .

Herzlichen Glückwunsch, Sie sind auf dem richtigen Weg, das nennt sich Normalisierung . Sie sind dabei, die Erste Normalform. zu erreichen

Beachten Sie jedoch, dass diese Eigenschaften eine vernünftig ähnliche Natur haben sollten (dh alle Telefonnummern oder Adressen usw.). Fallen Sie nicht auf die dunkle Seite (alias ). Entity-Attribute-Value Anti-Pattern ), und seien Sie versucht, alle Eigenschaften in dieselbe Tabelle zu werfen. Wenn Sie mehrere Attributtypen identifizieren können, speichern Sie jeden Typ in einer separaten Tabelle.