Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.93 KB | None | 0 0
  1. 2. Dato il seguente schema relazionale:
  2. PERSONE (CF, NOME, SEX, DATA_N, CF_PADRE, ID_LOCALITA_NASCITA, ID_LOCALITA_RESIDENZA)
  3. LOCALITA( ID, COMUNE, PROVINCIA)
  4.  
  5.     2.1. creare IN SQL le tabelle relazionali, comprensive delle politiche di violazione dei    vincoli opportunamente giustificate.
  6.     2.2. implementare le seguenti query:
  7.     2.2.1 Trovare il nome e cognome e la DATA di nascita delle persone che risiedono nella stessa località dei loro padri .
  8.     2.2.2 Trovare quante persone di sesso maschile sono nate a Napoli e abitano nel comune di Milano
  9.  
  10. 2.1
  11. CREATE TABLE PERSONA (
  12.     CF      VARCHAR2(16)    PRIMARY KEY,
  13.     NOME    VARCHAR2(32)    NOT NULL,
  14.     COGNOME VARCHAR2(32)    NOT NULL,
  15.     SEX VARCHAR(1)  CHECK (SEX='M' OR SEX='F')
  16.     DATA_N  DATE            NOT NULL,
  17.     CF_PADRE VARCHAR2(16)   NOT NULL,
  18.     ID_LOCALITA_NASCITA NUMBER(6) ,
  19.     ID_LOCALITA_RESIDENZA NUMBER(6)
  20.     )
  21.    
  22.     CREATE TABLE LOCALITA(
  23.     ID NUMBER(6) PRIMARY KEY,
  24.     COMUNE VARCHAR2(32) NOT NULL,
  25.     PROVINCIA VARCHAR(2) NOT NULL
  26.     )
  27.    
  28.     ALTER TABLE PERSONA
  29.     ADD CONSTRAINT FK_ID_NASC FOREIGN KEY (ID_LOCALITA_NASCITA)
  30.     REFERENCES LOCALITA(ID)
  31.     ON DELETE SET NULL
  32.    
  33.     ALTER TABLE PERSONA
  34.     ADD CONSTRAINT FK_ID_RES FOREIGN KEY (ID_LOCALITA_RESIDENZA)
  35.     REFERENCES LOCALITA(ID)
  36.     ON DELETE SET NULL
  37.    
  38. 2.2.1
  39. SELECT P.NOME,P.COGNOME,P.DATA_N
  40. FROM PERSONA P
  41. WHERE P.ID_LOCALITA_RESIDENZA IN(
  42. SELECT ID
  43. FROM PERSONA P JOIN PERSONA P1 ON P.CF=P1.CF_PADRE
  44. WHERE P.ID_LOCALITA_RESIDENZA=P1.ID_LOCALITA_RESIDENZA
  45. )
  46.  
  47. 2.2.2
  48. SELECT COUNT(*)
  49. FROM (PERSONA P JOIN LOCALITA L ON P.ID_LOCALITA_NASCITA=L.ID) JOIN LOCALITA L ON P.ID_LOCALITA_RESIDENZA=L.ID
  50. WHERE P.ID_LOCALITA_NASCITA IN(
  51. SELECT ID
  52. FROM LOCALITA
  53. WHERE COMUNE='Napoli'
  54. )
  55. INTERSECT
  56. SELECT COUNT(*)
  57. FROM (PERSONA P JOIN LOCALITA L ON P.ID_LOCALITA_NASCITA=L.ID) JOIN LOCALITA L ON P.ID_LOCALITA_RESIDENZA=L.ID
  58. WHERE P.ID_LOCALITA_RESIDENZA IN(
  59. SELECT ID
  60. FROM LOCALITA
  61. WHERE COMUNE='Milano'
  62. )
  63. INTERSECT
  64. SELECT COUNT(*)
  65. FROM PERSONA
  66. WHERE SEX='M'
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement