Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Creare un server casalingo - 3
Installare Mysql Introduzione al modello relazionale e al linguaggio SQL Installare PhpMyAdmin
2
Introduzione ai Database
Un database è una collezione organizzata di dati. Viene salvato in un sistema informatico e si può accedere a tali dati effettuando query in un particolare linguaggio (Sql nel nostro caso) Il DBMS è il sistema che permette la manutenzione di un database. Nel nostro caso andremo a vedere MySql I database sono organizzati secondo un modello logico - gerarchico - reticolare - relazionale (quello di MySql)
3
Che cos’è MySql MySQL o Oracle MySQL è un Relational database management system (RDBMS) composto da un client a riga di comando e un server. Entrambi i software sono disponibili sia per sistemi Unix e Unix-like che per Windows; le piattaforme principali di riferimento sono Linux e Oracle Solaris. MySQL è un software libero rilasciato a doppia licenza, compresa la GNU General Public License ed è sviluppato per essere il più possibile conforme agli standard ANSI SQL e ODBC SQL. Da Wikipedia, l’enciclopedia libera
4
Installare Mysql In Debian/Ubuntu/Raspbian è molto semplice
sudo apt install mariadb-server Dopo l’installazione per impostare la password di amministratore sudo mysql_secure_installation Connettiamoci poi alla shell di Mysql usando le credenziali di amministratore sudo mysql -u root -p Digitiamo la password Siamo entrati! Creiamo poi un altro utente (ci servirà per entrare in PhpMyAdmin) Digitando il seguente comando nella shell Mysql che abbiamo aperto GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY ‘<pass_utente>’ WITH GRANT OPTION; Per chiudere la connessione a Mysql occorre digitare il comando Exit.
5
Introduzione al modello relazionale
Nel modello relazionale i dati sono organizzati in tabelle, in modo più formale relazioni. Un primo concetto importante da capire è la differenza tra schema e istanza di un database Uno schema è la definizione dei vari campi del modello dati Es. un libro può essere rappresentato da un autore, titolo, editore Una istanza rappresenta gli effettivi dati inseriti nel database secondo il modello definito Nel caso del libro, un esempio può essere Alessandro Manzoni – I promessi sposi – Einaudi Editore
6
Tre funzioni principali di un DBMS
DDL (Data Definition Language) → Serve per definire schemi logichi (es. i campi delle tabelle, per esempio quali campi deve contenere un libro) DML (Data Manipulation Language) → serve per interrogare e modificare le istanze del database DCL (Data Control Language) → include comandi per il controllo degli accessi del database In questo tutorial vedremo alcuni esempi delle prime due funzioni
7
Che cos’è una relazione
Si considerino n insiemi D1, D2,.., Dn. Il prodotto cartesiano D1*D2*DN è l'insieme di tutte le nple ordinate {d1,d2,dn) tali che d1 appartiene a D1,d2 appartiene a D2, dn appartiene a Dn Esempio D1={a,b,c} D2 = {1,2} D1*D2={(a,1),(a,2),(b,1),(b,2),(c,1),(c,2)} r={(a,1),(b,2),(c,1),(c,2)} è una relazione su D1 e D2 D1 e D2 sono i domini della relazione. Il valore di n è detto grado della relazione. Il numero di n-ple di una relazione è la sua cardinalità
8
Che cos’è una relazione - segue
Una relazione è semplicemente una tabella formata da colonne (attributi) che rappresentano le proprietà di interesse le cui righe (tuple) rappresentano i dati presenti nel database. La relazione è formata infatti dallo schema(nome relazione e nome attributi) e istanza (dati veri e propri).
9
Fasi di progettazione di un sistema informativo
Modello ER (rappresentazione grafica degli elementi del sistema e delle loro relazioni) Modello relazionale (l’effettiva implementazione in un DBMS, come Mysql)
10
Come si progetta un sistema informativo (Modello Entity-RelationShip
Insieme(classe) di oggetti della realtà di interesse che possiedono caratteristiche comuni e che hanno esistenza “autonoma”. Un entità si rappresenta attraverso un rettangolo nel modello ER. Attributi Sono le proprietà elementari di un'entità o di un'associazione. Gli attributi sono definiti su un dominio di valori. Possono essere attribuiti a un'entità o a un'associazione. Sugli attributi si può specificare la cardinalità massima e minima, ovvero il massimo o minimo numero di valori dell'attributo associato con ogni istanza dell'entità o associazione a cui è attribuito. La cardinalità massima può specificare quindi se un attributo è opzionale O, obbligatorio 1 Identificatore: permette l'individuazione univoca delle istanze di un'entità. Gli identificatori possono essere interni, se si usano uno o più attributi appartenenti all'entità considerata, esterni se non appartengono all'entità considerata. Se l'identificatore è costituito da un solo attributo si dice semplice, altrimenti composto. I vincoli possono essere anche di cardinalità. Sono coppie di valori associati a ogni entità che partecipa a un'associazione, che specificano il numero massimo di istanze dell'associazione a cui un'istanza dell'entità può partecipare. In caso di un'associazione binaria, l'associazione può essere 0,n 0,1 1,1 1,n Associazione: rappresenta un legame logico tra entità. Graficamente si rappresenta attraverso un rombo. Può avere un grado, il numero delle istanze di entità che sono coinvolte in un'istanza dell'associazione (il numero di rami dell'associazione). Le associazioni possono essere 1 a 1, 1 a N, N a N
11
Esempi (Associazione N a N)
Entità : Libri Attributi: Titolo, Autore, Editore Identificatore Titolo e Autore oppure un identificatore progressivo del libro che viene incrementato ogni volta che viene inserito un libro all’interno della tabella nel database Entita: Clienti Attributi: Codice Fiscale, Nome, Cognome Identificatore Codice Fiscale Associazioni tra Entità 1 persona può prendere in prestito più libri (1 A N) 1 libro può essere preso in prestito da più persone (1 a N) Questa relazione è N a N, (Più libri possono essere presi in prestito da più persone) composta da due associazioni a 1 a N. Per rappresentare questa associazione nel modello relazione abbiamo necessità di una nuova relazione chiamata Prestiti che contiene le due chiavi delle due entità associate, ovvero l’identificatore del libro e l’identificatore del cliente. Può contenere per esempio la data del prestito e la scadenza del prestito. In questo caso gli identificatore dell’associazione sono esterni, ovvero si riferiscono a tabelle esterne.
12
Il valore NULL Una tabella abbiamo visto che è composta da campi
Titolo Autore Editore E da varie righe (tuple) che rappresentano l’istanza della tabella Nell’inserimento dati potremmo non voler inserire l’Editore. In questo caso se andiamo a effettuare una query (vedremo come fare) in tale riga comparirà il valore NULL in corrispondenza del campo Editore Attenzione che nell’inserimento di una riga in una tabella potremmo voler evitare che l’Editore non sia inserito nella creazione dello schema della tabella. Per verificare in Sql (il linguaggio per interrogare un db relazionale) se è un campo è NULL si usa l’istruzione IS NULL
13
Sql, il linguaggio per interrogare un db relazionale
DDL Creare una tabella Usiamo l’istruzione CREATE TABLE Creiamo la tabella LIBRI CREATE TABLE LIBRI ( ID_LIBRO NOT NULL AUTO_INCREMENT, TITOLO VARCHAR(200) NOT NULL, AUTORE VARCHAR(50) NOT NULL, EDITORE VARCHAR(10) NOT NULL, PREZZO FLOAT NOT NULL, PRIMARY KEY (ID_LIBRO) ); id_libro è la chiave primaria della tabella, è auto_increment ovvero è un contatore che viene incrementato ogni volta che si inserisce una riga in una tabela Titolo, autore ed editore sono varchar ovvero possono essere contenere numeri e lettere. Tra parentesi è specificata la dimensione massima di caratteri ammessa. Nell’inserimento di una riga tali campi devono obbligatoriamente essere inseriti PREZZO è un numero reale, con virgola mobile
14
Sql, il linguaggio per interrogare un db relazionale
DML Inserire una riga insert into libri values (NULL, “I promessi sposi”, “Alessandro Manzoni”, “ComputerLucaEditions”,20.00) Cancellare una riga delete from libri where titolo = “I promessi sposi” Modificare una riga update libri set titolo=“I promessi sposi” where titolo=”Promessi sposi”
15
Sql, il linguaggio per interrogare un db relazionale
Interrogare un Database Una query in Sql si scrive usando questa sintassi SELECT TITOLO, AUTORE, EDITORE FROM LIBRI WHERE AUTORE=”Alessandro Manzoni” SELECT E FROM CI DEVONO SEMPRE ESSERE, MENTRE LA WHERE E’ FACOLTATIVA Con la select effettuiamo una proiezione, ovvero mostriamo solo alcuni campi della tabella (per esempio in questo caso non mostriamo l’id_libro) Con la where effettuiamo una selezione, ovvero tra le righe contenute nella tabella libri (specificata con from), prendiamo in considerazione solo quelle che hanno come campo autore Alessandro Manzoni
16
Effettuare Join Immaginiamo di volere recuperare le persone che hanno preso in prestito un determinato libro La tabella prestiti contiene l’id_libro e il codice fiscale, ma noi vogliamo avere anche il titolo e l’autore del libro e il nome e cognome della persona che ha preso in prestito il libro Dobbiamo pertanto utilizzare due join. Una join viene fatta tra due tabelle associate tra di loro in base a un campo comune alle due tabelle. In comune tra la tabella prestiti e la tabella Libri c’è in comune l’id_libro In comune tra la tabella prestiti e la tabella persone c’è in comune il codice fiscale In questo modo possiamo fare una query di questo tipo Select titolo, autore, nome, cognome From persona, libri, prestiti Where persona.codice_fiscale = prestiti.codice_fiscale And libri.id_libro = prestiti.id_libro C’è anche un altro modo per esprimere la stessa query Usando inner join From prestiti inner join libri on ( prestiti.id_libro = libri.id_libro) Inner join persona on (prestiti.codice_fiscale = persona.codice_fiscale)
17
Outer Join – Left Join 1) Libri che non sono stati presi in prestito da nessuno 2) Persone che non hanno preso in prestito nessun libro Creare una outer join Left join 1) Select titolo, autore, editore From libri left join prestiti on libri.id_libro = prestiti.id_libro Where prestiti.id_libro IS NULL 2) select nome, cognome from persona left join prestiti on persona.codice_fiscale = prestiti.codice_fiscale Where prestiti.codice_fiscale IS NULL
18
Ordinare il risultato Dopo la where si può usare la clausola ORDER BY per ordinare i risultati ottenuti nella query Select titolo, autore, editore from Libri Order by autore, titolo Possiamo specificare un campo o più campi. In questo caso viene pertanto prima effettuato l’ordine per autore e poi l’ordinamento per titolo. Di default l’ordinamento è ascendente (dalla a alla z, o dal numero più piccolo a un numero più grande) Se vogliamo ordinare dalla z alla a o dal numero più grande al numero più piccolo. E’ necessario specificare a fianco del campo DESC. Per esempio order by autore DESC, titolo In questo caso viene pertanto effettuato l’ordinamento del campo autore in modo decrescente, mentre il titolo in modo crescente
19
Raggruppare Il numero dei libri presi in prestito da una determinata persona Esempio select count(id_libro), codice_fiscale, nome, cognome from persona, prestiti where persona.codice_fiscale = prestiti.codice_fiscale group by codice_fiscale, nome, cognome Possiamo usare anche having insieme a group by per restituire solo le persone che hanno letto più di 20 libri select codice_fiscale, nome, cognome, count(id_libro) having count(id_libro) > 20 order by codice_fiscale, nome_cognome
20
Uno strumento grafico per gestire i database
Per gestire un database Mysql potremmo usare la shell incorporata, ma esiste uno strumento grafico, denominato phpmyadmin. L’installazione è molto semplice Si va sul sito Si preme sul pulsante download. Si va nella cartella Scaricati e si decomprime il file unzip phpMyAdmin all-languages.zip Si rinomina la cartella sudo mv phpMyAdmin all- languages.zip phpmyadmin Si sposta la cartella nella cartella /var/www/html di Apache PhpMyAdmin è installato e può essere utilizzato visitando l’url localhost/phpmyadmin
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.