Come funziona questo esempio normalizzato?

0

Ho avuto il seguente schema DB:

Customer   Car     Rental
-------   ----     ------
Name      Name     Car_ID
ID        ID       Customer_ID
                   Date

Si dice che non sia normalizzato in quanto la data può ripetersi (più clienti possono noleggiare un'auto nello stesso giorno). Quindi l'insegnante ha detto che dovrebbe essere come:

Customer  Car Date
------    --- ----

e collegati con chiavi esterne.

Beh, non lo capisco - come posso quindi inserire semplicemente "John ha noleggiato una BMW il 2/3/2013"?

    
posta John V 15.11.2013 - 13:56
fonte

1 risposta

4

Entrerai in questo fatto creando (o guardando in alto) un record in Date per rappresentare il 2 marzo 2013, quindi crea un nuovo record in Rental con tre chiavi esterne. (Hai ancora bisogno della tabella Rental , altrimenti non puoi rappresentare arbitrari ri-affitti di un cliente o di un'auto - o alla stessa data.)

Tuttavia, questo è sicuramente inutile. Una data è una informazione scalare: il fatto che sia formattata XX / YY / ZZZZ o MMM DD, YYYY non influisce sulla sua identità e le regole di formattazione non dovrebbero essere imposte dall'archiviazione del modulo di visualizzazione nei database. La mia opinione è che l'archiviazione delle date come campo scalare in un'altra tabella (qui: Rental ) è perfettamente normale: una data è effettivamente un numero del giorno, cioè non peggiore di qualsiasi altra chiave esterna che useresti.

    
risposta data 15.11.2013 - 14:04
fonte