sql >> Database >  >> RDS >> Sqlserver

SQL Een kolom splitsen in meerdere variabele kolommen

Het splitsen van deze gegevens in afzonderlijke kolommen is een zeer goed begin (door coma gescheiden waarden zijn een ketterij). Een "variabel aantal eigenschappen" moet echter doorgaans worden gemodelleerd als een één-op- veel relaties .

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 is een buitenlandse sleutel naar main_entity.id .

Gefeliciteerd, je bent op de goede weg, dit heet normalisatie . U staat op het punt de Eerste normaalvorm te bereiken.

Maar let op, deze eigenschappen moeten een redelijk gelijkaardig karakter hebben (dwz alle telefoonnummers, of adressen, enz.). Val niet in de donkere kant (ook bekend als de Entiteit-kenmerk-waarde anti-patroon ), en kom in de verleiding om alle eigenschappen in dezelfde tabel te gooien. Als u verschillende typen attributen kunt identificeren, sla elk type dan op in een aparte tabel.



  1. SQLite JSON_TREE()

  2. Inleiding tot HDFS | Wat is HDFS en hoe werkt het?

  3. Verbinding maken met de MySQL-database

  4. MySQL:geneste set is traag?