Identificazione delle entità e connessioni tra loro. Area tematica del database e suoi modelli Determinare se un attributo è facoltativo

3. Componenti del modello dati

Entità, definizione di entità, fonti di informazione sulle entità

Un modello di dati è una descrizione concettuale di un'area tematica: il livello più astratto della progettazione di un database. Il modello dati è costituito da entità, attributi, domini e relazioni. Successivamente: su ciascuno degli elementi in dettaglio.

3.1 Entità

Un'entità è qualcosa su cui le informazioni devono essere archiviate in un database.

Quando si progettano database, è sufficiente descrivere la situazione attuale e la maggior parte dei nomi e alcuni verbi saranno candidati come entità. Ad esempio: "I clienti acquistano beni. I dipendenti vendono beni ai clienti. I fornitori consegnano beni" - clienti, beni, dipendenti e fornitori sono entità. Anche i verbi “comprare” e “vendere” sono entità (anche se possono essere un'unica entità, diversa dal punto di vista dell'acquirente e del venditore).

Quando si progetta un database, la principale fonte di informazioni sulle entità è una conversazione con il cliente per comprendere i suoi processi aziendali. Inoltre vengono analizzati i documenti standard utilizzati nei processi aziendali: moduli, report, istruzioni, ecc. Dopo aver ricevuto tale elenco, è necessario verificarne la completezza e la coerenza, nonché identificare i duplicati: entità identiche chiamate con parole diverse ed entità che in realtà sono diverse, ma descritte con lo stesso termine.

Le entità possono modellare concetti concreti (clienti, prodotti, chiamate) e astratti (un agente è responsabile di un cliente, uno studente è iscritto a un corso).

Il concetto del modello ER. Il concetto di ente. Attributi. Tipi di attributi

1. Quali problemi può incontrare uno sviluppatore durante la progettazione di un database?

Quando si progetta un database e si sviluppa un prodotto software, il problema più importante è il problema dell'interazione tra lo sviluppatore e il cliente. Il compito dello sviluppatore è ricreare nel modo più accurato i desideri del cliente durante lo sviluppo di un prodotto software di gestione del database. Il problema principale che lo sviluppatore deve risolvere è la corretta costruzione del database, o meglio lo schema (struttura) del database.

Inoltre, lo sviluppatore incontra anche altre difficoltà, tra cui:

  • ricerca di algoritmi efficienti;
  • selezione di strutture dati adeguate;
  • debug e test di codice complesso;
  • progettazione e usabilità dell'interfaccia dell'applicazione.

In fase di sviluppo Software, chi gestisce il database, lo sviluppatore deve conoscere nel dettaglio le esigenze del cliente. Il database dovrebbe essere progettato in modo che sia comprensibile, rifletta in modo più accurato il problema da risolvere e non contenga dati ridondanti.

Per facilitare il processo di sviluppo (progettazione) di un database, il cosiddetto modelli semantici dati. Per tipi diversi Il database più famoso è il modello dati ER (modello Entità-Relazione).

2. Cos'è il modello ER (modello Entità-Relazione)? Perché è necessario sviluppare un modello ER?

Il modello ER (modello Entità-relazione o diagramma Entità-relazione) è un modello di dati semantici destinato a semplificare il processo di progettazione del database. Dal modello ER possono essere generati tutti i tipi di database: relazionale, gerarchico, di rete, a oggetti. Il modello ER si basa sui concetti di “entità”, “relazione” e “attributo”.

Per database di grandi dimensioni, la creazione di un modello ER consente di evitare errori di progettazione estremamente difficili da correggere, soprattutto se il database è già operativo o in fase di test. Errori nello sviluppo della struttura del database possono portare a rielaborare il codice del software che gestisce questo database. Di conseguenza, tempo, denaro e risorse umane verranno utilizzati in modo inefficiente.

Un modello ER è una rappresentazione di un database sotto forma di diagrammi grafici visivi. Il modello ER visualizza un processo che definisce una determinata area tematica. Un diagramma entità-relazione è un diagramma che rappresenta graficamente entità, attributi e relazioni.

Il modello ER è solo un livello concettuale di modellazione. Il modello ER non contiene dettagli di implementazione. Per lo stesso modello ER, i dettagli di implementazione potrebbero differire.

3. Cos'è un'entità in un database? Esempi

Un'entità in un database è qualsiasi oggetto in un database che può essere identificato in base all'essenza dell'argomento per il quale viene sviluppato questo database. Il progettista del database deve essere in grado di definire correttamente le entità.

Esempio 1. Nel database della libreria si possono distinguere le seguenti entità:

  • libro;
  • fornitore;
  • posizionamento nel negozio.

Esempio 2. Nel database contabile del processo educativo di un determinato istituto scolastico, si possono distinguere le seguenti entità:

  • studenti (studenti);
  • insegnanti;
  • gruppi;
  • discipline che si studiano.
4. Quali tipi di entità esistono? Designazione dei tipi di entità nel modello ER

Nel modello “entità”-“relazione” si distinguono due tipologie di entità:

  • tipo debole. Questo tipo di entità dipende da un'entità forte;
  • tipo forte. Questo è un tipo di entità indipendente che non dipende da nessuno.

La Figura 1 mostra le designazioni dei tipi di entità deboli e forti nel modello ER.

Riso. 1. Designazione di tipi di entità forti e deboli

5. A cosa servono gli attributi? Tipi di attributi. Designazione degli attributi sul modello ER

Ogni tipo di entità ha un insieme specifico di attributi. Gli attributi hanno lo scopo di descrivere un'entità specifica.

Si distinguono i seguenti tipi di attributi:

  • semplice attributi. Questi sono attributi che possono far parte di attributi compositi. Questi attributi sono costituiti da un singolo componente. Ad esempio, attributi semplici includono: il codice di un libro in una biblioteca o il corso di studi di uno studente in un istituto scolastico;
  • composito attributi. Questi sono attributi costituiti da diversi attributi semplici. Ad esempio, l'indirizzo di residenza può contenere il nome del Paese, della località, della via, del numero civico;
  • inequivocabile attributi. Questi sono attributi che contengono un solo valore per alcune entità. Ad esempio, l'attributo “Numero del libro dei voti” per il tipo di entità “Studente” non è ambiguo, poiché uno studente può avere un solo numero del libro di prova (un valore);
  • polisemantico attributi. Questi sono attributi che possono contenere più valori. Ad esempio, l'attributo multivalore “Numero di telefono” per l'entità “Studente”, poiché uno studente può avere più numeri di telefono (casa, cellulare, ecc.);
  • arbitrario attributi. Questi sono attributi il ​​cui valore si forma in base ai valori di altri attributi. Ad esempio, il corso di studi attuale di uno studente può essere calcolato in base alla differenza tra l'anno di studio in corso e l'anno in cui lo studente è entrato nel Istituto d'Istruzione(se lo studente non ha avuto problemi con gli studi e ha studiato bene la disciplina “Organizzazione di banche dati e conoscenze”).

In un diagramma ER, gli attributi sono designati come mostrato nella Figura 2. Come si può vedere dalla figura, qualsiasi attributo è designato come un'ellisse con un nome all'interno dell'ellisse. Se l'attributo è la chiave primaria, il suo nome è sottolineato.

Figura 2. Rappresentazione degli attributi nei diagrammi del modello ER

6. Come vengono implementati i tipi di entità e gli attributi del modello ER nei database reali e nei programmi che gestiscono?

Quando si sviluppano programmi di gestione di database, i tipi di entità e i loro attributi possono essere rappresentati in diversi modi, aderendo a diversi approcci:

  • scegliere una tecnologia nota come origine dati (ad esempio, Microsoft SQL Server, Oracle Database, Microsoft Access, Microsoft ODBC Data Source, ecc.), che è già stata ricercata, testata, standardizzata e dispone di un vasto set di gestione del database utensili;
  • sviluppare il proprio formato di database e implementare metodi per elaborarlo e implementare l'interazione con origini dati conosciute sotto forma di comandi speciali come Importa/Esporta. In questo caso, dovrai programmare personalmente tutto il lavoro di routine per mantenere e garantire il funzionamento affidabile del database;
  • implementare una combinazione dei due approcci sopra indicati. I moderni strumenti di sviluppo software dispongono di un potente set di librerie per l'elaborazione di set complessi e la visualizzazione dei dati in essi contenuti (raccolte, array, componenti di visualizzazione, ecc.).

Se il database è implementato in DBMS relazionali noti (ad esempio Microsoft Access, Microsoft SQL Server, ecc.), i tipi di entità sono rappresentati da tabelle. Gli attributi del modello ER corrispondono ai campi della tabella. Una voce in una tabella di database rappresenta un'istanza di un'entità.

Ogni tipo di attributo è implementato come segue:

  • attributo semplice oppure un attributo a valore singolo può essere rappresentato da un insieme accessibile di tipi di base che si trovano in qualsiasi linguaggio di programmazione. Ad esempio, gli attributi interi sono rappresentati dal tipo int, integer, uint, ecc.; gli attributi contenenti una parte frazionaria possono essere rappresentati come float, double; attributi stringa di tipo stringa, ecc.;
  • attributo compostoè un oggetto che include diversi attributi semplici nidificati. Ad esempio, nel DBMS di Microsoft Access, un attributo composito di una tabella può essere formato in base a un insieme di tipi semplici (campi). Nei linguaggi di programmazione l'unione dei campi è implementata da strutture o classi;
  • attributo multivalore può essere implementato da un array o da una raccolta di attributi semplici o composti;
  • attributo arbitrario implementato da un campo aggiuntivo, che viene calcolato quando si accede alla tabella. Tale campo è chiamato campo calcolato ed è formato in base ad altri campi della tabella;
  • attributo che costituisce la chiave primaria può essere un numero intero, una stringa o un altro tipo ordinale. In questo caso, il valore di ciascuna cella della tabella che corrisponde alla chiave primaria è univoco. Molto spesso, la chiave primaria è di tipo intero (int, intero).

Se il database è implementato in un formato univoco, i tipi di entità sono rappresentati nel modo più conveniente come classi o strutture. Gli attributi di entità sono implementati come campi (dati interni) della classe. I metodi di classe implementano l'elaborazione necessaria dei campi di classe (attributi). L'interazione (comunicazione) tra le classi viene implementata utilizzando interfacce appositamente progettate utilizzando modelli di progettazione ben noti.

7. Esempio di frammento di modello ER per la tipologia entità “Studente”.

L'esempio precedente mostra un frammento del modello ER per il tipo di entità "Studente".

Figura 3. Frammento del modello ER per il tipo di entità “Studente”.

La figura sopra dichiara i seguenti attributi, che in un DBMS (programma) possono avere i seguenti tipi:

  • L'attributo della chiave primaria è un valore intero univoco generato automaticamente. Nel DBMS questo è un campo contatore;
  • L'attributo anno di ingresso è un attributo semplice che può essere implementato come valore intero (int, intero);
  • l'attributo Numero di telefono è un attributo multivalore che può essere implementato come un array o una raccolta, ecc.;
  • attributo Numero del registro– un semplice attributo che può essere implementato come una stringa di caratteri, poiché il numero del libretto può contenere lettere oltre ai numeri;
  • l'attributo Paese, Città, Via, Numero civico sono attributi che formano l'attributo composito Indirizzo. Tutti questi attributi possono essere di tipo stringa (testo) (string, Text);
  • attributo Cognome, Nome, Patronimico: questi sono attributi semplici che fanno parte dell'attributo composito Nome studente. Tutti questi attributi possono essere di tipo stringa (testo) (string, Text);
  • l'attributo Compleanno è un semplice attributo del tipo Data (DateTime);
  • attributo Età degli studenti– un campo calcolato, definito come la differenza tra la data corrente (di sistema) e il valore dell'attributo Compleanno.

Concetti di base del modello di database “entità-relazione” (modello ER): entità, connessioni tra loro e loro attributi (proprietà).

Essenza– qualsiasi oggetto concreto o astratto nell'ambito tematico in esame. Le entità sono i tipi base di informazioni archiviate in un database (in un database relazionale, a ciascuna entità viene assegnata una tabella). Le entità possono includere: studenti, clienti, dipartimenti, ecc. Un'istanza di entità e un tipo di entità sono concetti diversi. Il concetto di tipo di entità si riferisce a un insieme di individui, oggetti o eventi omogenei che agiscono nel loro insieme (ad esempio, uno studente, un cliente, ecc.). Un'istanza di entità si riferisce, ad esempio, a una persona specifica in un insieme. Il tipo di entità può essere uno studente e l'istanza può essere Petrov, Sidorov e così via.

Attributoè una proprietà di un'entità nell'area in questione. Il suo nome deve essere univoco per un tipo di entità specifico. Ad esempio, per l'entità studente possono essere utilizzati i seguenti attributi: cognome, nome, patronimico, data e luogo di nascita, dettagli del passaporto, ecc. In un database relazionale, gli attributi vengono archiviati nei campi della tabella.

Connessione– i rapporti tra gli enti della materia. Le relazioni sono connessioni tra parti di un database (in un database relazionale sono connessioni tra record di tabella).

Entità sono dati classificati per tipo e le relazioni mostrano come questi tipi di dati sono correlati tra loro. Se descriviamo un determinato argomento in termini di relazione tra entità, otteniamo un modello di relazione tra entità per questo database.

La freccia è il simbolo di una relazione: uno-a-molti.

I principali vantaggi dei modelli ER: * chiarezza; * i modelli consentono di progettare database con un gran numero di oggetti e attributi;

Gli elementi principali dei modelli ER: * oggetti (entità); * attributi degli oggetti; * connessioni tra oggetti.

Il rapporto tra entità è caratterizzato da: * tipologia di connessione (1:1, 1:N, N:M); *classe di appartenenza. Una classe può essere obbligatoria o facoltativa. Se ogni istanza di entità è coinvolta in una relazione, la classe di appartenenza è obbligatoria, altrimenti è facoltativa.


Il concetto di normalizzazione dei dati. Dipendenza funzionale.

La normalizzazione è un metodo formale per analizzare le relazioni in base alla chiave primaria e alle relazioni esistenti. Il suo compito è quello di sostituire uno schema (o insieme di relazioni) di un database con un altro schema in cui le relazioni abbiano una struttura più semplice e regolare.

Dipendenza funzionale. Siano X e Y due attributi di qualche relazione. Si dice che Y sia funzionalmente dipendente da X se in un dato istante ciascun valore di X corrisponde a non più di un valore dell'attributo Y.

La dipendenza funzionale è indicata come X -> Y.

Atteggiamento studente S (Ns, Fio, Ngr, Addr, Tel). Ciascuno degli attributi Fio, Ngr, Addr, Tel dipende funzionalmente dall'attributo Ns.

Quindi, in una relazione normalizzata, tutti gli attributi non chiave dipendono funzionalmente dalla chiave della relazione. La chiave della relazione S è l'attributo Ns.

Regola fondamentale quando si creano tabelle di entità, questa è "una tabella separata per ciascuna entità".

I campi della tabella entità possono essere di due tipi: chiave E non chiave. L'immissione di chiavi in ​​una tabella in quasi tutti i DBMS relazionali consente di garantire l'unicità dei valori nei record della tabella per chiave, accelerare l'elaborazione dei record della tabella e anche ordinare automaticamente i record in base ai valori nei campi chiave.

La definizione è solitamente sufficiente semplice chiave, meno spesso - invio composito chiave. Una tabella con chiave composta può essere, ad esempio, una tabella che memorizza un elenco di dipendenti (cognome, nome e patronimico), in cui si trovano gli omonimi. Alcuni DBMS offrono agli utenti la possibilità di definire un campo di numerazione delle chiavi generato automaticamente (in Access è un campo di tipo “contatore”), che semplifica la soluzione al problema dell'unicità dei record della tabella.

A volte le tabelle di entità hanno campi che descrivono le proprietà o le caratteristiche degli oggetti. Se la tabella ha un numero significativo di ripetizioni in questi campi e queste informazioni hanno un volume significativo, allora è meglio separarle in una tabella separata (rispettando la regola: “ogni entità ha una tabella separata”). Inoltre, è necessario creare una tabella aggiuntiva se le proprietà sono correlate.

Quando elabori le tabelle di entità, tieni presente quanto segue. È facile aggiungere e modificare una nuova entità, ma durante l'eliminazione è necessario eliminare tutti i riferimenti ad essa dalle tabelle di collegamento, altrimenti le tabelle di collegamento saranno errate. Molti DBMS moderni bloccano azioni errate in tali operazioni.

Messaggi tabelle di collegamento hanno lo scopo di visualizzare le relazioni tra entità, le cui informazioni si trovano nelle tabelle delle entità corrispondenti.

In genere, una tabella di relazioni descrive la relazione tra due entità. Poiché nel caso più semplice le tabelle di entità hanno ciascuna un campo chiave, la tabella delle relazioni di due tabelle deve avere due chiavi per garantire l'unicità dei record di relazione. È possibile creare una tabella di relazioni, come una tabella di oggetti, senza chiavi, ma le funzioni di monitoraggio dell'unicità dei record ricadono sull'utente.

Le relazioni più complesse (non binarie) dovrebbero essere ridotte a quelle binarie. Per descrivere le relazioni di N oggetti, sono necessarie N-1 tabelle di relazioni. Non dovrebbero esserci connessioni transitive. Un eccesso di connessioni porta a contraddizioni (vedi l'esempio delle relazioni DIPENDENTE-DIPARTIMENTO, DIPENDENTE-PROGETTO e DIPARTIMENTO-PROGETTO nel paragrafo precedente).

Le caratteristiche delle entità non dovrebbero essere incluse nelle tabelle delle relazioni, altrimenti le anomalie sono inevitabili. È meglio archiviarli in tabelle di entità separate.


Utilizzando le tabelle di connessione, puoi anche descrivere un tipo di connessione un po' specifico: una connessione lineare o una connessione debole. Un esempio di connessione lineare può essere considerato il rapporto di appartenenza di entità a qualche altra entità di ordine superiore (sistemi costituiti da nodi; medicinali costituiti da componenti; leghe metalliche, ecc.). In questo caso una tabella di collegamenti è sufficiente per descrivere i collegamenti.

Quando si lavora con le tabelle dei collegamenti, è necessario tenere presente che qualsiasi voce dalla tabella dei collegamenti può essere facilmente eliminata, poiché le entità possono fare a meno dei collegamenti per un po' di tempo. Quando si aggiungono o si modificano i contenuti dei record della tabella, è necessario verificare la correttezza dei riferimenti agli oggetti esistenti, poiché una relazione non può esistere senza oggetti. La maggior parte dei DBMS moderni controlla la correttezza dei riferimenti agli oggetti.

Sotto integrità comprendere la proprietà di un database, il che significa che contiene informazioni complete, coerenti e che riflettono adeguatamente l'area tematica.

Distinguere fisico e logico integrità. Integrità fisica significa che esiste un accesso fisico ai dati e che i dati non vanno persi. Per integrità logica si intende l'assenza di errori logici nel database, che includono la violazione della struttura del database o dei suoi oggetti, la cancellazione o la modifica delle connessioni stabilite tra gli oggetti, ecc. In futuro parleremo di integrità logica.

Il mantenimento dell'integrità del database include il controllo (monitoraggio) dell'integrità e il ripristino della stessa se vengono rilevate incoerenze nel database. L'integrità del database viene impostata utilizzando vincoli di integrità sotto forma di condizioni che devono essere soddisfatte dai dati archiviati nel database.

Tra i vincoli di integrità si possono distinguere due tipi principali di vincoli: restrizioni di valore attributi di relazione e limitazioni strutturali a tuple di relazioni.

Esempio restrizioni di valore Gli attributi di relazione sono il requisito che i valori vuoti o duplicati negli attributi non siano ammissibili, nonché il controllo che i valori degli attributi appartengano a un determinato intervallo. Pertanto, nei record di relazione relativi al personale, i valori dell'attributo Birth_Date non possono superare i valori dell'attributo Reception_Date.

I mezzi più flessibili per implementare il controllo sui valori degli attributi sono procedura di archiviazione E trigger, disponibile in alcuni DBMS.

Limitazioni strutturali definire i requisiti integrità degli enti E integrità del collegamento. Per ogni istanza di entità rappresentata in una relazione, c'è solo una tupla corrispondente ad essa. Requisiti integrità degli entiè che qualsiasi tupla di una relazione deve essere distinguibile da qualsiasi altra tupla di questa relazione, cioè, in altre parole, qualsiasi relazione deve avere una chiave primaria.

La formulazione del requisito di integrità del collegamento è strettamente correlata al concetto chiave esterna. Ricordiamo che le chiavi esterne vengono utilizzate per connettere relazioni (tabelle di database) tra loro. In questo caso, viene chiamato l'attributo di una relazione (genitore). chiave esterna di questa relazione, se lo è primario la chiave di un'altra relazione (bambino). Si dice che una relazione in cui è definita una chiave esterna fa riferimento a una relazione in cui lo stesso attributo è la chiave primaria.

L'integrità referenziale richiede che per ogni valore di chiave esterna nella tabella padre, sia presente una riga nella tabella figlio con lo stesso valore di chiave primaria. Ad esempio, se la relazione R1 contiene informazioni sui dipendenti del dipartimento e l'attributo di questa relazione Must è la chiave primaria della relazione R2, allora in questa relazione per ciascuna posizione di R1 dovrebbe esserci una riga con lo stipendio corrispondente.

Molti DBMS moderni dispongono di strumenti per monitorare l'integrità del database.

L'entità è un oggetto reale o astratto che ha un significato significativo per l'area tematica. L'entità deve avere un nome espresso da un sostantivo singolare

Un modo informale per identificare le entità è cercare astrazioni che descrivano oggetti, processi, ruoli e altri concetti. Il modo formale per identificare le entità è analizzare le descrizioni testuali dell'area tematica, evidenziando i nomi e selezionandoli come astrazioni.

Un'istanza di entità è un rappresentante specifico di una determinata entità. Ad esempio, un'istanza dell'entità Employee può essere il dipendente Ivanov.

Ogni entità deve avere le seguenti proprietà:

avere un nome univoco;

avere uno o più attributi che appartengono all'entità o sono ereditati attraverso una relazione;

avere uno o più attributi che identificano in modo univoco ciascuna istanza di un'entità.

L'attributo è una caratteristica di un'entità che è significativa per l'area tematica in esame ed è intesa a identificare, classificare, quantificare o esprimere lo stato dell'entità.

Esistono i seguenti tipi di attributi:

semplice: consiste di un elemento dati;

composito: è costituito da diversi elementi di dati;

non ambiguo: contiene un valore per un'entità;

multivalore: contiene diversi valori per un'entità;

facoltativo: può avere un valore vuoto (non definito);

derivato: un valore derivato dal valore di un altro attributo.

Un identificatore univoco è un insieme di attributi i cui valori insieme sono univoci per ciascuna istanza di un'entità. La rimozione di qualsiasi attributo da un identificatore ne viola l'unicità. Gli identificatori univoci vengono visualizzati come sottolineato nel diagramma.

Ogni entità può avere un numero qualsiasi di connessioni con altre entità.

Relazioni tra entità

La relazione è un'associazione nominativa tra entità significativa per l'area tematica in esame.

Il grado di connessione è il numero di entità coinvolte nella connessione.

Potenza di comunicazione: il numero di istanze di entità che partecipano alla comunicazione.

A seconda del valore della potenza, la comunicazione può essere di tre tipi:

uno a uno (indicato 1:1).

uno-a-molti (indicato con 1:N).

molti-a-molti (indicato con M:N).

Uno a uno. Significa che in tale relazione, le entità con un ruolo corrispondono sempre a non più di un'entità con un altro ruolo. Poiché il grado di connessione di ciascuna entità è 1, sono collegate da una linea.

Uno a molti. Un'entità con un ruolo può essere associata a un numero qualsiasi di entità con un altro ruolo.

Molti-a-molti. In questo caso, ciascuna delle entità associate può essere rappresentata da un numero qualsiasi di istanze.