Un negozio on line chiede che sia progettato e realizzato un database per l’organizzazione e la gestione di un portale per la vendita di libri su Internet. Il negozio richiede che:
• il Catalogo dei libri sia organizzato per:
− Reparti (in ordine alfabetico: architettura e urbanistica, arte, classici greci e latini, cucina e casa, diritto, economia e management, fantascienza e fantasy, filosofia, fumetti, ...)
• ciascun Reparto sia organizzato in libri:
− “Da non perdere” caratterizzati da uno sconto del 20% sul prezzo di copertina
− “I più venduti” caratterizzati dal maggior numero di copie vendute negli ultimi 30 giorni
− “Ultimi arrivi” caratterizzati dai titoli aggiunti negli ultimi 30 giorni
− “Offerte speciali” caratterizzate da uno sconto del 25% sul prezzo di copertina
− “Remainders” caratterizzati da uno sconto del 50% sul prezzo di copertina
• ciascun libro in negozio sia archiviato con le seguenti ulteriori informazioni:
− titolo, autore, prezzo di copertina, sconto (eventuale), dati (numero di pagine, rilegato, ...), anno di pubblicazione, editore, collana, immagine (foto della copertina), data di archiviazione
• gli utenti abilitati all’acquisto on line siano registrati con i seguenti dati:
− nome e cognome, indirizzo, codice di avviamento postale, città, nazione, telefono, fax, e-mail, password, numero di carta di credito, tipo di carta di credito (Visa, CartaSi, Mastercard, ...), data di scadenza della carta di credito
• gli utenti possano chiedere, in fase di acquisto, che il negozio emetta fattura
• il Carrello Acquisti sia organizzato come segue:
− numero di copie acquistate, titolo, autore, prezzo, disponibilità (giorni, settimane, ...), togli dal carrello (casella di spunta)
• il riepilogo degli ordini sia organizzato come segue:
− data dell’ordine, numero d’ordine
− dettagli dell’ordine (riferimento articolo, quantità, titolo, prezzo di copertina, prezzo scontato, stato dell’ordine, evasione prevista dalla data dell’ordine).
Il candidato, dopo aver fatto le eventuali ipotesi aggiuntive:
a. Fornisca:
1. lo schema concettuale e lo schema logico del database
2. la definizione delle relazioni in linguaggio SQL.
b. Implementi le seguenti query:
1. Ricerca per Reparto: scelto un Reparto, il numero di libri “Da non perdere” ed il numero di libri “I più venduti” con i relativi dettagli
2. Ordini: gli ordini in corso, con dettagli, di un dato utente.
c. Scriva in un linguaggio lato server, il codice di almeno una delle seguenti pagine del portale:
1. con accesso libero, la pagina utile a visualizzare i Reparti e, per ciascun reparto, la pagina che implementa la query n. 1;
2. con accesso riservato agli utenti registrati, la composizione degli ordini in corso.