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?