Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 2. Dato il seguente schema relazionale:
- PERSONE (CF, NOME, SEX, DATA_N, CF_PADRE, ID_LOCALITA_NASCITA, ID_LOCALITA_RESIDENZA)
- LOCALITA( ID, COMUNE, PROVINCIA)
- 2.1. creare IN SQL le tabelle relazionali, comprensive delle politiche di violazione dei vincoli opportunamente giustificate.
- 2.2. implementare le seguenti query:
- 2.2.1 Trovare il nome e cognome e la DATA di nascita delle persone che risiedono nella stessa località dei loro padri .
- 2.2.2 Trovare quante persone di sesso maschile sono nate a Napoli e abitano nel comune di Milano
- 2.1
- CREATE TABLE PERSONA (
- CF VARCHAR2(16) PRIMARY KEY,
- NOME VARCHAR2(32) NOT NULL,
- COGNOME VARCHAR2(32) NOT NULL,
- SEX VARCHAR(1) CHECK (SEX='M' OR SEX='F')
- DATA_N DATE NOT NULL,
- CF_PADRE VARCHAR2(16) NOT NULL,
- ID_LOCALITA_NASCITA NUMBER(6) ,
- ID_LOCALITA_RESIDENZA NUMBER(6)
- )
- CREATE TABLE LOCALITA(
- ID NUMBER(6) PRIMARY KEY,
- COMUNE VARCHAR2(32) NOT NULL,
- PROVINCIA VARCHAR(2) NOT NULL
- )
- ALTER TABLE PERSONA
- ADD CONSTRAINT FK_ID_NASC FOREIGN KEY (ID_LOCALITA_NASCITA)
- REFERENCES LOCALITA(ID)
- ON DELETE SET NULL
- ALTER TABLE PERSONA
- ADD CONSTRAINT FK_ID_RES FOREIGN KEY (ID_LOCALITA_RESIDENZA)
- REFERENCES LOCALITA(ID)
- ON DELETE SET NULL
- 2.2.1
- SELECT P.NOME,P.COGNOME,P.DATA_N
- FROM PERSONA P
- WHERE P.ID_LOCALITA_RESIDENZA IN(
- SELECT ID
- FROM PERSONA P JOIN PERSONA P1 ON P.CF=P1.CF_PADRE
- WHERE P.ID_LOCALITA_RESIDENZA=P1.ID_LOCALITA_RESIDENZA
- )
- 2.2.2
- SELECT COUNT(*)
- FROM (PERSONA P JOIN LOCALITA L ON P.ID_LOCALITA_NASCITA=L.ID) JOIN LOCALITA L ON P.ID_LOCALITA_RESIDENZA=L.ID
- WHERE P.ID_LOCALITA_NASCITA IN(
- SELECT ID
- FROM LOCALITA
- WHERE COMUNE='Napoli'
- )
- INTERSECT
- SELECT COUNT(*)
- FROM (PERSONA P JOIN LOCALITA L ON P.ID_LOCALITA_NASCITA=L.ID) JOIN LOCALITA L ON P.ID_LOCALITA_RESIDENZA=L.ID
- WHERE P.ID_LOCALITA_RESIDENZA IN(
- SELECT ID
- FROM LOCALITA
- WHERE COMUNE='Milano'
- )
- INTERSECT
- SELECT COUNT(*)
- FROM PERSONA
- WHERE SEX='M'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement