Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

SQL Come dividere una colonna in più colonne variabili

Dividere questi dati in colonne separate è un ottimo inizio (i valori separati dal coma sono un'eresia). Tuttavia, un "numero variabile di proprietà" dovrebbe in genere essere modellato come un one-to- molte relazioni .

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 è una chiave straniera a main_entity.id .

Congratulazioni, sei sulla strada giusta, questa si chiama normalizzazione . Stai per raggiungere la First Normal Form.

Attenzione, tuttavia, queste proprietà dovrebbero avere una natura sensibilmente simile (ad es. tutti i numeri di telefono, o indirizzi, ecc.). Non cadere nel lato oscuro (aka the Anti-modello entità-attributo-valore ), ed essere tentato di inserire tutte le proprietà nella stessa tabella. Se riesci a identificare diversi tipi di attributi, archivia ciascun tipo in una tabella separata.