SQL Dojo Beta
Modellazione

Normalizzare o denormalizzare?

Memorizza ogni fatto una sola volta dove i dati vengono scritti; copialo dove i dati vengono soprattutto letti.

Le tabelle normalizzate (3NF) evitano le anomalie di aggiornamento, inserimento e cancellazione: sono le tabelle dell'applicazione. Tabelle larghe e denormalizzate vanno bene per l'analisi quando sono ricostruite dalla sorgente normalizzata. Le viste e le viste materializzate sono una via di mezzo.

-- A flat export repeats the customer on every order: the customer is an entity of its own.
WITH flat_orders(order_id, customer_email, customer_city) AS (VALUES
  (1, 'lea@example.com', 'Lyon'), (2, 'lea@example.com', 'Lyon'),
  (3, 'tom@example.com', 'Paris'), (4, 'lea@example.com', 'Lyon'))
SELECT DISTINCT customer_email, customer_city
FROM flat_orders
ORDER BY customer_email;
customer_emailcustomer_city
lea@example.comLyon
tom@example.comParis
Provalo in Randori