Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SQL Comment diviser une colonne en plusieurs colonnes variables

Diviser ces données en colonnes séparées est un très bon début (les valeurs séparées par des virgules sont une hérésie). Cependant, un "nombre variable de propriétés" doit généralement être modélisé comme un one-to- beaucoup de relations .

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 est une clé étrangère à main_entity.id .

Félicitations, vous êtes sur la bonne voie, cela s'appelle normalisation . Vous êtes sur le point d'atteindre la Première forme normale.

Attention, cependant, ces propriétés doivent avoir une nature sensiblement similaire (c'est-à-dire tous les numéros de téléphone, ou adresses, etc.). Ne tombez pas du côté obscur (alias le Anti-modèle Entité-Attribut-Valeur ), et être tenté de jeter toutes les propriétés dans la même table. Si vous pouvez identifier plusieurs types d'attributs, stockez chaque type dans un tableau séparé.