Scarica John Von Neumann: Descrizione del Calcolatore Moderno e Architettura di Memoria Centrale - e più Appunti in PDF di Elementi di Informatica solo su Docsity!
INFORMATICA
L’abaco è la prima macchina di calcolo nota, risale al V millennio. La logica e la correttezza dell’operazione dipendono unicamente dall’utente. La pascalina, XVII secolo dC, è il primo passo avanti. La logica dell’operazione è controllata dalla macchina. La pascalina permetteva di effettuare solo addizione e sottrazioni. Il problema è che la logica che governa le operazioni è cablata nella macchina calcolatrice. La soluzione è trattare tale logica come parte dell’input della macchina. La macchina analitica, 1840, è la prima macchia di calcolo programmata. Non c’è bisogno di cambiare ogni volta la logica. Alan Turing
- padre dell’informatica
- macchina di Turing Macchina di Turing è un modello astratto di calcolatore, è un esperimento mentale non una macchina effettivamente costruibile, descrive una macchina astratta. È pensata per studiare i limiti di ciò che è calcolabile automaticamente. John von Neumann
- descrive un calcolatore costruibile
- è il modello su cui si basano i computer moderni
- descrive il calcolatore con memoria centrale ram basata su cpu
Terminologia:
computer → elaboratore elettronico digitale
- elaboratore = dispositivo in grado di eseguire automaticamente una serie di istruzioni
- elettronico = usa componenti elettronici
- digitale = elabora informazioni binarie (0 e 1) hardware → componente fisica del sistema informatico algoritmo → insieme delle operazioni necessarie a risolvere un problema software → insieme dei programmi che fanno funzionare l'hardware
- sistemi operativi = permettono all'elaboratore di svolgere le proprie funzioni
- programmi applicativi = svolgono i compiti più vari, in funzione delle esigenze dell’utenza
Rappresentazione delle informazioni
I computer non elaborano solo numeri, è sufficiente che l’informazione sia rappresentata in modo digitale ovvero mediante la rappresentazione binaria. Segnali:
- analogici → insieme continuo di valori, trasmettono informazioni e sono sensibili alle interferenze. per essere letti correttamente dal computer devono essere trasformati in digitali.
- digitali → insieme discreto di valori, semplici da distinguere. BIT elemento di base per rappresentare le informazioni, costituita da “0” e “1” un bit può assumere due valori quindi con un bit possiamo rappresentare due informazioni. associamo il valore di un bit con un’informazione. combiniamo più bit per rappresentare ogni informazione. n bit = 2n informazioni es: 2bit = 4 info 4bit = 16 info 5bit= 32 info Se abbiamo K informazioni dobbiamo utilizzare un numero di bit sufficiente per esprimerle tutte per cui scegliamo N in modo che sia maggiore o uguale al numero di info. es: per rappresentare 61 informazioni diverse si devono usare n bit tali che 2 elevato n >= 61 BYTE gruppo di 8 bit 8 bit = 256 informazioni diverse Il byte viene usato come unità di misura per esprime la capacità della memoria, potenza di un calcolatore, velocità di trasmissione di una linea. nome abbreviazione valore bit b 1 Kilobit Kb 1024 b Megabit Mb 1024 Kb Gigabit Gb 1024 Mb Terabit Tb 1024 Gb Petabit Pb 1024 Pb Exabit Eb 1024 Pb
23 = 8, posizione 3 … Rappresentazione binaria (in base 2) Il numerale 100100112 in notazione binaria rappresenta la quantità: 12^7 + 02^6 + 02^5 + 12^4 +02^3 + 02^2 + 12^1 + 12^0 128+0+0+16+0+0+2+1= 147 Massimo numero rappresentabile Il numero più grande esprimibile con un dato di cifre NON coincide con il numero di informazioni rappresentabili! Con 2 cifre decimali rappresento 100 numeri, ma il numero più grande è 99 10 Numeri a 2 cifre sistema decimale: 100 numeri diversi da 0 10 a 99 10 il massimo numero rappresentabile è 10^2 - sistema binario: 4 numeri diversi da 0 2 a 11 2 il massimo numero rappresentabile è 2^2 - Numeri a N cifre sistema decimale: 10 N^ numeri diversi massimo numero rappresentabile 10N- sistema binario: 2 N^ numeri diversi massimo numero rappresentabile 2N- Quando si è definito il numero di cifre con cui si rappresentano i numeri si definisce il massimo numero rappresentabile Conversione da base 2 a base 10 È sufficiente moltiplicare ogni bit per il suo peso e sommare 110102 = 12^4 +12^3 + 02^2 + 12^1 + 0*2^0 = 16+8+0+2+0 = 26 10
Codice ASCII
Utilizza i 7 bit meno significativi di un byte, 128 caratteri rappresentabili Rappresenta le lettere dell’alfabeto anglosassone maiuscole e minuscole, le cifre, i segni di punteggiatura. Le lettere maiuscole hanno associato un codice più piccolo delle lettere minuscole. problema → insufficiente per rappresentare i comuni segni diacritici Codice ASCII esteso Usa 8 bit, 256 caratteri rappresentabili I 256 caratteri dell’ASCII esteso non bastano per alcuni sistemi di scrittura. Non esiste un unico ASCII esteso ma uno diverso per ogni lingua.
Decodifica ASCII A partire da una sequenza di bit in codice ASCII si divide la sequenza in gruppi di 8 bit 01101001 01101100 00100000 01010000 01101111 00101110 i l P o. Le cifre da 0 a 9 rappresentate in ASCII sono caratteri e non quantità numeriche quindi NON possono essere utilizzate per rappresentare quantità da utilizzare in calcoli aritmetici. Quindi se chiediamo al computer di ordinare alfabeticamente “3” e “20983” le metterà:
- 20983
- 3
Unicode
due standard equivalenti coprono tutti i sistemi di scrittura del mondo utilizza fino a 4 byte per ogni carattere quindi ci sono oltre 4 miliardi di possibili caratteri rappresentabili UTF (Unicode Transformation Format) definisce come codificare il numero di un carattere Unicode come sequenza di bit UTF- i caratteri codificati con 8 bit coincidono con i caratteri ASCII UTF- usata interamente da Windows
Codifica delle immagini
L’immagine viene suddivisa da una griglia formata da linee a distanza costante. Ogni quadrato derivante da tale suddivisione viene chiamato pixel e può essere codificato in binario con la convenzione che: 0 = pixel bianco, ovvero in cui il bianco è predominante 1 = pixel nero, ovvero in cui il nero è predominante I pixel si leggono da sx verso dx e dal basso verso l’alto. La rappresentazione della figura è quindi: 0000000 0111100 0110000 0100000 Non sempre il contorno della figura coincide con le linee della griglia: digitalizzando un’immagine si ha sempre un’approssimazione dell’immagine stessa.
- sull’asse delle x viene rappresentato il tempo
- sull’asse delle y viene rappresentata la variazione di pressione tempo e intensità sono quantità analogiche Per passare dalla rappresentazione analogica a quella digitale si effettuano dei campionamenti sull’onda e si codificano in forma digitale le informazioni (numeriche) estratte da tali campionamenti. Maggiore è la frequenza dei campionamenti, migliore sarà la precisione con cui il segnale viene memorizzato e la fedeltà all’originale. Occorre discretizzare l’ampiezza di ogni campione per poterla esprimere con un numero binario. A ogni livello viene assegnata una sequenza binaria. Ogni campione viene approssimato al livello più vicino, indicato con il cerchio. Ogni campione sarà espresso dal numero binario corrispondente al livello più prossimo. La sequenza dei valori numerici ottenuta dai campioni viene digitalizzata. Si ha una discretizzazione in tempo e una sul valore.
Architettura dell’elaboratore
La macchina di Von Neumann è costituita da:
- un’unità di elaborazione centrale (CPU)
- una memoria divisa in celle
- due nastri divisi in celle → input (ingresso) → output (uscita) Hardware
- elabora le informazioni (CPU → processore)
- memorizza informazioni (memoria principale → RAM)
- eseguire input e output Funzionamento ad alto livello
- all’avvio dell’elaboratore, programmi e dati risiedono in memoria secondaria.
- i programmi per essere eseguiti devono essere portati in memoria principale. Così anche i dati per essere utilizzati dai programmi.
- La CPU esegue i programmi eseguendo le istruzioni di cui sono composti.
- Avviene l’input/output e la memorizzazione su memoria secondaria.
La memoria principale
Serve a memorizzare un vasto numero di programmi e dati di ogni tipo. È strutturata in celle di memoria. Ogni cella memorizza un byte. Le celle sono numerate in sequenza → indirizzo. Lo spazio di indirizzamento è l’insieme o il numero delle celle indirizzabili direttamente. Il numero di celle indirizzabili è una potenza di 2. numero di celle indirizzabili = numero di informazioni rappresentate con un certo numero di bit. Random Access Memory (RAM) → memoria di accesso casuale
- si può accedere direttamente alle varie celle una volta noto il loro indirizzo
- il tempo necessario per accedere ad una cella è lo stesso La RAM è veloce → il tempo di lettura/scrittura di una cella è compreso tra 5 e 30 nanosecondi. La RAM è volatile → se viene tolta l’alimentazione tutto ciò che contiene viene perso. La RAM è relativamente costosa. Read-Only Memory (ROM) → memoria in sola lettura
- non può essere modificata
- non è volatile
- veloce quasi quanto la RAM
- usata per memorizzare programmi e dati necessari all’avvio dell’elaboratore Memoria cache Ha le stessa proprietà della RAM ma:
- è più veloce
- è localizzata tra la CPU e la RAM
- memorizza i dati di uso frequente
- influisce pesantemente sulle prestazioni e sul costo della CPU
La CPU
Esegue programmi scritti in linguaggio macchina. Ogni tipo di processore è in grado di eseguire un numero limitato di istruzioni.
- non volatile
- lenta La CPU può eseguire esclusivamente programmi che risiedono nella memoria principale. I programmi che risiedono in memoria secondaria devono essere copiati in memoria principale. Quando si esegue un programma, il sistema operativo lo copia dalla memoria secondaria in RAM: l’operazione si chiama loading o caricamento. La memoria secondaria è composta da:
- supporti di memorizzazione → componente fisico in cui vengono immagazzinati i dati
- dispositivi di memorizzazione → leggono/scrivono dati dal/sul supporto di memorizzazione La memoria magnetica sfrutta il fenomeno fisico della polarità. Sul supporto sono presenti particelle magnetiche. La testina di lettura/scrittura cambia/rileva la polarità delle particelle. Prese due particelle magnetiche adiacenti:
- stessa polarità → 0
- diversa polarità → 1 La memoria ottica sfrutta la riflessione della luce di un laser. Sul supporto sono presenti minuscole scanalatura ( pit ) che formano zone chiare e zone scure.
- chiaro/scuro o scuro/chiaro → 1
- chiaro/chiaro o scuro/scuro → 0
I dispositivi di input
- tastiera
- dispositivi di puntamento
- microfono
- scanner
- fax
I dispositivi di output
- stampanti
- videoterminali
- videoproiettori
- casse acustiche
- plotter Il bus è una linea di comunicazione per la trasmissione di informazioni tra i vari componenti del sistema. È un insieme di collegamenti in rame. Tutti i componenti del sistema sono collegati al bus. Il bus locale è un’evoluzione del bus di sistema, per il collegamento veloce tra CPU, memoria e periferiche veloci.
Il sistema operativo
Il software è un insieme di programmi che permettono di trasformare l’insieme dei circuiti elettronici in un oggetto in grado di svolgere funzioni di varia natura.
I computer sono programmabili : possono svolgere compiti diversi in base a istruzioni contenute nei programmi. Il sistema operativo è l’insieme di programmi che interagiscono e cooperano tra di loro per:
- gestire efficacemente il computer e le sue periferiche
- creare un ambiente virtuale per facilitare l’interazione uomo.macchina Il sistema operativo esegue un comando:
- verifica se si tratta di un comando valido
- lo traduce per la macchina fisica
- eseguito il comando fornisce un riscontro all’utente e si pone in attesa di un nuovo comando Funzioni svolte dal sistema operativo:
- accensione e figurazione della macchina (bootstrap)
- gestione del processore
- gestione della memoria (principale e virtuale)
- linguaggio ad alto livello per l’interazione con l’utente
- gestione e accesso alle informazioni su memoria secondaria
- gestione e uso ottimale delle risorse di input/output
- supporto per la comunicazione tra elaborati
- supporto per i programmi applicativi
- ambienti di programmazione Il bootstrap → avvio dell’elaboratore All’accensione della macchina, in un programma, il BIOS, in ROM cerca sulla memoria secondaria il sistema operativo e ne carica una parte in RAM. La CPU esegue solo programmi in memoria principale. La RAM è volatile → mettere i programmi in memoria secondaria. Per caricare i programmi da memoria secondaria usiamo il file system ma il sistema operativo risiede in RAM → usare un piccolo programma (BIOS) che ha il compito di caricare il sistema operativo in memoria secondaria. La CPU esegue solo programmi in memoria principale → memorizzare il BIOS in una parte della memoria principale non volatile, la ROM. Avvio dell’elaboratore → viene caricata la prima parte del sistema operativo che comprende:
- programmi per gestire processi e CPU
- programmi per gestire la memoria
- programmi per gestire periferiche e I/O
- programmi per gestire il File System
- programma che crea l’interfaccia utente All’avvio vengono identificati tutti i dispositivi di memoria secondaria e tutte le periferiche e vengono avviati i relativi programmi di gestione. Gestione del processore → sistemi operativi multitasking Un processo può trovarsi:
- in esecuzione nella CPU
- in attesa che un’operazione di I/O termini
- pronto cioè può andare in esecuzione ma la CPU è occupata ad eseguire un altro processo
router guarda l’indirizzo di destinazione e li trasmette a un altro router il quale si occuperà di farli pervenire all’elaboratore. Tipi di reti Due modi per classificare le reti
- topologia → quali collegamenti esistono tra i calcolatori
- estensione → area coperta dalla rete Tipi di rete in base alla topologia : a bus (lineare) → tutti i nodi sono collegati tramite una stessa linea. Il segnale emesso da un nodo percorre tutta la linea, raggiungendo così la destinazione. ad anello → i nodi sono collegati in una struttura circolare. Ogni nodo è collegato solo ad altri due nodi. Il segnale emesso da un nodo passa al successivo; finché non raggiunge il destinatario viene ritrasmesso al nodo seguente. a stella → i nodi sono collegati a un nodo centrale. La comunicazione tra due nodi avviene attraverso il nodo centrale. L’informazione trasmessa da un nodo viene smistata dal nodo centrale verso il nodo di destinazione. punto-punto (paritetiche) → i nodi sono collegati a coppie e operano allo stesso livello. La comunicazione è diretta tra due nodi. È utilizzabile solo per pochi nodi. Tipi di rete in base all’ estensione : rete personale (PAN, Personal Area Network) → collega due o più dispositivi vicini a un utente. rete locale (LAN, Local Area Network) → collega due o più computer in un’area non più vasta di un palazzo. rete metropolitana (MAN, Metropolitan Area Network) → simile a una rete locale ma collega i computer in un’area delle dimensioni di una città. rete geografica (WAN, Wide Area Network) → collega computer distribuiti su aree molto vaste.
Internet e World Wide Web
internet → rete di (sotto)reti, reti collegate tra loro grazie ai protocolli TCP/IP Internet → la specifica internet che collega fra loro reti locali di tutto il mondo Le reti locali si collegano a Internet tramite un dispositivo chiamato router. I router instradano i pacchetti tra le varie sottoreti. Ogni elaboratore in rete deve possedere un nome altrimenti non sarebbe possibile comunicare con esso. Il nome si chiama indirizzo e viene usato per:
- identificare l’elaboratore
- localizzare l’elaboratore nella rete Un elaboratore possiede due indirizzi:
- indirizzo IP
- indirizzo logico Gli indirizzi IP sono numerici e hanno attualmente un formato a 4 byte. Gli indirizzi Ip permettono di localizzare un elaboratore, cioè sapere a quale parte di Internet è collegato, in modo da recapitargli i messaggi.
Gli indirizzi Ip sono usati dai programmi di comunicazione, ma sono ostici per gli umani. Quindi, gli elaboratori in rete possono avere un nome logico, più semplice e intuitivo. Gli indirizzi logici sono composti da due o più parti separate da punti. Specificano domini, sottodomini, sotto-sottodomini e via così fino a identificare il singolo elaboratore collegato in rete. I domini di primo livello possono essere:
- geografici → .it .uk .de - generici → .com .org .edu Il DNS è il servizio che gestisce la traduzione tra indirizzi logici e indirizzi IP. Il World Wide Web è un servizio basato su Internet, non è un sinonimo. È costituito da documenti ipertestuali che si trovano su elaboratori distribuiti in tutto il mondo. I contenuti dei vari documenti sono in genere collegati fra loro mediante link. I contenuti sono consultabili mediante programmi chiamati browser. Un sito web è una locazione sul WWW; contiene documenti per il web gestiti da una organizzazione. L’home page di un sito web è il primo documento che gli utenti vedono; fa da guida al contenuto del sito e consente di accedere in modo semplice alle sue parti mediante link. Un server web è un elaboratore che trasmette le pagine web; ha un indirizzo Ip e un indirizzo logico. Un server web ospita uno o più siti web. I link ipertestuali sono parti “sensibili” nel documento web che consentono di muoversi da un documento a un altro. HTML è il linguaggio con cui sono scritte le pagine web HTTP è il protocollo usato per le comunicazione Il browser è il programma che permette di reperire e visualizzare i documenti HTML sui siti web. Le pagine web possono essere dinamiche : il server web crea le pagine “al volo” in base alle richieste del browser. Gli indirizzi logici e IP non sono sufficienti per identificare un determinato documento nel web:
- un server può avere più documenti
- può fornire più servizi Quindi ai documenti web viene associato un indirizzo URL al fine di essere reperiti. Un URL è composto da:
- protocollo → tipo di servizio richiesto (http://, https://, ftp:// ecc)
- host → web server che gestisce il documento (www.unito.it)
- percorso del file → indica la posizione nel file system del file che contiene il documento; è specificato con un pathname, con le directory separate da /
- parametri → presente nelle pagine web dinamiche
- identificatore del frammento → indica una parte specifica del documento La posta elettronica è un servizio che permette di spedire e ricevere messaggi elettronici. Gli utenti hanno un indirizzo composto da:
- nome utente
- chiocciola
- dominio
Multimedialità
Multimedialità → integrare più media sullo stesso dispositivo
- persistenti → i dati hanno un tempo di vita che non è limitato a quello delle singole esecuzioni delle applicazioni
- condivisi → condivisibili da più utenti che utilizzano varie applicazioni garantendo:
- affidabilità → il DBMS garantisce il contenuto del DB in caso di malfunzionamenti
- privatezza → utenti svolgono solo determinate azioni sui dati
- efficienza → le operazioni devono essere svolte in tempi accettabili per l’utente nonostante la grande mole di dati. Utilizzare al meglio le risorse di spazio di memoria e tempo
- efficacia → cercano di rendere produttiva l’attività dell’utente, offrendo funzionalità articolate, potenti e flessibili La condivisione permette di evitare ridondanza e incoerenza. La ridondanza aumenta i dati da gestire, aumenta il rischio di errori e usa più spazio di memoria secondaria. I DB forniscono meccanismi per gestire la concorrenza e regolamentare gli accessi. Utenti del database:
- amministratore → responsabile della progettazione, controllo e amministrazione
- progettisti e programmatori di applicazioni
- utenti modello di dati → insieme di concetti utilizzati per organizzare i dati di interesse e descriverne la struttura modello logico dei dati → adottato nei DBMS per l’organizzazione dei dati. Descrive i dati a un livello intermedio tra ciò che vede l’utente e il livello dell’implementazione modelli logici:
- gerarchico → struttura gerarchica, albero
- reticolare → struttura a grafo
- relazionale → struttura a tabelle
- orientato agli oggetti → struttura a classi/oggetti
- XML → rivisitazione del modello gerarchico, è semistrutturato Modello relazionale Basato sul concetto di relazione e di tabella. Relazione → rappresentazione di un’entità complessa tramite attributi Graficamente una relazione può essere rappresentata da una tabella:
- colonna = attributo
- riga = valore degli attributi di un individuo appartenente all’entità Le entità (i fatti) compongono le righe (record). Le caratteristiche delle entità sono le colonne (attributi). Il valore di un attributo per una specifica entità compone le celle (campi). Tutti i record di una tabella hanno lo stesso formato, cioè gli stessi attributi. Una query permette di specificare:
- cosa cercare all’interno del DB (criteri di selezione)
- quali informazioni (campi) visualizzare Una query crea una nuova tabella temporanea con i campi e i record di interesse. In una query si specificano:
- i campi da includere nel risultato
- i criteri di selezione delle informazioni, specificati attraverso operatori di confronto.
Il modello Entità-Relazioni
Progettazione concettuale
Fa riferimento a un modello concettuale dei dati. I modelli concettuali ci consentono di descrivere l’organizzazione dei dati a un alto livello di astrazione. Progettazione logica Traduzione dello schema concettuale nel modello di rappresentazione dei dati. Fa riferimento a un modello logico dei dati ovvero indipendente dai dettagli fisici ma concreto. Progettazione fisica Fa riferimento a un modello fisico di dati ovvero dipendente dallo specifico DBMS scelto. Il modello Entità-Relazione è un modello concettuale dei dati utilizzato per la progettazione concettuale. Fornisce una serie di strutture atte a descrivere la realtà di interesse, ovvero per la descrizione dell’organizzazione dei dati a un alto livello di astrazione. Entità → rappresentano classi di oggetti che hanno proprietà comuni ed esistenza autonoma ai fini dell’applicazione di interesse. Occorrenza di un’entità = elemento dell’insieme che l’entità rappresenta. Relazione → rappresenta un legame logico tra due o più entità. Un’occorrenza di relazione è una n-upla costituita da occorrenze di entità. Ogni relazione ha un nome che la identifica. Possono esistere relazioni diverse che coinvolgono le stesse entità. Attributi → descrivono le proprietà elementari di entità o relazioni che sono di interesse ai fini dell’applicazione. Un attributo associa a ciascuna occorrenza di entità o di relazione un valore appartenente al dominio dell'attributo. Il dominio sono i valori ammissibili per l’attributo. Attributi composti → può risultare comodo raggruppare attributi che presentano affinità nel loro significato e uso. L’insieme di attributi che si ottiene in questa maniera viene detto attributo composto. Cardinalità → vengono specificate per ciascuna partecipazione di entità a una relazione. Descrivono il numero minimo e massimo di occorrenze di relazione cui una occorrenza dell’entità può partecipare. Identificatori delle entità → descrivono i concetti che permettono di identificare univocamente le occorrenze delle entità
Il modello relazionale
Modello logico dei dati basato sul concetto di relazione o tabella. Garantisce indipendenza fisica dei dati. Gli utenti che accedono ai dati e programmatori che sviluppano applicazioni fanno riferimento al livello logico dei dati. In una tupla di una relazione un attributo può non avere valore. NULL → valore nullo chiave → insieme di attributo usato per identificare univocamente le tuple di una relazione superchiave → un insieme K di attributi è detto superchiave di una relazione r se r non contiene due tuple t1 e t2 con t1[K]=t2[K] K è una chiave di r se è una superchiave minimale di r. Il fatto che ogni schema di relazione abbia almeno una chiave garantisce:
- identificabilità univoca dei dati
- definizione di corrispondenze tra dati contenuti in relazioni diverse Una delle chiavi della relazione viene definita chiave primaria e non può avere valori nulli. Vincoli di integrità referenziale servono a garantire che i riferimenti tra tabelle siano possibili.
Quando y è 1 e v è maggiore abbiamo una relazione uno a molti. Relazione asimmetrica. Ogni elemento di E1 è in relazione al più comune elemento di E2 mentre ogni elemento di E2 può essere in relazione con più elementi di E1. Se y e v valgono uno abbiamo una relazione uno a uno. Ogni elemento di E1 è al più in relazione con un elemento di E2 e viceversa. Relazione N:N
- traduzione entità
- tradurre la relazione a R che è una relazione molti a molti
- metto le chiavi delle due entità e aggiungo eventuali attributi della relazione Quando ho una relazione molti a molti genero una nuova tabella in cui metto la chiave della prima tabella E1, la chiave della seconda tabella E2 e gli attributi specifici della relazione. Ogni tabella ha almeno una chiave. La chiave della nuova tabella è l’unione di id1 e id2. Voglio poter ripetere gli elementi di id1 e di id2 ma non devo ripetere la coppia. Dobbiamo aggiungere i vincoli di integrità referenziale:
- id1 di R che punta verso id1 di E
- id2 di R che punta verso id2 di E Facciamo questo perché vogliamo avere come valori possibili di id1 solo valori che compaiono già nella tabella E1, stessa cosa per E2. Relazione 1:N
- traduzione entità
- tradurre la relazione → esistono due alternative Alternativa 1 Creo una tabella R dove metto la chiave di E1, quella di E2 e gli eventuali attributi della relazione. La chiave è soltanto id1 perchè è la chiave della tabella che partecipa con cardinalità massima a 1. Perché se noi prendiamo gli elementi di E1 questi saranno al massimo in relazione con un elemento di E2. Quindi in termini di tabella significa che non dovrò mai ripetere i valori di E1. I vincoli sono id1 di R verso id1 di E1 e id2 di R verso id2 di E2. Alternativa 2
Abbiamo tradotto le entità. Possiamo non creare una nuova tabella e andare a modificare una di quelle esistenti. Andiamo a modificare la tabella di E1, perchè è quella che partecipa con cardinalità massima a 1, e andiamo a mettere in E1 gli attributi che avremmo messo nella nuova tabella. La chiave resta id1. Devo solo aggiungere il vincolo da id2 di E1 a id2 di E2. Relazione 1: Alternativa 1 Traduco le entità. Volendo posso generare la nuova tabella come nel molti a molti. La chiave è o id1 o id2. Posso scegliere. Ne sottolineo una e l’altra la tratteggio perchè è una chiave candidata. I vincoli sono sempre gli stessi. Alternativa 2 Versione simmetrica dell’alternativa 1 Alternativa 3 Traduco le entità. Non creo la nuova tabella ma vado ad aggiungere elementi a quella di E1. La chiave è id1, id2 è chiave candidata. Aggiungo i vincoli che sono id2 di E1 verso id2 di E2. Alternativa 4 Versione simmetrica dell’alternativa 3.