Immagina un coiffeur, con i suoi servizi:
+----+-----------------+--------+
| id | name | amount |
+----+-----------------+--------+
| 1 | hair cut | 40 |
| 2 | shampoo | 10 |
| 3 | french manicure | 90 |
+----+-----------------+--------+
Immagina una tabella di transazioni:
+----+------------+------------------+
| id | id_service | date_transaction |
+----+------------+------------------+
| 1 | 1 | 01/01/2015 |
| 2 | 1 | 02/01/2015 |
| 3 | 1 | 02/01/2015 |
| 4 | 2 | 02/01/2015 |
| 5 | 2 | 02/01/2015 |
| 6 | 1 | 06/01/2015 |
| 7 | 1 | 06/01/2015 |
| 8 | 3 | 06/01/2015 |
| 9 | 2 | 06/01/2015 |
| 10 | 2 | 10/01/2015 |
| 11 | 1 | 10/01/2015 |
| 12 | 3 | 10/01/2015 |
| 13 | 1 | 10/01/2015 |
| 14 | 2 | 10/01/2015 |
| 15 | 2 | 11/01/2015 |
| 16 | 1 | 16/01/2015 |
+----+------------+------------------+
Con un semplice INNER JOIN
possiamo leggere, ad esempio, la SOMMA di un giorno specifico.
Ma il nostro coiffeur non è una tecnologia addicted e domani cambierà ogni servizio.
Quindi, per evitare questo dramma, come devo impostare la mia webapp?
1) Ripeto service.name e amount.name ogni volta nella tabella delle transazioni? Quindi, io non uso l'INNER JOIN?
1a) Potrei perdere anche la possibilità di GROUP BY, senza ID numerico. E non posso usarli dalla tabella dei servizi perché la modifica del servizio (o, peggio) viene cancellata ...
2) Devo bloccare l'utente per modificare / cancellare i suoi servizi?
3) Quale considerazione?