Comments
Description
Transcript
Tesina
Gestione condominio by Prete Paolo Entra [email protected] Introduzione Nella presentazione è esposto lo studio della gestione di un condominio, cioè lo sviluppo di un data base che permetta a più utenti di gestire in maniera facile e veloce le operazioni generalmente svolte dall’amministratore di un condominio. La gestione del condominio avviene mediante le basi di dati, che sono affrontati in una sezione. Nella presentazione è presente inoltre un’analisi dettagliata del progetto(gestione condominio) che si deve realizzare, con il suo relativo schema concettuale. Il programma realizzato si può trovare su INTERNET all’indirizzo http://web.tiscalinet.it/jacmass Indietro Avanti Indice degli argomenti Gli argomenti della discussione sono: Analisi della gestione del condominio Schema concettuale condominio Albero delle procedure Basi di dati Sql Internet(Che cos’è?) Delphi Programma gestione condominio Introduzione Analisi della gestione del condominio Si vuole voler modellare la realtà relativa all’amministrazione di un condominio. Il condominio è composto da un certo numero di appartamenti ciascuno dei quali è descritto dalle seguenti proprietà: il codice(chiave), la superficie, il numero dei vani, lo stato(libero o occupato) e, nel caso sia occupato il nome dell’inquilino e il suo rispettivo saldo e il nome del proprietario. Ogni appartamento ha un unico proprietario, ma un proprietario può possedere più appartamenti. Di ogni proprietario interessano le seguenti proprietà: nome, indirizzo, telefono, saldo. Il saldo rappresenta la somma che il proprietario deve all’amministrazione condominiale per servizi e lavori sostenuti o preventivati. Se il saldo è positivo rappresenta un credito mentre se è negativo, il suo valore rappresenta un debito. Fra le spese si distinguono quelle da attribuire ad un singolo appartamento ed a carico esclusivo del suo proprietario(lavori all’interno dell’appartamento) o quelle da attribuire al singolo inquilino dell’appartamento. Di ogni spesa si deve conoscere: continua Un numero di identificazione, la voce (luce, ascensore, pulizie, ecc.), la data, l’importo e il tipo di spesa, che serve ad identificare la spesa se è da attribuire al proprietario o all’inquilino. Dei pagamenti effettuati dai proprietari di tanto in tanto bisogna mantenere traccia. Ciascun pagamento è individuato da un numero d’ordine e deve riportare la data e l’importo. Lo schema concettuale in grado di modellare la realtà descritta è riportato su una diapositiva successiva. Schema concettuale Schema concettuale condominio APPARTAMENTI N POSSIEDE 1 1 PROPIETARI 1 HA SOSTENUTO HA SOSTENUTO N N SPESE SPECIALI PAGAMENTI SPESE Ritorna ad Analisi condominio Indice Albero delle procedure Progettazione concettuale Visualizzazione inquilini e proprietari con saldo negativo MAIN Inserimento nuovo appartamento Pagamenti fatti da X Inserimento dati proprietario Spese attribuite ad X Pagamento proprietario Cancella proprietario Pagamento inquilino Cambio proprietario Analisi Indice Attribuzione spesa inquilino Cambio inquilino Attribuzione spesa proprietario Progettazione concettuale Per gestire il condominio che abbiamo descritto nell’analisi, ci ricaviamo dallo schema concettuale le seguenti relazioni: Appartamenti(codapp, superficie, vani, inquilino, saldo_inq,proprietario); Proprietari(proprietario, indirizzo, telefono, saldo); Pagamenti(num_pag, data, importo, effet_pag); Spese(num_spesa, data, voce, importo, codapp, flag); Le procedure che utilizzo per gestire il condominio sono: Inserimento nuovo appartamento, inserimento dati inquilino, inserimento pagamento, attribuzione spesa, cancella proprietario, cambio proprietario, cambio inquilino, cambio telefono e indirizzo proprietario, visualizzazione inquilini e proprietari, visualizzazione inquilini e proprietari con saldo negativo, visualizzazione pagamenti fatti da X, visualizzazione spese attribuite ad X, visualizzazione appartamenti con inquilino di un proprietario. Queste procedure sono visualizzate nell’ albero delle procedure. Basi di Dati Nella gestione automatica delle informazioni spesso si fa riferimento agli archivi. Questo approccio risulta assolutamente inadatto però quando la massa e l’importanza delle informazioni sono quelle che si presentano nelle grandi organizzazioni(aziende,banche,enti pubblici). In questi casi si ricorre all’uso dei sistemi di gestione di basi di dati, molto più potenti dei tradizionali di sistemi di archiviazione. Una Base di Dati(Data Base o DB) è un insieme di dati strutturati e permanenti, raggruppati in insiemi omogenei, in relazione fra loro, organizzati con la minima ridondanza, per essere usati da applicazioni diverse, in modo controllato. I dati sono memorizzati in modo da essere indipendenti dai programmi applicativi che li usano. La definizione spiega come in una base di dati i dati sono strutturati ossia hanno un formato predefinito detto tipo. Modelli di dati DBMS Indice Modelli di dati Un modello di dati(Data model) è un insieme di meccanismi di astrazione adatti per organizzare i dati e definire gli operatori che agiscono sui dati. Al variare dei meccanismi di astrazione e degli operatori si distinguono tre classi di modelli: Modelli Fisici, in cui i meccanismi di astrazione e gli operatori sono molto poveri, legati più alla macchina e all’organizzazione delle memorie di massa che alla logica umana.Il modello dei files rientra nei modelli fisici. Modelli Logici, in cui i meccanismi di astrazione e gli operatori messi a disposizione sono il risultato di un compromesso fra l’esigenza di modellare facilmente la realtà e quella di disporre di un’implementazione efficiente. I principali modelli logici sono quelli gerarchico,reticolare e relazionale. Modelli semantici(o concettuali), nei quali i meccanismi di astrazione e gli operatori hanno il dichiarato scopo di modellare la realtà secondo una logica naturale per l’uomo.Il più noto tra questi modelli è il modello entitàassociazione. I modelli semantici vengono tipicamente utilizzati nella fase di progettazione concettuale di un sistema informatico. DBMS Basi di dati DBMS(sistema di gestione di basi di dati) Una raccolta di dati è una base di dati se risponde ai seguenti requisiti: a)I dati sono organizzati in accordo ad un preciso schema generato da un modello dei dati logici. E’ quindi definito anche l’insieme di operatori con cui accedere e modificare i dati. b)I dati sono utilizzabili per diverse applicazioni da utenti o gruppi di utenti diversi interessati ciascuno a sottoinsiemi dei dati presenti non necessariamente disgiunti. c) I dati sono presenti con una ridondanza minima(integrazione dei dati). d) L’accesso ai dati avviene in modo protetto contro utenti non autorizzati(sicurezza o privatezza). Contro errori hardware e software (integrità e ripristino dei dati), contro il pericolo di stati inconsistenti dovuti all’accesso concorrente in lettura\scrittura(consistenza). Il rispetto di tutti i requisiti pone dei problemi notevoli che vengono in pratica risolti da un complesso di moduli software noto appunto come sistemi di gestione di basi di dati o DBMS . Tipicamente , quando questo sistema e in esercizio, gli utenti vedono una macchina astratta(macchina DBMS) che consente loro di : Continua 1) Definire il cosiddetto schema logico della base di dati. Per ciò il DBMS mette a disposizione un apposito linguaggio di definizione dei dati o DDL(Data Definition Language) che esprime le regole di generazione degli schemi. 2)Accedere o modificare i dati di un DB attraverso un linguaggio di manipolazione dei dati o DML(Data Manipulation Language). 3) Definire delle visioni parziali, (sottoschemi o schemi esterni), che consenta a ciascun programmatore di selezionare la parte dell’applicazione che gli interessa. Per la definizione di un sottoschema si usa in genere un linguaggio di definizione dei dati distinto dal DDL, chiamato DDL esterno. 4) Definire alcuni parametri qualitativi (tipi ddi organizzazione) e quantitativi delle strutture fisiche di memorizzazione della base di dati(schema interno o schema fisico). A tale scopo si usa delle volte un linguaggio distinto detto DMCL(Device Media Control Language) o DSL(Data Storage Language) In altri casi queste informazioni sono fornite dal DDL. Per quanto riguarda i linguaggi di manipolazione dei dati, essi si distinguono in procedurali (trattano singolarmente i records del DB) e non procedurali (considerano i dati collettivamente). Continua Questa struttura gerarchica a tre livelli (esterno,logico,interno) viene adottatta per garantire due importanti proprietà ritenute irrinunciabili per un moderno DBMS, queste sono l’indipendenza logica e l’indipendenza fisica dei dati: - Per Indipendenza fisica si intende la possibilità di modificare l’organizzazione fisica dei dati(schema interno) senza dover conseguentemente modificare i programmi applicativi che agiscono sulla base di dati. - Per Indipendenza logica si intende la possibilità di modificare lo schema logico di una base di dati senza dover modificare i programmi applicativi non interessanti alla modifica. Basi di dati Modello entità-associazione Lo scopo del modello entità-relazione è quello di permettere la descrizione dello schema concettuale di un insieme di dati senza preoccuparsi dell'efficienza o della progettazione del DB fisico. Ricordiamoci che questo modello rispecchia profondamente il modello concettuale. Diamo quindi prima una definizione del modello concettuale. Modello concettuale La costruzione di un modello concettuale di dati, consiste in un processo di conoscenza della realtà ed in una traduzione della conoscenza acquisita con l'utilizzo di strutture predefinite. L'insieme di tutte queste strutture viene a costituire lo strumento con il quale viene espressa la realtà. In questo modello distinguiamo tre aspetti distinti: l. strutture di rappresentazione per la descrizione delle classi di dati del modello. 2. vincoli d’integrità che descrivono le regole che le classi devono rispettare perché rappresentino meglio la realtà. 3.strutture per la descrizione delle operazioni che permettono di descrivere il modo in cui gli oggetti possono evolversi e modificare le loro proprietà. Continua Tali aspetti sono descritti mediante tre linguaggi distinti: 1.linguaggio per la descrizione delle strutture di rappresentazione nel quale vengono definiti un certo numero di tipi di dati e per ogni tipo un certo numero di vincoli, detti vincoli interni. 2.linguaggio per la descrizione dei vincoli di natura generale che calcola in genere i predicati oppure calcoli equivalenti. 3.linguaggio per la descrizione delle operazioni che definisce tutte le operazioni possibili su dei dati. In questo modello possiamo parlare anche di astrazione, e quindi di conseguenza di meccanismi linguistici per descrivere astrazioni. Possiamo adesso dare una descrizione dei vari componenti del modello E-R. Entità Il termine ”entità” non ha una vera e propria definizione formale. Potremmo dire che questa rappresenta gli oggetti della realtà. Un esempio di entità tipica è: Persona nello schema del censimento della popolazione. Continua Set Entità Un gruppo composto da entità “simili”(o aventi alcune caratteristiche comuni) viene definito set di entità. Il set di entità rappresenta i confini del modello con la realtà. Esempio set entità: 1.Tutte le persone 2.Tutte le persone coi capelli 3.Tutte le automobili La scelta dei set di entità e un operazione fondamentale per stabilire uno schema del mondo reale, in relazione al DB. Per determinare un set bisogna vedere le caratteristiche somiglianti tra le varie entità, entrano quindi in gioco gli attributi. Attributi Le proprietà o caratteristiche di un’entità vengono per l’appunto definiti attributi. I quali possono assumere dei valori appartenenti ad un dominio, il quale può assumere valori interi, reali ed eccetera. Gli attributi vengono distinti in: Continua a) semplici(integer, real, boolean, ecc.) b) composti(record) c) multipli(tipo sequenziale). Esempio Cognome Data di nascita Nome Codice Fiscale PERSONA Chiave Un attributo o un insieme di attributi i cui valori identificano in modo univoco un'entità è detta chiave dell’entità. Ciò è espansibile ad un set di entità. Se per un set di entità non scegliamo un insieme di attributi che comprendano una chiave non saremo in grado di distinguere un'entità da un'altra. Continua Relazioni Una relazione tra set dì entità è una lista ordinata di tali set. In pratica le relazioni corrispondono a classi di fatti del mondo reale che sono significativi ai finì dell'applicazione, questi fatti mettono in relazione istanze di due o più entità(o set). Un esempio di una relazione potrebbe esser nello schema del censimento della popolazione, che lega una persona alla città di nascita. Le relazioni possono essere da uno-a-molti, da molti-a molti, da uno-a-uno Diagramma entità-relazione Il modello entità- relazione usa dei diagrammi: 1.rettangoli, rappresentano le entità. 2.ellisse, rappresentano gli attributi. E' sono collegati alle entità attraverso dei segmenti frecciati. Gli identificatori vengono segnalati con una doppia freccia, però tratteggiati. 3.rombi, rappresentano le relazioni. Essi sono collegati alle entità con segmenti orientati. Continua Funzionalità delle relazioni Per ottenere un modello meglio rappresentabile per la relazione spesso è necessario classificare le relazioni a seconda del numero di entità associabili tra un set di entità e l’altro. Relazioni uno- a uno La forma più semplice e più rara e quella di uno- a uno, cioè che ogni entità del set è legata con al più un elemento di un altro set. Relazioni molti- a uno Questo tipo di relazione va a far corrispondere un’entità nel set E2 con più entità del set E1 e associa con al più un’entità in E2. Relazioni molti- a molti Nelle relazioni molti- a molti non vi sono alcune restrizioni sull’insieme delle Ktuple di entità che possono trovarsi in un set di relazioni. Basi di dati Modello relazionale Il modello relazionale dei dati è stato introdotto da E.F. Codd (IBM) fin dal 1970 ed è basato sul concetto matematico di relazione fra insiemi. Il modello relazionale prevede un unico elementare meccanismo di strutturazione dei dati costituito appunto dalla relazione.Definita in senso matematico: Una relazione R su una sequenza di insiemi D1,D2,..Dn (non necessariamente distinti) è un sottoinsieme finito del prodotto cartesiano D1×D2×..×Dn: R D1×D2×..×Dn Il numero n(n>=1) è detto grado della relazione Gli insiemi D1,D2,..,Dn sono detti domini della relazione. Ad ogni dominio è associato un nome, detto attributo, che lo identifica univocamente all’interno della relazione. Gli elementi di R sono delle ennuple. A differenza delle relazioni matematiche , le relazioni del modello relazionale sono variabili nel tempo: le tuple possono essere inserite, cancellate e aggiornate. Il numero m(m>=0) di tuple presenti in un dato istante in una relazione R viene detto cardinalità della relazione. L’estensione di una relazione è consuetudine rappresentarla mediante una tabella. Continua Interrogazione basi di dati relazionali Sono stati proposti diversi linguaggi per l’interrogazione delle basi di dati relazionali, quasi tutti di tipo non procedurale. In tal senso si usa distinguere fra due opposti approcci(non procedurali): 1) Algebra relazionale, questo approccio è basato sull’impiego di alcuni operatori di un’algebra relazionale che vengono composti fra loro per produrre il risultato desiderato. 2) Calcolo relazionale, con il calcolo relazionale si va a specificare una proprietà che deve essere posseduta dalle tuple della stessa relazione. E’ stato dimostrato che, sotto opportune ipotesi, i due approcci possono considerarsi equivalenti sul piano di ciò che si può esprimere. Tuttavia sono maggiormente utilizzati gli operatori algebrici. Continua Operanti e operatori dell’algebra relazionale Stabiliamo che le operazioni che saranno in seguito menzionate non dipendono dal nome del componente (esempio attributi). Queste operazioni dipendono dalle posizione, dall'ordine degli attributi, cioè sono delle operazioni relative dell'ordine delle liste e non alle corrispondenze. Naturalmente si possono applicare a relazioni viste come corrispondenza dopo aver fissato un ordine per gli attributi prima di eseguire le operazioni e anche specificare i nomi degli attributi per la relazione risultante. Gli operanti dell'algebra relazionale, relazioni costanti o variabili, le quali indicano relazioni di arità fissa. L'arità associata a una variabile verrà indicata solo se importante. Le operazioni fondamentali dell'algebra relazionale sono cinque. Unione di relazioni Differenza di relazioni Prodotto cartesiano di relazioni Proiezione di una relazione Selezione di una relazione Altre operazioni utili aggiuntive alle cinque sono: quoziente, JOIN e semijoin. Basi di dati Unione Dette R ed S due relazioni compatibili, l’unione di R con S è la relazione ottenuta dall’unione insiemistica delle relazioni. Differenza La differenza di due relazioni R e S, indicato con R-S, è l’insieme delle tuple che stanno in R ma non in S. Anche qui R e S devono essere compatibili. Prodotto cartesiano Dette R ed S due qualsiasi relazioni rispettivamente di gradi n1 ed n2 e cardinalità rn1 ed rn2, il prodotto di R ed S è la relazione di grado n1+n2 e cardinalità m1><m2 le cui tuple si ottengono concatenando ogni tupla di R con ogni tupla di S. Il prodotto di R per S è quindi definito formalmente come: Operatori Proiezione L’idea della base di questa operazione è quella di prendere una relazione e di eliminare alcune componenti e\o risistemare alcune delle componenti rimaste. Data una relazione R e un sottoinsieme B{A1,A2,A3} dei suoi attributi si definisce proiezione di R su B la relazione di grado K che si ottiene da R ignorando le colonne relative agli attributi non contenuti in B ed eliminando le eventuali tuple duplicate. In genere viene usata la seguente notazione: PROJECT R ON A1,A2,..AK Selezione L’operatore di selezione è un operatore unario, in quanto agisce su una sola relazione. Data una relazione R e un predicato P semplice o composto sui suoi attributi, l’operazione di restrizione di R a P è la relazione costituita dalle tuple di R che soddisfano P. Formalmente: SELECT R where P = {t|t R and P(t)} Operatori Join La Join può essere vista come il prodotto cartesiano degli attributi di due o più relazioni.Come nel seguente esempio: Diamo adesso una definizione: La join tra due o più relazioni aventi uno o più attributi in comune (viene indicata nel seguente modo JOOIN(r1,..rn)) il prodotto cartesiano tra le tuple di tutte le relazioni i cui attributi in comune verificano una determinata condizione. JOIN(R,S)(X)= SEL(Xr=Xs) (R*S) Operatori Sql: structured Query Language Il linguaggio SQL (Structured Query Language) era inizialmente progettato per essere usato in modo convenzionale, ponendo frasi d'interrogazione e/o d'elaborazione inviate da un terminale al DBMS, al terminale arrivavano i risultati. In seguito fu integrato con chiamate a DB all'interno di linguaggi di alto livello. SQL è un linguaggio che definisce in sè un linguaggio di definizione dei dati DDL (Data Definition Language), è un linguaggio di manipolazione dei dati DML (Data Manipulating Language). Il linguaggio SQL non è un linguaggio procedurale; con SQL mediante frasi sintatticamente molto semplici, si richiede al DBMS di operare specifiche elaborazioni su la base di dati. SQL offre meccanismi di "protezione" mediante il concetto di vista. Infatti, in relazione all'utente, si ha una specifica vista del Db. Per esempio, il magazziniere non ha interesse, e non deve accedere ai dati della contabilità, a lui sono quindi assegnati dei diritti per leggere, leggere/scrivere, su specifiche aree del DB e non su altre. Vediamo alcuni degli statement più significativi di SQL Data Definition Language Data Manipulating Language Data Controll Data Query Basi di dati Data Definition Language Istruzione Create L’istruzione create table serve per creare una tabella CRETE TABLE nome_tabella ( nome_colonna tipo_colonna costrizioni_colonna [, nome_colonna tipo_colonna costrizioni_colonna] [ ... ] ) Sql Data Manipulating Language Istruzione Insert Serve per inserire in una tabella INSERT INTO {nome_tabella | nome_vista} [(lista_colonne)] { VALUES (lista_valori) | subquery} Istruzione Update UPDATE {nome_tabella | nome_vista} SET Serve per aggiornare i campi della tabella nome_colonna = {espressione | subquery} [, nome_colonna = {espressione | subquery}] [, ...] [WHERE condizione] Istruzione Delete Serve per cancellare righe da una tabella DELETE FROM {nome_tabella | nome_vista} [WHERE condizione] Sql Data Controll Istruzione Grant Il proprietario di un oggetto può accordare privilegi su di esso ad altri utenti tramite l’istruzione grant GRANT {ALL | privilegio [lista_colonne] [, privilegio [lista_colonne] ] [, ...] } ON oggetto TO {lista_utenti | PUBLIC} [WITH GRANT OPTION] Istruzione Revoke L'istruzione revoke serve per revocare i privilegi sugli oggetti agli utenti. REVOKE {ALL | privilegio [, privilegio] [, ...] } ON oggetto FROM {lista_utenti | PUBLIC} Sql Data Query Istruzione Select Serve per estrarre informazioni dal Database SELECT [ ALL | DISTINCT ] lista_scelte FROM lista_tabelle [ WHERE condizioni ] [ GROUP BY lista_attributi ] [ HAVING condizioni ] [ ORDER BY lista_attributi ] Sql Che cos’è Internet ? Definire Internet ci porta a fare delle delle facili categorizzazioni e interpretazioni di comodo. La definizione ufficiale, fornita da FNC(Federal Networking Council) è la seguente: Il termine Internet si riferisce al sistema globale per le comunicazioni che: 1. Si basa sull’indirizzamento logico e univoco, basato sul protocollo TCP/IP o sui suoi possibili sviluppi; 2. È in grado di supportare comunicazioni basate sull’insieme di protocolli TCP/IP o sui suoi possibili sviluppi 3. Utilizza o fornisce accesso, pubblicamente o privatamente, a servizi di alto livello, basati sulle comunicazioni e collegati alle infrastrutture sopra descritte. In realtà, al di là dei proclami ufficiali, Internet è molto di più. Continua In primo luogo si tratta di una rete fisica di computer, connessi a vari livelli in tutto il mondo. Tutte queste macchine indipendentemente dalle loro caratteristiche hardware, dei sistemi operativi che utilizzano e della collocazione geografica, sono in grado di riconoscersi e comunicare tra di loro, grazie all’adozione di alcuni protocolli comuni. E’ anche grazie a questa apertura nei confronti di ogni piattaforma che Internet sta ottenendo un cosi profondo successo. Un’altra definizione adatta a descrivere almeno in parte Internet è di carattere sociologico. Internet, infatti, è un luogo virtuale, dove ogni giorno milioni di utenti possono interagire a vari livelli e con diverse modalità. Infatti strumenti come la posta elettronica, i canali chat e la videoconferenza sono solo alcune delle possibilità di comunicazione diretta. Navigare in Internet però significa per la maggior parte delle persone, frequentare i vari siti presenti nella Rete. Da ciò si può giungere ad una nuova interpretazione di Internet : Internet è un un enorme “serbatoio” di informazioni di ogni tipo, fruibili attraverso differenti modalità, spesso adattabili alle esigenze individuali. Continua Certo rischiare di perdersi all’interno di questo mondo è sempre in agguato, l’unico rimedio è quello di raggiungere una buona confidenza con i software e con i vari protocolli. L’evoluzione, inoltre, è una delle principali caratteristiche del Web, entro il quale possono convivere clamorosi insuccessi e iniziative di successo. Internet è anche un luogo di ricerca e di curiosità nel quale il navigatore personale può percorrere “sentieri di caccia”, seguendo quello che più li piace. Ad Internet potrebbero essere associate ancora diverse interpretazioni, ma quello che maggiormente importa è entrare nel mondo del futuro, un “Mondo virtuale”, che offre una propria casa a chiunque ed è capace di soddisfare tutti secondo i propri gusti e esigenze. Indice Delphi 4.0 Il programma è stato realizzato con Delphi 4. Questo è uno dei più avanzati tool per lo sviluppo RAD di applicazioni per Windows.RAD sta per sviluppo rapido dell’applicazione (rapid application devolopment). E’ un termine coniato per una nuova varietà di ambienti di sviluppo del software. In questo nuovo mondo RAD, i programmatori usano strumenti che sono più intuitivi e visuali. Guardare un blocco di codice che genera una finestra e cercare di visualizzare tale finestra non è cosi facile come creare la finestra con un paio di click sul proprio mouse. Oltre a fornire le solide fondamenta dell’Object Pascal(linguaggio Pascal ad oggetti) della Borland, Delphi 4 presenta numerose nuove funzionalità che semplificano la gestione delle applicazioni riducendo drasticamente la scrittura del codice, per rispettare sempre i tempi e i budget a disposizione. Grazie ai numerosi tool messi a disposizione Delphi 4 consente lo sviluppo rapido di sofisticate applicazioni database. Inoltre i nuovi componenti nativi per Internet e i wizard per la creazione di applicazioni per i più diffusi Web Server facilitano l'integrazione delle applicazioni con il Web, per accedere a qualunque informazione, in ogni momento da ogni luogo. Indice Gestione condomino Per accedere al programma clicca sull’immagine Indice