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.