1. Si consideri il seguente schema di base di dati:

    Citta(Id, NumeroAbitanti, Provincia) Ditta(P.IVA, Nome NumeroImpiegati, CapitaleSociale) HaAvutoSede(P.IVADitta, IdCitta, DaAnno, AAnno)

    1. Definire opportune chiavi primarie e chiavi esterne per lo schema, indicando per le chiavi esterne la relazione referente e riferita.
    2. Scrivere i comandi SQL per:
      1. Creare la tabella HaAvutoSede specificando gli opportuni vincoli di integrità e le opzioni per gestire l’integrità referenziale (motivando le scelte effettuate per la gestione dell’integrità referenziale)
      2. Aggiungere alla tabella HaAvutoSede un vincolo che impone che la fine del periodo in cui una ditta ha avuto sede in una città non può essere precedente al suo inizio
      3. Rimuovere dalla tabella Città l’attributo Provincia
  2. Si consideri il seguente schema di base di dati:

    Persona(CF, Nome, Cognome, DataNascia, Indirizzo, Genere) Citta(Id, Nome, NumeroAbitanti, Regione) HaResidenza(CF(persona), Id(citta), DaAnno, AAnno) E_Nata(CF(persona), Id(citta)

    Formulare in SQL le interrogazioni per restituire:

    1. Il codice delle città in cui non sono mai nate persone che si chiamano Mario Rossi o Lucia Bianchi
    2. Per le persone che hanno avuto la loro residenza in almeno una regione con quattro città sopra i 100000 abitanti, il loro CF, nome, cognome e la durata massima della loro residenza in una città
    3. Il nome e cognome delle persone nate dopo il 201 che non hanno mai avuto la loro residenza in una città siciliana.
    4. Per ogni anno e per ogni identificatore di città, il numero di persone di genere femminile che sono nate in quella città (ad esempio 2020, 123: numero di persone di genere femminile che sono nate nella città con id 123 nel 2020).
  3. Si consideri lo schema ER di seguito rappresentato, dove la gerarchia di generalizzazione è totale/condivisa.

    Untitled

    Si consideri il seguente carico di lavoro: lettura di a12 20 volte al giorno, lettura di E6 30 volte al giorno)

    Si richiede di:

    1. Illustrare, in linguaggio naturale come si è ristrutturato lo schema, giustificando le scelte in base al carico di lavoro, ove più opzioni siano possibili per la ristrutturazione. Se vengono aggiunte delle entità indicare per ognuna di esse: nome, nome degli attributi e relativi vincoli di cardinalità ed identificatori. Se si aggiungono delle associazioni elencare per ognuna di esse: nome, eventuali attributi, entità che vi partecipano e relativi vincoli di cardinalità. Elencare in linguaggio naturale gli eventuali vincoli derivanti dalla ristrutturazione
    2. Tradurre lo schema ER ristrutturato ottenuto al punto 1 in uno schema logico equivalente indicando, per ogni relazione, chiavi, chiavi esterne e vincoli di obbligatorietà