Dimensionamento e vincoli
In seguito alla progettazione logica della base di dati, riportiamo una tabella riassuntiva della mole di informazioni prevista, a regime, nell’arco del prossimo biennio.
Tabella delle dimensioni
| Nome | Tipo | Dimensione |
|---|---|---|
| Clienti | E | 5000 |
| Anagrafiche | E | 5000 |
| Luoghi | E | 3000 |
| Filiali | E | 50 |
| Direttori | E | 50 |
| Intestatari | R | 10000 |
| Scritture | E | 1000000 |
| Conto corrente | E | 10000 |
| Lavoratore Indipendente | E | 3000 |
| Lavoratore Dipendente | E | 3000 |
| Datore | E | 3000 |
Il numero di anagrafiche è pari al numero dei clienti, in quanto ogni cliente ha una e una sola anagrafica. Il numero di intestatari è il doppio del numero dei clienti, in quanto si è previsto ad ogni cliente una media di 2 conti correnti. Infine, il numero di datore è uguale al numero di lavoratore dipendente, in quanto ogni lavoratore dipendente può, nel caso peggiore, avere un datore diverso.
Tabella riassuntiva
Riportiamo qui una tabella riassuntiva delle entità e relazioni trovate da un team di consulenti sulla base dei requisiti forniti.
| Entità | Attributi | Chiave primaria | Chiave esterna |
|---|---|---|---|
| Clienti | Id_codice, Codice_fiscale, Residenza | Id_codice | Codice_fiscale: Anagrafica, Residenza: Luoghi |
| Anagrafiche | Codice_fiscale, Nome, Cognome | Codice_fiscale | |
| Luoghi | Id_Località, Città, Indirizzo, CAP | Id_Località | |
| Filiali | Nome, telefono, fax, Direttore, Orario_apertura, Orario_chiusura, Id_località | Id_località: Luoghi, Direttore: Direttori | |
| Direttori | Id_direttore, Nome, Cognome, Indirizzo, telefono, E-mail | Id_direttore | |
| Intestatari | CodiceIBAN, Id_cliente | CodiceIBAN | Id_cliente: Cliente |
| Scritture | Id_scrittura, CodiceIBAN, causale, valuta, importo_entrata, importo_uscita, saldo, Data, Orario | Id_scrittura | CodiceIBAN: Conti_Correnti |
| Conti_Correnti | CodiceIBAN, Nome_Filiale, Saldo_attuale, Limite_giornaliero_op, Limite_mensile_op, Residuo_giornaliero_op, Residuo_mensile_op | CodiceIBAN | Nome_Filiale: filiale |
| Lavoratore Indipendente | Id cliente, PartitaIVA, Fatturato_medio, Entrate Nette | Id cliente | Id cliente: Cliente |
| Lavoratore Dipendente | Id cliente, Ragione_Sociale, Datore_di_Lavoro | Id cliente | Datore_di_Lavoro: Datore |
| Datore | Id_Datore, Indirizzo_datore_lavoro, Telefono_datore_lavoro | Id_Datore |
Vincoli
Al fine di garantire la consistenza e l’integrità della base di dati progettata, è necessario imporre dei vincoli sulle tabelle. Vi sono due tipi di vincoli: intrarelazionali (che coinvolgono una sola tabella), inter-relazionali (che coinvolgono più tabelle).
Vincoli intrarelazionali
Si evita di evidenziare i vincoli di chiave primaria.
- Clienti: È stato posto un vincolo di NOT NULL e UNIQUE su Codice_fiscale e un vincolo di NOT NULL sugli altri attributi.
- Anagrafiche: Nessun altro vincolo presente.
- Luoghi: Sono stati posti vincoli di NOT NULL sugli altri attributi.
- Filiali: Gli unici vincoli previsti sono quelli di NOT NULL su Id_località.
- Direttori: I vincoli imposti sono quelli di NOT NULL sul campo Nome e Cognome.
- Intestatari: Non presenta alcun vincolo.
- Scritture, Conti_Correnti, Lavoratore Indipendente, Lavoratore Dipendente, Datore: Sono presenti vincoli di NOT NULL su tutti gli attributi.
Vincoli inter-relazionali
Per ciò che concerne i vincoli di integrità referenziale o inter-relazionali, valgono le seguenti considerazioni:
- Clienti: Esiste un vincolo di chiave esterna tra il campo Codice_fiscale ed il campo Codice_fiscale della relazione Anagrafica. Tale vincolo consente di poter inserire solo valori legali di tupla sull’attributo Codice_fiscale. È stata scelta come politica di violazione del vincolo di integrità referenziale l’opzione on delete cascade in quanto l’esistenza di un cliente non ha senso una volta cancellata l'anagrafica ad essa relativa.
- Esiste un vincolo di chiave esterna tra il campo Residenza ed il campo Id_località della relazione Luoghi. Tale vincolo consente di poter inserire solo valori legali di tupla sull’attributo Residenza. È stata scelta come politica di violazione del vincolo di integrità referenziale l’opzione on delete cascade in quanto non si può avere in archivio un cliente di cui non si conosce la residenza.
- Filiali: Esiste un vincolo di chiave esterna tra il campo Direttore ed il campo Id_direttore della relazione Direttori. Tale vincolo consente di poter inserire solo valori legali di tupla sull’attributo Codice_fiscale.
-
Basi di dati - esempio progetto database
-
Progetto Basi di dati
-
Basi Di Dati (Database)
-
Progetto basi di dati (tesina SQL - database)