BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un...

22
BIOINFO3 - Lezione 3 1 TIPI DEI CAMPI TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può contenere solo valori di un tipo ben preciso, oppure il simbolo speciale NULL, se per quel record il campo non ha un valore definito. Ora cominceremo a vedere i tipi dei dati (i più utilizzati)

Transcript of BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un...

Page 1: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 11

TIPI DEI CAMPITIPI DEI CAMPI

Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può contenere solo valori di un tipo ben preciso, oppure il simbolo speciale NULL, se per quel record il campo non ha un valore definito.

Ora cominceremo a vedere i tipi dei dati (i più utilizzati)

Page 2: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 22

Bit e Byte

Il funzionamento dei computer si basano sulla presenza assenza di segnale elettrico all`interno dei milioni di circuiti che lo compongono: in definitiva l`attivita` di un computer consiste essenzialmente nella continua rapidissima combinazione e propagazione di questi segnali al propio interno, sotto il controllo del clock.

Tutti i dispositivi di memoria rispecchiano questo dualismo di segnale (presente/assente, acceso/spento, aperto/chiuso, on/off, 0/1):RAM microcelle carica/scaricaROM contatti elettrici presenti/assentidischi elementi in grado di magnetizzarsi/smagnetizzarsiCD microelementi riflettenti/opachi

Page 3: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 33

L`elemento minimo di memoria e` quindi sempre costituito da un`unita` binaria (cioe` un`unita` che si puo` trovare in solo in due possibili stati), e viene detto bit (Binary digiT). I due stati sono di solito rappresentati con le cifre 0 o 1.

Per poter esprimere informazione piu` articolata si considerano gruppi di 8 bit, che formano un byte.

Un byte puo` assumere tutti gli stati da 00000000 a 11111111 , per un totale di 256 combinazioni (2x2x2.. 8 volte=256).

Il significato di ogni byte del file dipende dalla natura dei dati.. (es carattere di testo rappresentato con un byte in accordo con una tabella convenzionale detta ASCII)

Page 4: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 44

NUMERI INTERINUMERI INTERI

INT

Permette di memorizzare un numero intero (in uno spazio di 4byte=32 bit)

•Con segno (+/-)

Valori da –2.147.483.648 (-231) a 2.147.483.647 (231-1)

•Senza segno (si usa la parola chiave UNSIGNED)

Valori da 0 a 4.294.967.295 (232-1)

bit (0/1)

byte (8 bit)bit del segno (0=+/1=-)

31 bit

1111111 11111111 11111111 11111111 1

20=1232

Page 5: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 55

NUMERI INTERINUMERI INTERI

In MySQL esistono delle varianti dei numeri interi base che permettono di risparmiare spazio se i numeri interi da inserire in un campo di tipo int sono sempre piccoli o di riservare più spazio se i valori sono molto grandi.

TINYINT utilizza solo 1 byte (=8 bit)

Valori da –128 a 127 (da 0 a 255 se tinyint unsigned)

SMALLINT utilizza 2 byte (=16 bit) (-32768 a 32767, 0 65535)MEDIUMINT utilizza 3 byte (-8388608 a 8388607, 0 16777215)BIGINT utilizza 8 byte

(-9223372036854775808 a 9223372036854775807,

0 18446744073709551615)

Page 6: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 66

NUMERI REALINUMERI REALI

Numeri reali in virgola mobile (notazione scientifica)

FLOAT (non puo` essere unsigned)

Numeri in virgola mobile a precisione semplice (4 byte)

da –3.402823466E+38 a –1.17549435E-38 (negativi)

0

da 1.17549435E-38 a 3.402823466E+38 (positivi)

DOUBLE PRECISION, REAL

da –1.7976921248623257E+308 a –2.2250738585072014E-308 (-)

0

Da 2.2250738585072014E-308 a 1.7976921248623257E+308 (+)

Page 7: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 77

NUMERI REALINUMERI REALI

Numeri reali in virgola fissa (uso tipico)

DECIMAL

decimal(n,d)

Se i numeri da utilizzare hanno sempre lo stesso formato (lo stesso numero di cifre decimali) si utilizza decimal

Ad esempio se si dovessero memorizzare dei prezzi in euro potremo utilizzare decimal(8,2)

Se i numeri sono invece estremamente eterogenei e comunque in notazione scientifica si usa float (o double precision)

n cifre complessive

d cifre decimali

59.21

Page 8: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 88

STRINGHE DI CARATTERISTRINGHE DI CARATTERI

Anche in questo caso esistono due possibilità, a seconda che i dati siano sempre della stessa lunghezza, oppure abbiano lunghezza variabile

CHAR

char(n)

Nel caso i dati siano sequenze di caratteri alfanumerici (lettere, numeri, punteggiatura, simboli), tutte della stessa lunghezza n, si utilizza char(n), dove n è compreso tra 1 e 255. (ogni n un bytes)

Ad esempio, se in una colonna volessimo memorizzare solo dei codici fiscali utilizzeremo char(16)

Se i dati sono più corti abbiamo uno “spreco” di spazio

n caratteri complessivi

66LCNN NC B637L51E

Page 9: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 99

STRINGHE DI CARATTERISTRINGHE DI CARATTERI

Se la lunghezza delle stringhe di caratteri è variabile si usa

VARCHAR

varchar(n)

In questo caso il sistema utilizza un byte supplementare per memorizzare la lunghezza l effettiva del dato. La lunghezza effettiva del dato dovrà essere sempre minore o uguale ad n. Ed n in ogni caso non può superare 255.

Se volessimo, ad esempio, memorizzare dei nomi (che sono tipicamente di varie lunghezze) potremo usare varchar(20)

Ovviamente all’utente non viene mostrato il primo byte, che viene utilizzato solo dal sistema per trattare il dato vero e proprio

l caratteri ( n)

l

al massimo n caratteri ( 255)

6 ALOCIN

Page 10: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1010

STRINGHE DI CARATTERISTRINGHE DI CARATTERI

Nel caso si debbano memorizzare stringhe di caratteri più lunghe di 255 (è il tipico caso delle sequenze biologiche!) si usa

TEXT

E’ equivalente a varchar però usa 2 byte (anziché 1) per memorizzare la lunghezza effettiva del dato.

l caratteri ( n)

l 2 byte

?

Quanti caratteri possono stare al massimo in un campo text?

In 2 byte ci sono 16 bit, quindi al massimo 216-1, cioè 65535

Per stringhe ancora più lunghe si usaLONGTEXT

Utilizza 4 byte per memorizzare la lunghezza effettiva del dato

Page 11: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1111

ENUM

E` un tipo di stringa il cui valore e` scelto a partire da una lista di valori consentiti esplicitamente definiti durante la crazione della tabella.

enum (‘uno’,’due’,’tre’);Se viene inserita una stringa non contenuta nell`enum, viene inserita una stringa vuota. Questa puo` essere distinta da una stringa vuota perche` la stringa ha il valore numerico 0.

Valore Indice

NULL NULL

“” 0

“uno” 1

‘due’ 2

Page 12: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1212

DATA E ORADATA E ORA

E’ possibile memorizzare una data

DATE

Formati permessi: YYYY-MM-DD, YY-MM-DD, YYMMDD

Ad esempio 2003-03-05

E’ possibile memorizzare un’ora

TIME

Formati permessi: HH:MM:SS, HHMMSS HHMM

Ad esempio 10:45:37

Page 13: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1313

LA PROGETTAZIONE DI UN DATABASELA PROGETTAZIONE DI UN DATABASE

Si possono individuare almeno tre fasi sucessive

SCHEMA

CONCETTUALE

DEI DATI

SCHEMA

LOGICO

DEI DATI

SCHEMA

FISICO

DEI DATI

Aspetto del mondo reale da

“modellare”

ANALISI:

Individuare le entità e le loro relazioni

Entità e relazioni

Tabelle

Implementazione fisica (file, indice,

programmi di gestione DB)

CI PENSA

IL DBMS!

Page 14: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1414

SCHEMA ESTERNOSCHEMA ESTERNO

Parallelamente allo schema concettuale dei dati in genere è richiesta anche la progettazione di uno schema esterno.

Lo schema esterno rappresenta l’insieme degli strumenti (il più user-friendly possibile, cioè utilizzabili, ad esempio attraverso interfacce grafiche, anche da chi non conosce SQL) che l’utente finale avrà a disposizione per interagire con il DB (effettuare ricerche, inserimenti, modifiche o cancellazioni dei dati)

Gli strumenti potrebbero ad esempio essere delle pagine web (es. Pubmed), con form per inserire (o selezionare) dei criteri di ricerca

Page 15: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1515

LA PROGETTAZIONE DELLE TABELLELA PROGETTAZIONE DELLE TABELLE

Individuate le entità da rappresentare si cercano di individuare le loro relazioni e gli attributi di ciascuna, cioè i vari aspetti da considerare.

Relazione 1:moltiAd una sequenza di DNA possono

corrispondere molti elementi regolatori

Relazione 1:1Ad un sito di legame per

fattori di trascrizione corrisponde un record di

TRANSFAC

Esempio. La regolazione della trascrizione del DNA.

Potremmo considerare come entità: sequenze di DNA, geni, elementi regolatori, siti di legame per fattori di trascrizione

Un possibile schema delle relazioni tra le entità potrebbe essere

Page 16: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1616

IDENTIFICAZIONE DEI CAMPIIDENTIFICAZIONE DEI CAMPILa TABELLA sequenze-DNA potrebbe ad esempio avere campi:

id (una stringa di caratteri)

sequenza (stringa di almeno 65535 caratteri, ma meno del cromosoma più lungo e sicuramente meno di 3G)

descrizione (stringa di caratteri, meno di 255)

TABELLA elementi-regolatori:

id (una stringa di caratteri)

sequenza-dna (l’id di una sequenza-DNA)

posizione-iniziale (numero, molto grande)

posizione-finale (numero, molto grande)

TABELLA siti-legame:

id (una stringa di caratteri)

elemento-regolatorio (l’id di un elemento-regolatorio)

posizione-iniziale (numero)

posizione-finale (numero, molto grande)

codice-TRANSFAC (stringa caratteri)

Page 17: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1717

ESEMPIO CONCRETOESEMPIO CONCRETO

Per chiarirsi le idee pensiamo ad una sequenza di DNA che chiamiamo Sc-chr1. Avremo un record della tabella sequenze-DNA avente il campo id contenente Sc-chr1; il campo sequenza conterrà l’intera sequenza e la descrizione ad esempio “cromosoma 1 del Lievito”. Nella sequenza Sc-chr1 supponiamo di avere individuato due elementi regolatori: er1 e er2 rispettivamente nei tratti di sequenza 100-180 e 15400-15500. Nell’elemento er1 supponiamo di avere individuato tre siti di legame slA, slB e slC nelle posizioni rispettivamente 1-8, 19-20 e 65-80

id sequenza descrizione

Sc-chr1 ACTAGCTGCT.... Cromosoma 1 del Lievito

id sequenza-DNA posizione-iniziale posizione- finale

er1 Sc-chr1 100 180

er2 Sc-chr1 15400 15500

id elemento-regolatorio posizione-iniziale posizione- finale codice-TRANSFAC

slA er1 1 8

slB er1 19 20

slC er1 65 80

Page 18: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1818

CREAZIONE DI UNA TABELLACREAZIONE DI UNA TABELLA

Una volta effettuata l’analisi (creato uno schema concettuale dei dati, individuate le entità e i loro attributi) e progettato (su carta) lo schema logico dei dati si può chiedere al DBMS la costruzione fisica del database.

Si usa il comando CREATE TABLE per creare ciascuna tabella

create table <nome tabella>(

<definizione campo1>,

<definizione campo2>,

……………

<definizione campon>

)

Dove <definizione campo>::= <nome colonna> <tipo colonna>

Page 19: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 1919

UN ESEMPIOUN ESEMPIO

Creare la tabella sequenze-DNA per memorizzare e gestire sequenze di DNA

create table sequenze-DNA(

id varchar(20) primary key,

sequenza longtext,

descrizione varchar(255)

)

Si può notare la definizione del campo id come chiave della tabella. Potrebbe succedere anche che come chiave sia necessario scegliere una combinazione di due o più campi, ma noi non affronteremo l’argomento.

Page 20: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 2020

ALTRO ESEMPIOALTRO ESEMPIO

Progettare il comando di creazione di una tabella esami. Per ogni esame si avrà un codice numerico che lo identifica, una materia, una data, un’ora, un’aula e il piano dell’aula. Provate voi ora!

Page 21: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 2121

ALTRO ESEMPIOALTRO ESEMPIO

Progettare il comando di creazione di una tabella esami. Per ogni esame si avrà un codice numerico che lo identifica, una materia, una data, un’ora, un’aula e il piano dell’aula.

create table esami(

id int unsigned primary key,

materia varchar(50),

datae date,

ora time,

aula char(1),

piano char(1)

)

N.B. Uso datae perché data è una parola riservata di MySQL

Page 22: BIOINFO3 - Lezione 31 TIPI DEI CAMPI Abbiamo concluso la lezione precedente scoprendo che in un database relazionale SQL ogni campo di una tabella può

BIOINFO3 - Lezione 3 2222

RIEPILOGORIEPILOGO

•Tipi dei campi: numeri interi e reali, stringhe, date e ore

•Progettazione di un database: schema concettuale, schema logico e schema fisico

•Lo schema esterno

•Progettazione tabelle

•Creazione di una tabella: comando CREATE