sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Hur man delar upp en kolumn i flera variabelkolumner

Att dela upp dessa data i separata kolumner är en mycket bra början (koma-separerade värden är en kätteri). Ett "variabelt antal egenskaper" bör dock vanligtvis modelleras som en en-till- många relationer .

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 är en främmande nyckel till main_entity.id .

Grattis, du är på rätt väg, detta kallas normalisering . Du är på väg att nå Första normala formuläret.

Varsågod, dock bör dessa egenskaper ha en förnuftigt liknande karaktär (dvs. alla telefonnummer, eller adresser, etc.). Fall inte in på den mörka sidan (a.k.a. Entity-Attribute-Value anti-mönster ), och bli frestad att kasta alla egenskaper i samma tabell. Om du kan identifiera flera typer av attribut, lagra varje typ i en separat tabell.



  1. Hur man kopplar från en databas och går tillbaka till standarddatabasen i PostgreSQL?

  2. SQL för att generera en lista med siffror från 1 till 100

  3. Hur man använder array_agg() för varchar[]

  4. RMySQL-systemfel:10060