Schema E-R
La documentazione della progettazione concettuale si completa con il dizionario dei dati rappresentato da due tabelle: una contiene le entità e la loro descrizione, gli attributi e gli identificatori e l'altra contiene le relazioni, le entità partecipanti e gli eventuali attributi.
Entità | Descrizioni | Attributi | Identificatore |
---|---|---|---|
Cliente | Cliente dell'autofficina e proprietario dell'auto | Codice fiscale, Nome, Cognome, Indirizzo, Telefono | Codice fiscale |
Manutenzione | Interventi di manutenzione | Codice, Costo della manodopera, costo complessivo | Codice |
Auto | Automobile del cliente | Targa, anno di immatricolazione | Targa |
Auto d'epoca | Sottoinsieme di auto | Targa, anno di immatricolazione | Targa |
Tipo auto | Tipologia auto | Costruttore, modello, cilindrata, informazioni tecniche | Costruttore, modello, cilindrata |
Pezzi di ricambio | Applicazione | Nome, Costo | Nome |
Il carico dell'applicazione caratterizza sia il volume dei dati memorizzati, ovvero il numero di occorrenze di ogni entità e associazione dello schema e le dimensioni di ciascun attributo, sia le caratteristiche delle operazioni, ovvero il tipo OL = On Line oppure B = Batch (fuori linea), la frequenza, le entità e le associazioni coinvolte.
Il volume dei dati è riportato nella tavola dei volumi mentre nella tavola delle frequenze, che descrive la frequenza attesa con cui le varie operazioni saranno eseguite, è riportata la caratteristica delle operazioni.
Nella tavola dei volumi, il numero delle occorrenze delle entità coinvolte nelle associazioni è il numero medio di partecipazioni di una occorrenza di entità alle occorrenze di associazioni, mentre il secondo parametro dipende dalle cardinalità delle associazioni.
Concetto | Tipo | Volume |
---|---|---|
Cliente | E | 500 |
Manutenzione | E | 1500 |
Fattura | E | 1500 |
Auto | E | 1000 |
Pezzi di ricambio | E | 3000 |
Tipi di auto | E | ... |
250Telefono E 750Richiesta R 500Effettuata R 1000Applicazione R 1000Utilizzo R 500(Fattura)Di R 1500Figura 6 : Tavola dei volumi
Operazione Descrizione Frequenza Tipo
O1 Inserisci un nuovo cliente 1/mese OLO
O2 Modifica i dati di un cliente 1/anno OLO
O3 Inserisci una nuova auto 1/mese OLO
O4 Inserisci nuovi pezzi di ricambio 10/mese OLO
O5 Aggiorna il costo dei pezzi di ricambio 10/6mesi OLO
O6 Aggiorna il costo della manodopera 1/6mesi OLO
O7 Stampa fattura per la manutenzione 20/giorno OLFigura 7 : Tavola delle frequenze
5. PROGETTAZIONE LOGICA INDIPENDENTE DALMODELLO
L'obiettivo della progettazione logica è quello di costruire uno schema logico in grado di descrivere, in modo corretto ed efficiente, tutte le informazioni contenute nello schema E-R prodotte dalla progettazione concettuale.
Per passare allo schema logico, lo schema E-R va ristrutturato in modo da semplificare la traduzione e ottimizzare il progetto.
La fase di ristrutturazione si suddivide in: analisi delle ridondanze,
durante la quale si decide se eliminare o mantenere eventuali ridondanze dello schema; eliminazioni delle generalizzazioni, eventuali sostituite da altri costrutti; partizionamento o accorpamento di entità e di associazioni; scelta degli identificatori primari, durante la quale si seleziona un identificatore per quelle entità che ne hanno più di uno. Per il progetto di basi di dati dell'autofficina si è resa necessaria la ristrutturazione dell'attributo multivalore opzionale TELEFONO. L'entità CLIENTE che aveva tale attributo è stata partizionata in due entità: una entità CLIENTE con gli stessi attributi di partenza, eccetto l'attributo multivalore, e l'entità TELEFONO, con il solo attributo numero (che lo identifica). Esse sono associate mediante la relazione uno a molti RECAPITO. Per quanto riguarda l'eliminazione delle gerarchie, l'entità AUTOEPOCA, unica figlia(sottoinsieme) dell’entità AUTO, è stata eliminata aggiungendo all’entità padrel’attributo autoepoca.Nella pagina seguente riportiamo lo schema E-R ristrutturato.(1,N) (1,1)PROPRIETA’C.F. TargaNome Anno ImmCognome (1,N)Indirizzo EFFETTUAT AUTOCLIENTE A(0,N) CodiceCosto manodopera (1,N)(1,N) Auto d’epocaRECAPP Costo complessivo(1,1) (1,1)(1,N) MANUTENZIONERICHIESTTELEFONO A (1,N)Num Tel (1,N) (0,N)(1,1) (1,N)FATTURAINTESTAZIONE DI TIPONumero TIPOData (1,N)Importo Costruttore TIPO AUTOModello CilindrataUTILIZZ Informazioni TecnicheO (1,N)(0,N)Codice (1,N)PEZZI DI RICAMBIO APPLICAZIONNome (0,N) ICostoFigura 8 : Schema E-R ristrutturato6. PROGETTAZIONE LOGICADurante questa fase della progettazione traduciamo modelli di dati diversi; a partiredallo schema E-R ristrutturato costruiamo uno schema logico equivalente, in grado dirappresentare le stesse informazioni.6.1 Traduzione entitàDalla traduzione delle entità dello schema
E-R ristrutturato individuiamo le R-relazioni, cioè le relazioni del modello relazionale.
- CLIENTE (CF,Cognome, Nome, Indirizzo)
- MANUTENZIONE (Codice, Costo, Manodopera)
- AUTO(Targa, Autoepoca, Annoimmatricolazione, CF, Modello, Costruttore)
- FATTURA (NumFatt, Data, Importo, CF)
- PEZZI DI RICAMBIO (Codice, Nome, Costo)
- TIPIDIAUTO (Modello, Costruttore, Cilindrata, Informazioni Tecniche)
- TELEFONO (NumTel, CF)
6.2 Traduzione relazioni
Nello schema ottenuto dalla progettazione concettuale si trovano solo relazioni tipo uno a molti e di tipo molti a molti.
La relazione PROPRIETA’ è di tipo uno a molti con partecipazione obbligatoria, si traduce introducendo in AUTO l’attributo CF.
La relazione RECAPITO è di tipo uno a molti con partecipazione opzionale, si traduce introducendo in TELEFONO l’attributo CF.
La relazione INTESTAZIONE è di tipo uno a molti con partecipazione obbligatoria, si traduce introducendo in FATTURA l’attributo CF.
CF.La relazione TIPO è di tipo uno a molti con partecipazione obbligatoria, si traduce introducendo in AUTO gli attributi Modello e Costruttore.
La relazione RICHIESTA è di tipo molti a molti con partecipazione obbligatoria, si traduce come una R-relazione che ha per attributi gli identificatori di CLIENTE e MANUTENZIONE.
La relazione EFFETTUATA è di tipo molti a molti con partecipazione obbligatoria, si traduce come una R-relazione che ha per attributi gli identificatori di MANUTENZIONE e AUTO.
La relazione APPLICAZIONE è di tipo molti a molti con partecipazione obbligatoria, si traduce come una R-relazione che ha per attributi gli identificatori di PEZZI DI RICAMBIO e TIPI AUTO.
La relazione UTILIZZO è di tipo molti a molti con partecipazione opzionale, si traduce come una R-relazione che ha per attributi gli identificatori di MANUTENZIONE e PEZZI DI RICAMBIO.
La relazione (FATTURA)DI è di tipo molti a molti con partecipazione obbligatoria, si traduce come
Schema logico completo per l'autofficina
Tabella | Attributi |
---|---|
CLIENTE | CF, Cognome, Nome, Indirizzo |
MANUTENZIONE | Codice, Costo Manodopera |
AUTO | Targa, Autoepoca, Annoimmatricolazione, CF, Modello, Costruttore |
FATTURA | NumFatt, Data, Importo, CF |
PEZZI DI RICAMBIO | Codice, Nome, Costo |
TIPIDIAUTO | Modello, Costruttore, Cilindrata, Informazioni Tecniche |
TELEFONO | NumTel, CF |
RICHIESTA | CF, CodMan |
EFFETTUATA | CodMan, Targa |
APPLICAZIONE | Modello, Costruttore, CodRic |
UTILIZZO | CodMan, CodRic |
(FATTURA)DI | NumFatt, CodMan |
Implementazione delle operazioni
Creazione delle tabelle
CREATE TABLE CLIENTE ( CF VARCHAR(20), Cognome VARCHAR(50), Nome VARCHAR(50), Indirizzo VARCHAR(100) ); CREATE TABLE MANUTENZIONE ( Codice INT, CostoManodopera DECIMAL(10,2) ); CREATE TABLE AUTO ( Targa VARCHAR(10), Autoepoca VARCHAR(20), Annoimmatricolazione INT, CF VARCHAR(20), Modello VARCHAR(50), Costruttore VARCHAR(50) ); CREATE TABLE FATTURA ( NumFatt INT, Data DATE, Importo DECIMAL(10,2), CF VARCHAR(20) ); CREATE TABLE PEZZIDIRICAMBIO ( Codice INT, Nome VARCHAR(50), Costo DECIMAL(10,2) ); CREATE TABLE TIPIDIAUTO ( Modello VARCHAR(50), Costruttore VARCHAR(50), Cilindrata INT, InformazioniTecniche VARCHAR(200) ); CREATE TABLE TELEFONO ( NumTel VARCHAR(20), CF VARCHAR(20) ); CREATE TABLE RICHIESTA ( CF VARCHAR(20), CodMan INT ); CREATE TABLE EFFETTUATA ( CodMan INT, Targa VARCHAR(10) ); CREATE TABLE APPLICAZIONE ( Modello VARCHAR(50), Costruttore VARCHAR(50), CodRic INT ); CREATE TABLE UTILIZZO ( CodMan INT, CodRic INT ); CREATE TABLE FATTURADI ( NumFatt INT, CodMan INT );
TABLE "CLIENTE"("CF" VARCHAR2(20 byte) NOT NULL, | "COGNOME" VARCHAR2(50 byte) NOT NULL, | "NOME" VARCHAR2(50 byte) NOT NULL, | "INDIRIZZO" VARCHAR2(10 byte) NOT NULL, |
CONSTRAINT "PK_CLIENTE" PRIMARY KEY("CF") | USING INDEXTABLESPACE "USERS" | STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS2147483645 PCTINCREASE 0) | PCTFREE 10 INITRANS 2 MAXTRANS 255) |
TABLESPACE "USERS" | PCTFREE 20 PCTUSED 0 INITRANS 2 MAXTRANS255 | STORAGE ( INITIAL 16K NEXT 0K MINEXTENTS 1 MAXEXTENTS2147483645 PCTINCREASE 0) | LOGGING; |
CREATE TABLE "MANUTENZIONE"("CODICE" VARCHAR2(20 byte) NOT NULL, | "COSTOMAN" NUMBER(10 byte) NOT NULL, | ||
CONSTRAINT "PK_CODICE" PRIMARY KEY("CODICE") | USING INDEXTABLESPACE "USERS" | STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS2147483645 PCTINCREASE 0) | PCTFREE 10 INITRANS 2 MAXTRANS 255) |
TABLESPACE "USERS" | PCTFREE 10 PCTUSED 0 INITRANS 1 |
MAXTRANS255STORAGE ( INITIAL 64K NEXT 0K MINEXTENTS 1 MAXEXTENTS2147483645 PCTINCREASE 0)LOGGING; CREATE TABLE "PEZZI DI RICAMBIO"( "CODICE" VARCHAR2(20 byte) NOT NULL, "NOME" VARCHAR2(50 byte) NOT NULL, "COSTO" NUMBER(20) NOT NULL, CONSTRAINT ...
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.