• Aucun résultat trouvé

Cours : INF3180-E06

N/A
N/A
Protected

Academic year: 2022

Partager "Cours : INF3180-E06 "

Copied!
9
0
0

Texte intégral

(1)

UNIVERSITÉ DU QUÉBEC À MONTRÉAL

Département d'informatique

TP1

Cours : INF3180-E06

(Bases de données)

Travail remis à

Georges Debay

Login de la remise (obligatoire) : _ via CREPUQ ___________

Nom : Grenon Prénom : Nicola

Code permanent : GREN30077307 Groupe : ___________

Nom : _____________________________

Prénom : _____________________________

Code permanent : _____________________________

Groupe : ___________

(2)

Numéro 1, algèbre relationnnelle:

1. π No_Logement, No_Immeuble

(σ Occ_Code="L" et Nb_Chambres=3 et Loyer≤750.0 et Nb_Logements ≥ 25 ( Logements @0 Immeubles ))

2. π Loc_Nom

(σ Log_No_Immeuble = No_immeuble et Log_No_Logement = No_Logement et NbChambres = 1 et Vil_Nom_Ville = "Boucherville"

( Locataires X

(Logements @0 Immeubles ))) 3. π Nb_Chambres, No_Immeuble, No_Logement

(σ Occ_Code="L" et Vil_Nom_Ville = "Longueuil"

( Logements @0 Immeubles ))

4. π Description_Metier, Ent_Date, No_Logement, No_Immeuble

(σ Emp_Emp_Nom = Emp_Nom et Taux_Code_Metier = Code_Metier et No_Logement = Log_No_Logement et Foyer = "O" et Salle_A_Diner = "N" et (Vil_Nom_Ville = "Boucherville" ou Vil_Nom_Ville = "St-Bruno") ( (Immeubles @0 Logements) X Entretiens X Employes X Taux_Metiers ))

5. π Loc_Nom, No_Logement, No_Immeuble (σ Log_No_Logement = No_Logement et NbChambres ≥ 2 et Occupant ="5"

( Locataires X Logements )) 6. π Loc_Nom, No_Logement, No_Immeuble

(σ Log_No_Immeuble = No_immeuble et Log_No_Logement = No_Logement et Occ_Code="C" et Meuble="S" et Foyer="O" et Vil_Nom_Ville="St-Bruno"

( Locataires X

( Logements @0 Immeubles ))) 7. π No_Logement, No_Immeuble

(σ Log_No_Logement = No_Logement

et Chauffage="H" et Date_Fin_Bail ="2006/07/01"

( Locataires X Logements ))

8. Dans le tableau de présentation des tables, on remarque que Loc_Nom est souligné, sous-entendant qu'il s'agit d'une clé primaire. Si tel est le cas, il ne peut pas y avoir plus d'un individu ayant le même nom comme locataire dans notre système. Si nous n'avions pas d'obligation d'unicité sur la valeur Loc_Nom, alors on pourrait utiliser:

π Locataires.Loc_Nom, Locataires.Log_No_Logement (σ Locataires.Loc_Nom Locataires2.Loc_Nom ( Locataires X

ρ Locataires2 ( Locataires )))

9. π No_Immeuble, (Revenu_Loyer – Entretiens – Assurances – Conciergerie – Frais_Hypotheque – Taxes) (σ Annee = 2005 ( Archives ))

10. π Loc_Nom

(σ Date_Fin_Bail < "2006/05/31" ( Locataires )) 11. Créer un annuaire téléphonique des locataires:

π Loc_Nom, No_Immeuble, No_Logement, Loc_Telephone (σ Log_No_Logement = No_Logement

(Locataires X

( Logements @0 Immeubles )))

(3)

Numéro 2&3, SQL:

--- -- INF3180 - E06 - TP1 -- -- par Nicola Grenon GREN30077303 -- -- nicola.grenon@umontreal.ca -- ---

--- -- Initialisations -- ---

SET ECHO ON

ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD' /

--- -- Création des tables -- ---

CREATE TABLE Locataires

(Loc_Nom VARCHAR2 (30) PRIMARY KEY, Loc_Telephone VARCHAR2 (10),

Date_Entree DATE, Date_Fin_Bail DATE,

Occupant VARCHAR2 (1) )

/

CREATE TABLE Occupations

(Occ_Code VARCHAR2 (1) PRIMARY KEY, Occ_Description VARCHAR2 (10)

) /

CREATE TABLE Chauffages

(Chau_Code VARCHAR2 (1) PRIMARY KEY, Chau_Description VARCHAR2 (12)

) /

CREATE TABLE Logements

(No_Logement NUMBER (4) PRIMARY KEY, Loyer NUMBER (6,2),

Nb_Chambres NUMBER (2), Nb_Salle_Bain NUMBER (2), A_Louer VARCHAR2 (1), Foyer VARCHAR2 (1), Meuble VARCHAR2 (1), Salle_A_Diner VARCHAR2 (1) )

/

CREATE TABLE Entretiens

(No_Entretien NUMBER (4) PRIMARY KEY, Ent_Date DATE,

Nb_Heures NUMBER (3,1), Emp_Emp_Nom VARCHAR2 (25) )

/

CREATE TABLE Immeubles

(No_Immeuble NUMBER (4) PRIMARY KEY, Adresse VARCHAR2 (30),

Nb_Etages NUMBER (2), Nb_Logements NUMBER (2), Annee_en_cours NUMBER (4), Assurance NUMBER (6,2), Conciergerie NUMBER (6,2), Cumul_Loyer NUMBER (8), Entretien NUMBER (8,2), Evaluation NUMBER (7), Prix_Achat NUMBER (7), Hypotheque NUMBER (7), Taux_Hypotheque NUMBER (9,2) )

/

CREATE TABLE Actionnaires

(No_Actionnaire NUMBER (5) PRIMARY KEY, Adresse VARCHAR2 (30),

Nom_Actionnaire VARCHAR2 (30), Telephone VARCHAR2 (10), Nb_Parts NUMBER (7,3),

(4)

Profit_A_Distribuer NUMBER (8,2), Valeur_Part NUMBER (7,3) )

/

CREATE TABLE Employes

(Emp_Nom VARCHAR2 (25) PRIMARY KEY, Emp_Adr VARCHAR2 (30)

) /

CREATE TABLE Taux_Metiers

(Code_Metier VARCHAR2 (2) PRIMARY KEY, Description_Metier VARCHAR2 (20),

Taux_Horaire NUMBER (5,2) )

/

CREATE TABLE Concierges

(Nom_Concierge VARCHAR2 (25) PRIMARY KEY, Adresse VARCHAR2 (30),

Salaire_Mensuel NUMBER (6,2) )

/

CREATE TABLE Villes

(Nom_Ville VARCHAR2 (12) PRIMARY KEY, Taux_Taxes NUMBER (4,2)

) /

CREATE TABLE Archives

(Annee NUMBER (4), Evaluation NUMBER (9), Taxes NUMBER (8,2), Frais_Hypotheque NUMBER (8,2), Conciergerie NUMBER (8,2), Assurances NUMBER (6,2), Entretien NUMBER (8,2), Revenu_Loyer NUMBER (8) )

/

--- -- Clés distantes -- ---

ALTER TABLE Locataires ADD

(Log_No_Immeuble NUMBER (4) REFERENCES Immeubles, Log_No_Logement NUMBER (4) REFERENCES Logements )

/

ALTER TABLE Logements ADD

(No_Immeuble NUMBER (4) REFERENCES Immeubles, Chauffage VARCHAR2 (1) REFERENCES Chauffages, Occ_Code VARCHAR2 (1) REFERENCES Occupations )

/

ALTER TABLE Entretiens ADD

(Imm_No_Immeuble NUMBER (4) REFERENCES Immeubles, Log_No_Logement NUMBER (4) REFERENCES Logements )

/

ALTER TABLE Immeubles ADD

(Vil_Nom_Ville VARCHAR2 (12) REFERENCES Villes, Con_Nom_Concierge VARCHAR2 (25) REFERENCES Concierges )

/

ALTER TABLE Employes ADD

(Taux_Code_Metier VARCHAR2 (2) REFERENCES Taux_Metiers )

/

ALTER TABLE Archives ADD

(No_Immeuble NUMBER (4) REFERENCES Immeubles )

/

(5)

--- -- Données factices -- ---

INSERT INTO Occupations VALUES('L','Libre') /

INSERT INTO Occupations VALUES('C','Concierge') /

INSERT INTO Occupations VALUES('R','Regulier') /

INSERT INTO Chauffages VALUES('E','Electricite') /

INSERT INTO Chauffages VALUES('G','Gaz') /

INSERT INTO Chauffages VALUES('H','Huile') /

INSERT INTO Chauffages VALUES('B','Bois') /

INSERT INTO Villes VALUES('Longueuil',2) /

INSERT INTO Villes VALUES('St-Bruno',3) /

INSERT INTO Villes

VALUES('Boucherville',4) /

INSERT INTO Concierges

VALUES('Marcel','436 là-bas',400) /

INSERT INTO Concierges

VALUES('Bill','452 là-bas',401) /

INSERT INTO Concierges

VALUES('Georges','459 là-bas',402) /

INSERT INTO Concierges

VALUES('Mar32cel','436 là-bas',400) /

INSERT INTO Concierges

VALUES('Bi23ll','452 là-bas',401) /

INSERT INTO Concierges

VALUES('Geo23rges','459 là-bas',402) /

INSERT INTO Concierges

VALUES('Mar45cel','436 là-bas',400) /

INSERT INTO Concierges

VALUES('Bi56ll','452 là-bas',401) /

INSERT INTO Concierges

VALUES('Geo67rges','459 là-bas',402) /

INSERT INTO Immeubles

VALUES(1,'123 ici',2,5,2006,1234.56,1234.56,33333,5000,500000,400000,200000,5,'Boucherville','Marcel') /

INSERT INTO Immeubles

VALUES(2,'123 pasici',2,25,2006,1234.56,1234.56,33333,5000,500000,400000,200000,5,'Longueuil','Bill') /

INSERT INTO Immeubles

VALUES(3,'123 ailleurs',2,5,2006,1234.56,1234.56,33333,5000,500000,400000,200000,5,'St-Bruno','Georges') /

INSERT INTO Immeubles

VALUES(4,'1a23 ici',2,35,2006,1234.56,1234.56,33333,5000,500000,400000,200000,5,'St-Bruno','Mar32cel') /

INSERT INTO Immeubles

VALUES(5,'1a23 pasici',2,25,2006,1234.56,1234.56,33333,5000,500000,400000,200000,5,'Longueuil','Bi23ll')

(6)

/

INSERT INTO Immeubles VALUES(6,'1a23

ailleurs',2,45,2006,1234.56,1234.56,33333,5000,500000,400000,200000,5,'Boucherville','Geo67rges') /

INSERT INTO Logements

VALUES(1,500,1,1,'N','O','O','N',1,'B','C') /

INSERT INTO Logements

VALUES(2,505,3,1,'O','N','S','O',2,'H','L') /

INSERT INTO Logements

VALUES(3,509,7,2,'O','O','S','O',3,'H','C') /

INSERT INTO Logements

VALUES(4,515,3,1,'O','O','N','O',2,'H','C') /

INSERT INTO Logements

VALUES(5,516,5,1,'O','N','O','O',2,'H','L') /

INSERT INTO Logements

VALUES(6,500,1,1,'N','O','S','N',1,'B','R') /

INSERT INTO Logements

VALUES(7,505,3,1,'O','O','N','O',2,'H','L') /

INSERT INTO Logements

VALUES(8,509,7,2,'N','O','O','N',3,'E','R') /

INSERT INTO Logements

VALUES(9,515,3,1,'O','N','N','O',2,'H','C') /

INSERT INTO Logements

VALUES(10,516,5,1,'O','O','S','O',2,'H','L') /

INSERT INTO Locataires

VALUES('Bob Binette','5557654321','1999/07/01','2006/07/01','5',1,1) /

INSERT INTO Locataires

VALUES('Bup Bunette','5557654421','1998/07/01','2006/02/25','5',2,2) /

INSERT INTO Locataires

VALUES('Baf Binette','5566654321','1997/07/01','2006/07/01','5',3,3) /

INSERT INTO Locataires

VALUES('Bob11 Binette','5557654321','2005/07/01','2006/07/01','5',4,4) /

INSERT INTO Locataires

VALUES('Bup11 Bunette','5557654421','2005/07/01','2006/02/25','5',5,5) /

INSERT INTO Locataires

VALUES('Baf11 Binette','5566654321','2005/07/01','2006/07/01','5',6,6) /

INSERT INTO Locataires

VALUES('Bauuf Binette','5566654321','1997/07/01','2006/07/01','5',2,7) /

INSERT INTO Locataires

VALUES('Bob1uu1 Binette','5557654321','2005/07/01','2006/07/01','5',1,8) /

INSERT INTO Locataires

VALUES('Bup1uu1 Bunette','5557654421','2005/07/01','2006/02/20','5',3,9) /

INSERT INTO Locataires

VALUES('Baf1uu1 Binette','5566654321','2005/07/01','2006/07/01','5',5,10) /

INSERT INTO Archives

VALUES(2005,500000,3000,20000,8000,5000,10000,70000,1) /

INSERT INTO Archives

VALUES(2005,500000,3000,20000,8000,5000,10000,72000,2) /

INSERT INTO Archives

VALUES(2005,500000,3000,20000,8000,5000,10000,73000,3) /

INSERT INTO Archives

VALUES(2005,500000,3000,20000,8000,5230,10000,55000,4)

(7)

/

INSERT INTO Archives

VALUES(2005,500000,3000,20000,8000,5045,10000,52000,5) /

INSERT INTO Archives

VALUES(2005,500000,3000,20000,8000,5143,10000,53000,6) /

INSERT INTO Taux_Metiers

VALUES(6,'Destructeur',66.33) /

INSERT INTO Employes VALUES('Max','1 là',6) /

INSERT INTO Entretiens

VALUES(123,'2006/01/01',5,'Max',1,1) /

(8)

--- -- Manipulations de la base de données (#3) -- ---

-- 1 --

SELECT No_Logement, Logements.No_Immeuble FROM Logements, Immeubles

WHERE Logements.No_Immeuble = Immeubles.No_Immeuble AND

Occ_Code='L' AND Nb_Chambres=3 AND Loyer<=750.0 AND Nb_Logements >=25 /

-- 2 --

SELECT Loc_Nom

FROM Logements, Immeubles, Locataires

WHERE Logements.No_Immeuble = Immeubles.No_Immeuble AND Locataires.Log_No_Immeuble = Immeubles.No_Immeuble AND Logements.No_Logement = Locataires.Log_No_Logement AND

Nb_Chambres=1 AND Vil_Nom_Ville = 'Boucherville' /

-- 3 --

SELECT Nb_Chambres, COUNT(*) AS Frequence FROM Logements,Immeubles

WHERE Logements.No_Immeuble = Immeubles.No_Immeuble AND Occ_Code='L' AND Vil_Nom_Ville = 'Longueuil' GROUP BY Nb_Chambres

/

-- 4 --

SELECT Description_Metier, Ent_Date, Logements.No_Logement AS No_Logement, Logements.No_Immeuble AS No_Immeuble

FROM Logements, Immeubles, Entretiens, Employes, Taux_Metiers

WHERE Logements.No_Immeuble = Immeubles.No_Immeuble AND Logements.No_Logement = Log_No_Logement AND Emp_Emp_Nom = Emp_Nom AND Taux_Code_Metier = Code_Metier AND

Foyer='O' AND Salle_A_Diner = 'N' AND (Vil_Nom_Ville = 'Boucherville' OR Vil_Nom_Ville = 'St-Bruno') /

-- 5 --

SELECT Loc_Nom, No_Logement, No_Immeuble FROM Logements, Locataires

WHERE Log_No_Logement = No_Logement AND Nb_Chambres>=2 AND Occupant = '5' /

-- 6 --

SELECT Loc_Nom, No_Logement, Logements.No_Immeuble AS No_Immeuble FROM Locataires, Logements, Immeubles

WHERE Logements.No_Immeuble = Immeubles.No_Immeuble AND Log_No_Logement = Logements.No_Logement AND Occ_Code='C' AND Meuble = 'S' AND Foyer='O' AND Vil_Nom_Ville='St-Bruno'

ORDER BY Loc_Nom DESC /

-- 7 --

SELECT Logements.No_Logement AS No_Logement, Log_No_Immeuble AS No_Immeuble FROM Logements, Locataires

WHERE Log_No_Logement = Logements.No_Logement AND Chauffage='H' AND Date_Fin_Bail ='2006/07/01' /

-- 8 --

SELECT Loc_Nom, COUNT(*) AS Frequence FROM Locataires

GROUP BY Loc_Nom HAVING COUNT(*) >= 2 /

-- 9 --

SELECT No_Immeuble, (Revenu_Loyer - Entretien - Assurances - Conciergerie - Frais_Hypotheque - Taxes) AS Profits

FROM Archives WHERE Annee=2005 /

-- 10 -- DELETE

FROM Locataires

WHERE Date_Fin_Bail < '2006/05/31' /

(9)

-- 11 --

SELECT Loc_Nom AS Nom, Log_No_Immeuble AS No_Immeuble, Logements.No_Logement AS No_Logement, Loc_Telephone AS Telephone

FROM Immeubles, Logements, Locataires

WHERE Log_No_Logement = Logements.No_Logement AND Log_No_Immeuble = Immeubles.No_Immeuble /

-- On confirme les données dans la base COMMIT

/

Références

Documents relatifs

*Source : sondage Ifop réalisé en mai 2018 pour l’Agence française pour la

Comme les espaces de départ et d'arrivée ont la même diension, elle est aussi injective : c'est un isomorphisme.. L'existence et l'unicité du polynôme interpolateur P vient de ce

quelle ont toute

Mettre Mettre à Mettre Mettre à à à jour jour jour en jour en en en cascade cascade cascade les cascade les les les champs champs champs champs correspondants

[r]

Fiches de cours KeepSchool. Les

Fiches de cours KeepSchool.. Les tables

Prendre du recul c'est pouvoir comparer et donc disposer dans son expérience, d'au moins deux systèmes différents à confronter.. Ce qui signifie que, par exemple, la