Sei sulla pagina 1di 16

SQlSQlSQlSQl comecomecomecome DDLDDLDDLDDL

AngeloAngeloAngeloAngelo ChianeseChianese,ChianeseChianese,,, VincenzoVincenzoVincenzoVincenzo Moscato,Moscato,Moscato,Moscato, AntonioAntonioAntonioAntonio PicarielloPicariello,PicarielloPicariello,,, LucioLucioLucioLucio SansoneSansoneSansoneSansone

BasiBasiBasiBasi didididi datidatidatidati perperperper lalalala gestionegestionegestionegestione dell'informazionedell'informazionedell'informazionedell'informazione

2/ed2/ed2/ed2/ed

McGrawMcGraw-McGrawMcGraw--Hill-HillHillHill

CapitoloCapitoloCapitoloCapitolo 2222

AppuntiAppuntiAppuntiAppunti dalledalledalledalle lezionilezionilezionilezioni

dalledalledalledalle lezionilezionilezionilezioni Sistemi informativi e basi di dati La Progettazione
dalledalledalledalle lezionilezionilezionilezioni Sistemi informativi e basi di dati La Progettazione
Sistemi informativi e basi di dati La Progettazione Concettuale SQL come DDL La Progettazione Il
Sistemi informativi
e basi di dati
La Progettazione
Concettuale
SQL come DDL
La Progettazione
Il modello relazionale
SQL come DML
Logica
SQL come DCL
La Progettazione
Utilizzo di un
DBMS Reale
Fisica
Strumenti CASE
Forme normali
Programmazione
Transazioni e
tecnologie di supporto
Basi di dati
direzionali
Basi di dati
distribuite
2 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
SQLSQLSQLSQL SviluppatoSviluppatoSviluppatoSviluppato pressopressopressopresso ilililil CentroCentroCentroCentro
SQLSQLSQLSQL
SviluppatoSviluppatoSviluppatoSviluppato pressopressopressopresso ilililil CentroCentroCentroCentro didididi RicercaRicercaRicercaRicerca delldell’delldell’’IBM’IBMIBMIBM
NasceNasceNasceNasce comecomecomecome SeQueLSeQueLSeQueLSeQueL
DiventaDiventaDiventaDiventa poipoipoipoi SQL:SQL:SQL:SQL: StructuredStructuredStructuredStructured QueryQueryQueryQuery LanguageLanguageLanguageLanguage
Contiene:Contiene:Contiene:Contiene:
– DDLDDLDDLDDL (Data(Data(Data(Data DefinitionDefinitionDefinitionDefinition LanguageLanguage)LanguageLanguage)))
– DMLDMLDMLDML (Data(Data(Data(Data ManipulationManipulationManipulationManipulation Language)Language)Language)Language)
– DCLDCLDCLDCL (Data(Data(Data(Data ControlControlControlControl Language).Language).Language).Language).
IIII sistemisistemisistemisistemi commercialicommercialicommercialicommerciali spessospessospessospesso offronooffronooffronooffrono unaunaunauna serieserieserieserie didididi
strumentistrumentistrumentistrumenti chechecheche estendonoestendonoestendonoestendono lelelele funzionalitfunzionalitàfunzionalitfunzionalitààà definitedefinitedefinitedefinite aaaa
livellolivellolivellolivello didididi standard.standard.standard.standard.
3 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
LoLoLoLo standardstandardstandardstandard SQLSQLSQLSQL EE’EE’’’ unununun linguaggiolinguaggiolinguaggiolinguaggio
LoLoLoLo standardstandardstandardstandard SQLSQLSQLSQL
EE’EE’’’ unununun linguaggiolinguaggiolinguaggiolinguaggio didididi tipotipotipotipo dichiarativodichiarativodichiarativodichiarativo
SQLSQLSQLSQL BaseBaseBaseBase
– SQLSQL-SQLSQL--86-868686 ---- costrutticostrutticostrutticostrutti basebasebasebase
– SQLSQL-SQLSQL--89-898989 –––– integritintegritàintegritintegritààà referenzialereferenzialereferenzialereferenziale
SQLSQL-SQLSQL--2-222
– SQLSQL-SQLSQL--- 92:92:92:92: entryentryentryentry levellevel,levellevel,,, intermediateintermediateintermediateintermediate levellevel,levellevel,,, fullfullfullfull
SQLSQL-SQLSQL--3-333
– SQLSQL-SQLSQL--99-999999 –––– estensioneestensioneestensioneestensione adadadad oggetti,oggetti,oggetti,oggetti, trigger,trigger,trigger,trigger,
– SLSL-SLSL--2003-200320032003 –––– EstensioneEstensioneEstensioneEstensione deldeldeldel modellomodellomodellomodello aaaa oggetti,oggetti,oggetti,oggetti, SQL/XML,SQL/XML,SQL/XML,SQL/XML, …….……
LaLaLaLa suasuasuasua forzaforzaforzaforza stastastasta nelnelnelnel fattofattofattofatto didididi essereessereessereessere unounounouno standardstandardstandardstandard
– IIII sistemisistemisistemisistemi commercialicommercialicommercialicommerciali sonosonosonosono classificaticlassificaticlassificaticlassificati inininin basebasebasebase allallallall’’aderenza’’aderenzaaderenzaaderenza alloalloalloallo
standardstandardstandardstandard 92929292
EntryEntryEntryEntry LevelLevelLevelLevel (SQL(SQL-(SQL(SQL--89)-89)89)89)
IntermediateIntermediateIntermediateIntermediate LevelLevelLevelLevel
FullFullFullFull SQLSQLSQLSQL (SQL(SQL-(SQL(SQL--92)-92)92)92)
4 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
InInInIn SQL:SQL:SQL:SQL: TABLETABLETABLETABLE TabellaTabellaTabellaTabella RelazioneRelazioneRelazioneRelazione
InInInIn SQL:SQL:SQL:SQL:
TABLETABLETABLETABLE TabellaTabellaTabellaTabella RelazioneRelazioneRelazioneRelazione
ROWROWROWROW RigaRigaRigaRiga TuplaTuplaTuplaTupla
COLUMNCOLUMNCOLUMNCOLUMN ColonnaColonnaColonnaColonna AttributoAttributoAttributoAttributo
SQLSQLSQLSQL comecomecomecome DDLDDLDDLDDL hahahaha tretretretre comandicomandicomandicomandi fondamentali:fondamentali:fondamentali:fondamentali:
– CreateCreateCreateCreate
Database,Database,Database,Database, Schema,Schema,Schema,Schema, TableTable,TableTable,,, Domain,Domain,Domain,Domain, ConstraintConstraint,ConstraintConstraint,,, …….……
– AlterAlterAlterAlter
Database,Database,Database,Database, Schema,Schema,Schema,Schema, TableTable,TableTable,,, Domain,Domain,Domain,Domain, ConstraintConstraint,ConstraintConstraint,,, …….……
– DropDropDropDrop
Database,Database,Database,Database, Schema,Schema,Schema,Schema, TableTable,TableTable,,, Domain,Domain,Domain,Domain, ConstraintConstraint,ConstraintConstraint,,, …….……
5 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
DatabaseDatabaseDatabaseDatabase vsvsvsvs SchemaSchemaSchemaSchema NelleNelleNelleNelle primeprimeprimeprime
DatabaseDatabaseDatabaseDatabase vsvsvsvs SchemaSchemaSchemaSchema
NelleNelleNelleNelle primeprimeprimeprime versioniversioniversioniversioni tuttetuttetuttetutte lelelele tabelletabelletabelletabelle eranoeranoeranoerano consideconsideconsideconsideraterateraterate parteparteparteparte
deldeldeldel medesimomedesimomedesimomedesimo schema.schema.schema.schema. Oggi,Oggi,Oggi,Oggi, lelelele tabelletabelletabelletabelle sonosonosonosono spessospessospessospesso
raggruppateraggruppateraggruppateraggruppate inininin SCHEMISCHEMISCHEMISCHEMI (insieme(insieme(insieme(insieme didididi oggettioggettioggettioggetti correlaticorrelaticorrelaticorrelati))))
PostgreSQL
MySQL
DB1
DB2
DB3
DB1
DB2
DB3
SCHEMA 1
SCHEMA N
6 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
DominiDominiDominiDomini ElementariElementariElementariElementari SpecificareSpecificareSpecificareSpecificare ilililil
DominiDominiDominiDomini ElementariElementariElementariElementari
SpecificareSpecificareSpecificareSpecificare ilililil tipotipotipotipo didididi unununun datodatodatodato significasignificasignificasignifica gigiàgigiààà imporreimporreimporreimporre unununun vincolovincolovincolovincolo
VincoliVincoliVincoliVincoli didididi dominiodominiodominiodominio
TuttiTuttiTuttiTutti iiii dominidominidominidomini condividonocondividonocondividonocondividono ilililil valorevalorevalorevalore NULLNULLNULLNULL
BITBITBITBIT
– PermettePermettePermettePermette didididi rappresentarerappresentarerappresentarerappresentare datidatidatidati aaaa duedueduedue valorivalorivalorivalori oooo strinstrinstrinstringheghegheghe didididi datidatidatidati aaaa duedueduedue
valorivalorivalorivalori (in(in(in(in realtrealtàrealtrealtààà aaaa TRETRETRETRE valori:valori:valori:valori: veroveroverovero falsofalsofalsofalso NULL)NULL)NULL)NULL)
– bitbitbitbit [[varying[[varyingvarying]varying]]] [(lunghezza)][(lunghezza)][(lunghezza)][(lunghezza)]
– VarbitVarbit(12)VarbitVarbit(12)(12)(12)
CarattereCarattereCarattereCarattere
– PermettePermettePermettePermette didididi rappresentarerappresentarerappresentarerappresentare singolisingolisingolisingoli carattericarattericarattericaratteri oooo strinstrinstrinstringhe.ghe.ghe.ghe. LeLeLeLe strinstringhestrinstringhegheghe possonopossonopossonopossono essereessereessereessere aaaa
lunghezzalunghezzalunghezzalunghezza fissafissafissafissa oppureoppureoppureoppure variabile.variabile.variabile.variabile.
– charactercharactercharactercharacter [[varying[[varyingvarying]varying]]] [(lunghezza)][(lunghezza)][(lunghezza)][(lunghezza)] [[character[[charactercharactercharacter setsetsetset famigliafamigliafamigliafamiglia]]]]
– CharacterCharacterCharacterCharacter –––– charactercharacter(12)charactercharacter(12)(12)(12) ––char––charchar(12)char(12)(12)(12)
– charactercharactercharactercharacter varyingvarying(12)varyingvarying(12)(12)(12) ---- VarcharVarchar(12)VarcharVarchar(12)(12)(12)
7 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
DominiDominiDominiDomini ElementariElementariElementariElementari TipiTipiTipiTipi numericinumericinumericinumerici
DominiDominiDominiDomini ElementariElementariElementariElementari
TipiTipiTipiTipi numericinumericinumericinumerici esatti:esatti:esatti:esatti:
– permettonopermettonopermettonopermettono didididi rappresentarerappresentarerappresentarerappresentare valorivalorivalorivalori interiinteriinteriinteri oooo valorivalorivalorivalori inininin
virgolavirgolavirgolavirgola fissa.fissa.fissa.fissa.
– NumericNumericNumericNumeric [(Precisione[,Scala])][(Precisione[,Scala])][(Precisione[,Scala])][(Precisione[,Scala])]
numericnumeric(6,3)numericnumeric(6,3)(6,3)(6,3) [[-[[--999.999,999.999]-999.999,999.999]999.999,999.999]999.999,999.999]
– DecimalDecimalDecimalDecimal [(Precisione[,Scala])][(Precisione[,Scala])][(Precisione[,Scala])][(Precisione[,Scala])]
LaLaLaLa differenzadifferenzadifferenzadifferenza tratratratra numericnumericnumericnumeric eeee decimaldecimaldecimaldecimal èèèè chechecheche lalalala precisioneprecisioneprecisioneprecisione perperperper
numericnumericnumericnumeric èèèè unununun requisitorequisitorequisitorequisito esatto,esatto,esatto,esatto, mentrementrementrementre perperperper decimaldecimaldecimaldecimal èèèè unununun requisitorequisitorequisitorequisito
minimo.minimo.minimo.minimo.
– IntegerIntegerIntegerInteger
– SmallintSmallintSmallintSmallint
LL’LL’’’ unicounicounicounico vincolovincolovincolovincolo implementativoimplementativoimplementativoimplementativo èèèè chechecheche lalalala precisioneprecisioneprecisioneprecisione deldeldeldel dominiodominiodominiodominio
integerintegerintegerinteger siasiasiasia ≥ deldeldeldel dominiodominiodominiodominio smallintsmallint.smallintsmallint
8 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
DominiDominiDominiDomini ElementariElementariElementariElementari TipiTipiTipiTipi numericinumericinumericinumerici
DominiDominiDominiDomini ElementariElementariElementariElementari
TipiTipiTipiTipi numericinumericinumericinumerici approssimati:approssimati:approssimati:approssimati:
– floatfloatfloatfloat [(Precisione)][(Precisione)][(Precisione)][(Precisione)]
lalalala precisioneprecisioneprecisioneprecisione èèèè intesaintesaintesaintesa comecomecomecome numeronumeronumeronumero didididi cifrecifrecifrecifre delladelladelladella mantissa.mantissa.mantissa.mantissa.
– doubledoubledoubledouble precisionprecisionprecisionprecision
– realrealrealreal
LaLaLaLa precisioneprecisioneprecisioneprecisione didididi doubledoubledoubledouble èèèè doppiadoppiadoppiadoppia rispettorispettorispettorispetto aaaa realreal.realreal
DataDataDataData eeee Ora:Ora:Ora:Ora:
– datedatedatedate
recordrecordrecordrecord ofofofof {{year{{yearyearyear monthmonthmonthmonth dayday}dayday}}}
– timetimetimetime
recordrecordrecordrecord ofofofof {{hour{{hourhourhour minuteminuteminuteminute secondsecond}secondsecond}}}
– timestamptimestamptimestamptimestamp
date+timedate+timedate+timedate+time
IlIlIlIl valorevalorevalorevalore NULLNULLNULLNULL èèèè immaginatoimmaginatoimmaginatoimmaginato comecomecomecome condivisocondivisocondivisocondiviso tratratratra iiii varivarivarivari
dominidominidominidomini
9 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
DominiDominiDominiDomini ElementariElementariElementariElementari IntervalliIntervalliIntervalliIntervalli
DominiDominiDominiDomini ElementariElementariElementariElementari
IntervalliIntervalliIntervalliIntervalli temporali:temporali:temporali:temporali:
– intervalintervalintervalinterval PrimaUnitaPrimaUnita’PrimaUnitaPrimaUnita’’diTempo’diTempodiTempodiTempo [[to[[tototo UltimaUnitaUltimaUnita’UltimaUnitaUltimaUnita’’diTempo’diTempodiTempo]diTempo]]]
– intervalintervalintervalinterval yearyearyearyear totototo monthmonthmonthmonth
indicaindicaindicaindica chechecheche gligligligli intervalliintervalliintervalliintervalli vannovannovannovanno misuratimisuratimisuratimisurati inininin numeronumeronumeronumero didididi annianniannianni eeee didididi
mesi.mesi.mesi.mesi.
SQLSQL-SQLSQL--99-999999 hahahaha introdottointrodottointrodottointrodotto
– BooleanBooleanBooleanBoolean
precedentementeprecedentementeprecedentementeprecedentemente realizzatorealizzatorealizzatorealizzato tramitetramitetramitetramite ilililil tipotipotipotipo bitbitbitbit ((var((varbitvarbit),varbitbit),),), nonnonnonnon implementatoimplementatoimplementatoimplementato
dadadada moltimoltimoltimolti sistemisistemisistemisistemi
– BlobBlobBlobBlob ((binary((binarybinarybinary longlonglonglong objectobject)objectobject)))
– CblobCblobCblobCblob ((character((charactercharactercharacter longlonglonglong objectobject)objectobject)))
10 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
CreateCreateCreateCreate DomainDomainDomainDomain UtileUtileUtileUtile perperperper apportareapportareapportareapportare
CreateCreateCreateCreate DomainDomainDomainDomain
UtileUtileUtileUtile perperperper apportareapportareapportareapportare velocementevelocementevelocementevelocemente modifichemodifichemodifichemodifiche
NONNONNONNON EE’EE’’’ unununun costruttorecostruttorecostruttorecostruttore didididi didididi tipotipotipotipo
– CREATECREATECREATECREATE DOMAINDOMAINDOMAINDOMAIN ndomndomndomndom asasasas TipoTipoTipoTipo [default][default][default][default] [Vincolo][Vincolo][Vincolo][Vincolo]
CREATECREATECREATECREATE DOMAINDOMAINDOMAINDOMAIN tipo_cftipo_cftipo_cftipo_cf asasasas CHAR(16)CHAR(16)CHAR(16)CHAR(16) NOTNOTNOTNOT NULLNULLNULLNULL
CREATECREATECREATECREATE DOMAINDOMAINDOMAINDOMAIN NFIGLINFIGLINFIGLINFIGLI asasasas SMALLINTSMALLINTSMALLINTSMALLINT 0000
11 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
CreazioneCreazioneCreazioneCreazione didididi TabelleTabelleTabelleTabelle createcreatecreatecreate tabletabletabletable
CreazioneCreazioneCreazioneCreazione didididi TabelleTabelleTabelleTabelle
createcreatecreatecreate tabletabletabletable nomenomenomenome ((((
NAttrNAttrNAttrNAttr DomDomDomDom [[ValoreDef[[ValoreDefValoreDef]ValoreDef]]] [[vincoli[[vincolivincoli]vincoli]]]
{,{,NAttr{,{,NAttrNAttrNAttr DomDomDomDom [[ValoreDef[[ValoreDefValoreDef]ValoreDef]]] [[vincoli[[vincolivincoli]}vincoli]}]}]}
[[Altri[[AltriAltriAltri VincoliVincoli]VincoliVincoli]]] ))))
NotazioneNotazioneNotazioneNotazione ““.““ ”.”””
AZIENDA.DIP.NomeAZIENDA.DIP.NomeAZIENDA.DIP.NomeAZIENDA.DIP.Nome
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20),varchar(20),varchar(20),varchar(20),
CittaCittaCittaCitta varchar(20))varchar(20))varchar(20))varchar(20))
12 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
PrimaryPrimaryPrimaryPrimary KeyKeyKeyKey IndicaIndicaIndicaIndica chechecheche
PrimaryPrimaryPrimaryPrimary KeyKeyKeyKey
IndicaIndicaIndicaIndica chechecheche ll’ll’’attributo’attributoattributoattributo (o(o(o(o gligligligli attributi)attributi)attributi)attributi) rapprsentarapprsentarapprsentarapprsenta unaunaunauna chiavechiavechiavechiave
primariaprimariaprimariaprimaria perperperper lalalala tabella.tabella.tabella.tabella.
– PuòPuòPuòPuò essereessereessereessere espressoespressoespressoespresso unaunaunauna solasolasolasola voltavoltavoltavolta perperperper tabellatabellatabellatabella
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20)varchar(20)varchar(20)varchar(20) PrimaryPrimaryPrimaryPrimary Key,Key,Key,Key,
CittaCittaCittaCitta varchar(20))varchar(20))varchar(20))varchar(20))
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20),varchar(20),varchar(20),varchar(20),
CittaCittaCittaCitta varchar(20),varchar(20),varchar(20),varchar(20),
PrimaryPrimaryPrimaryPrimary Key(NomeKey(Nome))Key(NomeKey(Nome))))))
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20),varchar(20),varchar(20),varchar(20),
CittaCittaCittaCitta varchar(20),varchar(20),varchar(20),varchar(20),
CONSTRAINTCONSTRAINTCONSTRAINTCONSTRAINT PK_DIPPK_DIPPK_DIPPK_DIP PRIMARYPRIMARYPRIMARYPRIMARY KEYKEYKEYKEY (Nome))(Nome))(Nome))(Nome))
13 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
PrimaryPrimaryPrimaryPrimary KeyKeyKeyKey SeSeSeSe lalalala primaryprimaryprimaryprimary keykeykeykey èèèè
PrimaryPrimaryPrimaryPrimary KeyKeyKeyKey
SeSeSeSe lalalala primaryprimaryprimaryprimary keykeykeykey èèèè compostacompostacompostacomposta dadadada duedueduedue attributi:attributi:attributi:attributi:
CreateCreateCreateCreate tabletabletabletable ImpiegatoImpiegatoImpiegatoImpiegato ((((
NomeNomeNomeNome varcharvarchar(20),varcharvarchar(20),(20),(20),
CognomeCognomeCognomeCognome varcharvarchar(20),varcharvarchar(20),(20),(20),
primaryprimaryprimaryprimary keykeykeykey (Cognome,Nome)(Cognome,Nome)(Cognome,Nome)(Cognome,Nome)
CreateCreateCreateCreate tabletabletabletable ImpiegatoImpiegatoImpiegatoImpiegato ((((
NomeNomeNomeNome varcharvarchar(20),varcharvarchar(20),(20),(20),
CognomeCognomeCognomeCognome varcharvarchar(20),varcharvarchar(20),(20),(20),
CONSTRAINTCONSTRAINTCONSTRAINTCONSTRAINT PK_IMPPK_IMPPK_IMPPK_IMP PRIMARYPRIMARYPRIMARYPRIMARY KEYKEYKEYKEY (Cognome,Nome)(Cognome,Nome)(Cognome,Nome)(Cognome,Nome)
14 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
UniqueUniqueUniqueUnique IndicaIndicaIndicaIndica nellanellanellanella tabellatabellatabellatabella nonnonnonnon
UniqueUniqueUniqueUnique
IndicaIndicaIndicaIndica nellanellanellanella tabellatabellatabellatabella nonnonnonnon possonopossonopossonopossono esistereesistereesistereesistere duedueduedue righerigherigherighe conconconcon valorivalorivalorivalori
identiciidenticiidenticiidentici susususu taletaletaletale attributo.attributo.attributo.attributo.
CreateCreateCreateCreate tabletabletabletable ImpiegatoImpiegatoImpiegatoImpiegato ((((
cognomecognomecognomecognome varcharvarchar(20)varcharvarchar(20)(20)(20) uniqueunique,uniqueunique,,,
nomenomenomenome varcharvarchar(20))varcharvarchar(20))(20))(20))
CreateCreateCreateCreate tabletabletabletable ImpiegatoImpiegatoImpiegatoImpiegato ((((
cognomecognomecognomecognome varcharvarchar(20),varcharvarchar(20),(20),(20),
nomenomenomenome varcharvarchar(20),varcharvarchar(20),(20),(20),
uniqueunique(Cognome,Nome))uniqueunique(Cognome,Nome))(Cognome,Nome))(Cognome,Nome))
CreateCreateCreateCreate tabletabletabletable ImpiegatoImpiegatoImpiegatoImpiegato ((((
cognomecognomecognomecognome varcharvarchar(20)varcharvarchar(20)(20)(20) ,,,,
nomenomenomenome varcharvarchar(20),varcharvarchar(20),(20),(20),
constraintconstraintconstraintconstraint UNQ_Cog_NomeUNQ_Cog_NomeUNQ_Cog_NomeUNQ_Cog_Nome uniqueunique(Cognome,Nome))uniqueunique(Cognome,Nome))(Cognome,Nome))(Cognome,Nome))
15 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
NotNotNotNot NullNullNullNull indicaindicaindicaindica chechecheche ll’ll’’attributo’attributoattributoattributo
NotNotNotNot NullNullNullNull
indicaindicaindicaindica chechecheche ll’ll’’attributo’attributoattributoattributo nonnonnonnon puòpuòpuòpuò assumereassumereassumereassumere valorevalorevalorevalore NULL.NULL.NULL.NULL.
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20)varchar(20)varchar(20)varchar(20) NotNotNotNot Null,Null,Null,Null,
CittaCittaCittaCitta varchar(20))varchar(20))varchar(20))varchar(20))
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20),varchar(20),varchar(20),varchar(20),
CittaCittaCittaCitta varchar(20),varchar(20),varchar(20),varchar(20),
NotNotNotNot Null(NomeNull(Nome))Null(NomeNull(Nome))))))
createcreatecreatecreate tabletabletabletable DipDipDipDip ((((
NomeNomeNomeNome varchar(20),varchar(20),varchar(20),varchar(20),
CittaCittaCittaCitta varchar(20),varchar(20),varchar(20),varchar(20),
CONSTRAINTCONSTRAINTCONSTRAINTCONSTRAINT NN_NomeNN_NomeNN_NomeNN_Nome NotNotNotNot Null(NomeNull(Nome))Null(NomeNull(Nome))))))
16 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
VincoliVincoliVincoliVincoli IntrarelazionaliIntrarelazionaliIntrarelazionaliIntrarelazionali IIII
VincoliVincoliVincoliVincoli IntrarelazionaliIntrarelazionaliIntrarelazionaliIntrarelazionali
IIII vincolivincolivincolivincoli possopossopossoposso essereessereessereessere combinaticombinaticombinaticombinati
– CreateCreateCreateCreate tabletabletabletable ImpiegatoImpiegatoImpiegatoImpiegato ((((
matricolamatricolamatricolamatricola charchar(4),charchar(4),(4),(4),
cognomecognomecognomecognome varcharvarchar(20)varcharvarchar(20)(20)(20) NotNotNotNot NullNull,NullNull,,,
nomenomenomenome varcharvarchar(20),varcharvarchar(20),(20),(20),
constraintconstraintconstraintconstraint UN_COGUN_COGUN_COGUN_COG uniqueunique(Cognome),uniqueunique(Cognome),(Cognome),(Cognome),
constraintconstraintconstraintconstraint PK_MATRPK_MATRPK_MATRPK_MATR PrimaryPrimaryPrimaryPrimary Key(matricola))Key(matricola))Key(matricola))Key(matricola))
17 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
VincoliVincoliVincoliVincoli IntrarelazionaliIntrarelazionaliIntrarelazionaliIntrarelazionali
VincoliVincoliVincoliVincoli IntrarelazionaliIntrarelazionaliIntrarelazionaliIntrarelazionali genericigenericigenericigenerici
CHECK:CHECK:CHECK:CHECK:
– UtilizzatoUtilizzatoUtilizzatoUtilizzato perperperper specificarespecificarespecificarespecificare unununun vincolovincolovincolovincolo didididi tuplatuplatuplatupla genegenegenegenericoricoricorico
– CreateCreateCreateCreate tabletabletabletable IMPIMPIMPIMP ((((
MATRICOLAMATRICOLAMATRICOLAMATRICOLA charchar(4),charchar(4),(4),(4),
COGNOMECOGNOMECOGNOMECOGNOME varcharvarchar(20)varcharvarchar(20)(20)(20) NotNotNotNot NullNull,NullNull,,,
NOMENOMENOMENOME varcharvarchar(20)varcharvarchar(20)(20)(20) NotNotNotNot NullNull,NullNull,,,
STIPENDIOSTIPENDIOSTIPENDIOSTIPENDIO integerintegerintegerinteger defaultdefaultdefaultdefault 1000100010001000 notnotnotnot nullnull,nullnull,,,
constraintconstraintconstraintconstraint UN_COGUN_COGUN_COGUN_COG uniqueunique(Cognome,Nome),uniqueunique(Cognome,Nome),(Cognome,Nome),(Cognome,Nome),
constraintconstraintconstraintconstraint PK_MATRPK_MATRPK_MATRPK_MATR PrimaryPrimaryPrimaryPrimary Key(matricola),Key(matricola),Key(matricola),Key(matricola),
constraintconstraintconstraintconstraint IMP_STIP_MINIMP_STIP_MINIMP_STIP_MINIMP_STIP_MIN CHECK(STIPENDIOCHECK(STIPENDIOCHECK(STIPENDIOCHECK(STIPENDIO >>>> 800))800))800))800))
18 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
VincoliVincoliVincoliVincoli InterrelazionaliInterrelazionaliInterrelazionaliInterrelazionali
VincoliVincoliVincoliVincoli InterrelazionaliInterrelazionaliInterrelazionaliInterrelazionali
TratteremoTratteremoTratteremoTratteremo iiii vincolivincolivincolivincoli didididi integritintegritàintegritintegritààà referenzialereferenzialereferenzialereferenziale (detti(detti(detti(detti
ancheancheancheanche vincolivincolivincolivincoli didididi riferimento).riferimento).riferimento).riferimento).
InInInIn SQLSQLSQLSQL esisteesisteesisteesiste ilililil vincolovincolovincolovincolo foreignforeignforeignforeign key.key.key.key.
CreaCreaCreaCrea unununun legamelegamelegamelegame tratratratra ll’ll’’attributo’attributoattributoattributo delladelladelladella tabellatabellatabellatabella correntecorrentecorrentecorrente
(interna)(interna)(interna)(interna) eeee unununun attributoattributoattributoattributo didididi unun’unun’’altra’altraaltraaltra tabellatabellatabellatabella (esterna)(esterna)(esterna)(esterna)
(tipicamente(tipicamente(tipicamente(tipicamente allaallaallaalla chiavechiavechiavechiave didididi questa).questa).questa).questa).
– InInInIn alcunialcunialcunialcuni casicasicasicasi èèèè richiestorichiestorichiestorichiesto chechecheche ll’ll’’attributo’attributoattributoattributo delladelladelladella tabellatabellatabellatabella
esternaesternaesternaesterna siasiasiasia definitodefinitodefinitodefinito uniqueunique.uniqueunique
19 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
VincoliVincoliVincoliVincoli IntegritIntegritàIntegritIntegritààà ReferenzialeReferenzialeReferenzialeReferenziale
VincoliVincoliVincoliVincoli IntegritIntegritàIntegritIntegritààà ReferenzialeReferenzialeReferenzialeReferenziale
DipartimentoDipartimentoDipartimentoDipartimento ((Nome((NomeNomeNome,,Citta,,CittaCitta)Citta)))
Impiegato(Impiegato(MatricolaImpiegato(Impiegato(MatricolaMatricolaMatricola,Cognome,,Cognome,,Cognome,,Cognome, Dipartimento)Dipartimento)Dipartimento)Dipartimento)
ImpiegatoImpiegatoImpiegatoImpiegato tabellatabellatabellatabella internainternainternainterna
– susususu didididi essaessaessaessa vienevienevieneviene definitodefinitodefinitodefinito ilililil vincolo)vincolo)vincolo)vincolo)
DipartimentoDipartimentoDipartimentoDipartimento tabellatabellatabellatabella esternaesternaesternaesterna ((((
– devedevedevedeve esistereesistereesistereesistere allall’allall’’atto’attoattoatto delladelladelladella definizionedefinizionedefinizionedefinizione deldeldeldel vincolovincolovincolovincolo
DipartimentoDipartimentoDipartimentoDipartimento ((Nome((NomeNomeNome,,Citta,,CittaCitta)Citta)))
Impiegato(Impiegato(MatricolaImpiegato(Impiegato(MatricolaMatricolaMatricola,Cognome,,Cognome,,Cognome,,Cognome, DipartimentoDipartimentoDipartimentoDipartimento :::: DipartimentoDipartimento.Nome)DipartimentoDipartimento.Nome).Nome).Nome)
LaLaLaLa violazioneviolazioneviolazioneviolazione puòpuòpuòpuò essereessereessereessere aaaa livellolivellolivellolivello didididi tabellatabellatabellatabella
– internainternainternainterna (inserimento(inserimento(inserimento(inserimento eeee modifica)modifica)modifica)modifica)
– esternaesternaesternaesterna (cancellazione(cancellazione(cancellazione(cancellazione eeee modifica)modifica)modifica)modifica)
20 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
VincoliVincoliVincoliVincoli IntegritIntegritàIntegritIntegritààà ReferenzialeReferenzialeReferenzialeReferenziale
VincoliVincoliVincoliVincoli IntegritIntegritàIntegritIntegritààà ReferenzialeReferenzialeReferenzialeReferenziale
ViolazioneViolazioneViolazioneViolazione sullasullasullasulla tabellatabellatabellatabella interna:interna:interna:interna:
– LL’LL’’operazione’operazioneoperazioneoperazione vienevienevieneviene semplicementesemplicementesemplicementesemplicemente impedita.impedita.impedita.impedita.
ViolazioneViolazioneViolazioneViolazione sullasullasullasulla tabellatabellatabellatabella esterna:esterna:esterna:esterna:
– restrictrestrictrestrictrestrict //// nononono actionactionactionaction
– cascadecascadecascadecascade
– setsetsetset nullnullnullnull
– setsetsetset defaultdefaultdefaultdefault
21 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
VincoliVincoliVincoliVincoli IntegritIntegritàIntegritIntegritààà ReferenzialeReferenzialeReferenzialeReferenziale
VincoliVincoliVincoliVincoli IntegritIntegritàIntegritIntegritààà ReferenzialeReferenzialeReferenzialeReferenziale
CreateCreateCreateCreate tabletabletabletable DipartimentoDipartimentoDipartimentoDipartimento ((((
CodeDipCodeDipCodeDipCodeDip charchar(4)charchar(4)(4)(4) primaryprimaryprimaryprimary key,key,key,key,
NomeNomeNomeNome varcharvarchar(20))varcharvarchar(20))(20))(20))
createcreatecreatecreate tabletabletabletable IMP(IMP(IMP(IMP(
NomeNomeNomeNome charchar(20),charchar(20),(20),(20),
CognomeCognomeCognomeCognome charchar(20),charchar(20),(20),(20),
DipartimentoDipartimentoDipartimentoDipartimento charchar(4)charchar(4)(4)(4) referencesreferencesreferencesreferences Dipartimento(Dipartimento(CodeDipDipartimento(Dipartimento(CodeDipCodeDip)CodeDip)))
onononon deletedeletedeletedelete setsetsetset nullnullnullnull onononon updateupdateupdateupdate cascadecascade)cascadecascade)))
createcreatecreatecreate tabletabletabletable IMPIMPIMPIMP ((((
NomeNomeNomeNome charchar(20),charchar(20),(20),(20),
CognomeCognomeCognomeCognome charchar(20),charchar(20),(20),(20),
DipartimentoDipartimentoDipartimentoDipartimento charchar(4),charchar(4),(4),(4),
constraintconstraintconstraintconstraint fk_imp_dipfk_imp_dipfk_imp_dipfk_imp_dip foreignforeignforeignforeign keykeykeykey (Dipartimento)(Dipartimento)(Dipartimento)(Dipartimento) referencesreferencesreferencesreferences
Dipartimento(Dipartimento(CodeDipDipartimento(Dipartimento(CodeDipCodeDip)CodeDip))) onononon deletedeletedeletedelete setsetsetset nullnullnullnull onononon updateupdateupdateupdate cascadecascade)cascadecascade)))
22 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
IndiciIndiciIndiciIndici GliGliGliGli indiciindiciindiciindici rappresentanorappresentanorappresentanorappresentano
IndiciIndiciIndiciIndici
GliGliGliGli indiciindiciindiciindici rappresentanorappresentanorappresentanorappresentano unounounouno strumentostrumentostrumentostrumento preziosopreziosopreziosoprezioso perperperper
velocizzarevelocizzarevelocizzarevelocizzare ll’ll’’accesso’accessoaccessoaccesso aiaiaiai dati.dati.dati.dati.
createcreatecreatecreate [[unique[[uniqueunique]unique]]] indexindexindexindex NomIdxNomIdxNomIdxNomIdx onononon NomeTableNomeTableNomeTableNomeTable ((ListaAttributi((ListaAttributiListaAttributi)ListaAttributi)))
uniqueuniqueuniqueunique indicaindicaindicaindica chechecheche nellanellanellanella tabellatabellatabellatabella nonnonnonnon sonosonosonosono possibilipossibilipossibilipossibili righerigherigherighe cccchehehehe
assumonoassumonoassumonoassumono lolololo stessostessostessostesso valorevalorevalorevalore susususu ListaAttributiListaAttributiListaAttributiListaAttributi (che(che(che(che quindiquindiquindiquindi èèèè
unaunaunauna chiavechiavechiavechiave eventualmenteeventualmenteeventualmenteeventualmente nonnonnonnon minimale)minimale)minimale)minimale)
LL’LL’’ordine’ordineordineordine inininin cuicuicuicui sonosonosonosono datidatidatidati gligligligli attributiattributiattributiattributi èèèè importante.importante.importante.importante.
– createcreatecreatecreate uniqueuniqueuniqueunique indexindexindexindex indindindind ontoontoontoonto AnagraficaAnagraficaAnagraficaAnagrafica (Cognome,No(Cognome,No(Cognome,No(Cognome,Nome)me)me)me)
– dropdropdropdrop indexindexindexindex NomidxNomidxNomidxNomidx
23 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
AltriAltriAltriAltri CREATECREATECREATECREATE INDEXINDEXINDEXINDEX VIEWVIEWVIEWVIEW
AltriAltriAltriAltri CREATECREATECREATECREATE
INDEXINDEXINDEXINDEX
VIEWVIEWVIEWVIEW
ASSERTIONASSERTIONASSERTIONASSERTION (non(non(non(non implementatoimplementatoimplementatoimplementato dadadada moltimoltimoltimolti DB)DB)DB)DB)
TRIGGERTRIGGERTRIGGERTRIGGER
……………………
24 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
ModificaModificaModificaModifica alteralteralteralter domaindomaindomaindomain nomenomenomenome
ModificaModificaModificaModifica
alteralteralteralter domaindomaindomaindomain nomenomenomenome <set<set<set<set defaultdefaultdefaultdefault
dropdropdropdrop defaultdefaultdefaultdefault
addaddaddadd constraintconstraintconstraintconstraint
alteralteralteralter tabletabletabletable nomenomenomenome
<alter<alter<alter<alter columncolumncolumncolumn
dropdropdropdrop constraintconstraintconstraintconstraint >>>>
setsetsetset defaultdefaultdefaultdefault
dropdropdropdrop defaultdefaultdefaultdefault
addaddaddadd constraintconstraintconstraintconstraint
dropdropdropdrop constraintconstraintconstraintconstraint
addaddaddadd columncolumncolumncolumn
dropdropdropdrop columncolumn>columncolumn>>>
alteralteralteralter tabletabletabletable DipartimentoDipartimentoDipartimentoDipartimento addaddaddadd columncolumncolumncolumn NroUfficiNroUfficiNroUfficiNroUffici integerinteger(4)integerinteger(4)(4)(4)
25 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
ModificaModificaModificaModifica DropDrop:DropDrop::: PermettePermettePermettePermette didididi
ModificaModificaModificaModifica
DropDrop:DropDrop::: PermettePermettePermettePermette didididi rimuovererimuovererimuovererimuovere schemi,schemi,schemi,schemi, tabelletabelletabelletabelle etc.etc.etc.etc.
dropdropdropdrop <schema<schema<schema<schema |||| domaindomaindomaindomain |table|table|table|table |||| viewviewviewview |||| assertionassertionassertionassertion |||| >>>>
[[restrict[[restrictrestrictrestrict |||| cascadecascade]cascadecascade]]]
restrictrestrict:restrictrestrict:::
– specificaspecificaspecificaspecifica chechecheche ilililil comandocomandocomandocomando devedevedevedeve essereessereessereessere eseguitoeseguitoeseguitoeseguito solosolosolosolo inininin
presenzapresenzapresenzapresenza didididi oggettioggettioggettioggetti cuicuicuicui nonnonnonnon fannofannofannofanno riferimentoriferimentoriferimentoriferimento altrialtrialtrialtri
oggetti.oggetti.oggetti.oggetti.
cascadecascadecascadecascade
– tuttituttituttitutti gligligligli oggettioggettioggettioggetti specificatispecificatispecificatispecificati sonosonosonosono rimossi,rimossi,rimossi,rimossi, innestainnestainnestainnestandondondondo unaunaunauna
reazionereazionereazionereazione aaaa catena.catena.catena.catena.
26 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
CataloghiCataloghiCataloghiCataloghi RelazionaliRelazionaliRelazionaliRelazionali SiSiSiSi
CataloghiCataloghiCataloghiCataloghi RelazionaliRelazionaliRelazionaliRelazionali
SiSiSiSi suppongasuppongasuppongasupponga didididi avereavereavereavere creatocreatocreatocreato unounounouno schemaschemaschemaschema eeee didididi averaveraveraver crcrcrcreatoeatoeatoeato
tuttatuttatuttatutta unaunaunauna serieserieserieserie didididi oggetti.oggetti.oggetti.oggetti. ComeComeComeCome facciofacciofacciofaccio aaaa vederevederevederevedere tututututtittittitti gligligligli
oggettioggettioggettioggetti definiti?definiti?definiti?definiti?
OgniOgniOgniOgni DBMSDBMSDBMSDBMS mantienemantienemantienemantiene alcunealcunealcunealcune tabelletabelletabelletabelle inininin cuicuicuicui sonosonosonosono riporriporriporriportatetatetatetate
lelelele descrizionedescrizionedescrizionedescrizione deglideglideglidegli oggettioggettioggettioggetti creaticreaticreaticreati (ad(ad(ad(ad es.es.es.es. lelelele tabetabetabetabellellellelle create).create).create).create).
EsisteEsisteEsisteEsiste unununun Definition_SchemaDefinition_SchemaDefinition_SchemaDefinition_Schema (TABLES,(TABLES,(TABLES,(TABLES, COLUMNS,COLUMNS,COLUMNS,COLUMNS,
DOMAINS,DOMAINS,DOMAINS,DOMAINS, …………)…………)))
27 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
EsempioEsempioEsempioEsempio create table DIPARTIMENTO ( CODICECHAR(4) not null, NOME VARCHAR(20) null, constraint
EsempioEsempioEsempioEsempio
create table DIPARTIMENTO (
CODICECHAR(4) not null,
NOME
VARCHAR(20) null,
constraint PK_DIPARTIMENTO primary key (CODICE));
create table SEDE (
CITTA
VARCHAR(20) not null,
INDIRIZZO VARCHAR(40) null,
constraint PK_SEDE primary key (CITTA));
28 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
EsempioEsempioEsempioEsempio create table IMPIEGATO ( CF CHAR(16), CAPO_CF CHAR(16) null, DIPARTIMENTO CHAR(4) null,
EsempioEsempioEsempioEsempio
create table IMPIEGATO (
CF CHAR(16),
CAPO_CF CHAR(16) null,
DIPARTIMENTO CHAR(4) null,
COGNOME VARCHAR(20) null,
NOME VARCHAR(20) null,
DATA_N DATE null,
STIPENDIO INTEGER not null
constraint CKC_STIPENDIO_IMPIEGAT check (STIPENDIO between '800' and '3000'),
constraint PK_IMPIEGATO primary key (CF),
constraint FK_CAPO_IS_IMPIEGATO foreign key (CAPO_CF)
references IMPIEGATO (CF)
on delete restrict on update restrict,
constraint FK_IMPIEGATO_ESISTE_DIPARTIMENTO foreign key (DIPARTIMENTO)
references DIPARTIMENTO (CODICE)
on delete restrict on update restrict);
29 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
EsempioEsempioEsempioEsempio create table PROGETTO ( NOME VARCHAR(20) not null, RESPONSIBILE CHAR(16) null, BUDGET
EsempioEsempioEsempioEsempio
create table PROGETTO (
NOME VARCHAR(20) not null,
RESPONSIBILE CHAR(16) null,
BUDGET INTEGER null,
constraint PK_PROGETTO primary key (NOME),
constraint FK_PROGETTO_RESP_IMPIEGATO foreign key (RESPONSIBILE)
references IMPIEGATO (CF)
on delete restrict on update cascade);
30 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
EsempioEsempioEsempioEsempio create table DIP_CITTA ( DIPARTIMENTO CHAR(4) not null, SEDE VARCHAR(20) not null,
EsempioEsempioEsempioEsempio
create table DIP_CITTA (
DIPARTIMENTO CHAR(4)
not null,
SEDE VARCHAR(20) not null,
constraint PK_DIP_CITTA primary key (DIPARTIMENTO, SEDE),
constraint FK_DIP_CITT_DIPARTIMENTO foreign key (DIPARTIMENTO) references DIPARTIMENTO (CODICE)
on delete restrict on update restrict,
constraint FK_DIP_CITT_SEDE foreign key (SEDE) references SEDE (CITTA)
on delete restrict on update restrict,
constraint FK_DIP_CITT_REFERENCE_SEDI foreign key (SEDE) references SEDI (CITTA)
on delete restrict on update restrict);
31 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL
EsempioEsempioEsempioEsempio create table LAVORA_SU ( IMPIEGATO CHAR(16) not null, PROGETTO VARCHAR(20) not null,
EsempioEsempioEsempioEsempio
create table LAVORA_SU (
IMPIEGATO CHAR(16) not null,
PROGETTO VARCHAR(20) not null,
constraint PK_LAVORA_SU primary key (IMPIEGATO, PROGETTO),
constraint FK_LAVORA_S_REFERENCE_IMPIEGAT foreign key (IMPIEGATO)
references IMPIEGATO (CF) on delete restrict on update restrict,
constraint FK_LAVORA_S_REFERENCE_PROGETTO foreign key (PROGETTO)
references PROGETTO (NOME) on delete restrict on update restrict
);
32 AA 2010-2011, Basi di Dati, Prof. Antonio d’Acierno, dacierno.a@isa.cnr.it
SQL come DDL