SLAM1 Exploitation de schema de donnees issueshttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues2020-05-14T07:28:40Zhttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/16QUE DEVIENT UNE HIÉRARCHIE DE CLASSES DANS LE MLD / MLR2020-05-14T07:28:40ZStevan BLANCHARDQUE DEVIENT UNE HIÉRARCHIE DE CLASSES DANS LE MLD / MLR1ère solution : “la complète” ⇒ chaque classe devient une table ==> table "générique" normale + tables "spécifiques" avec les champs de la classe "générique" + propriétés spécifiques, la cp étant aussi clé étrangère
```
Client(numCarte,...1ère solution : “la complète” ⇒ chaque classe devient une table ==> table "générique" normale + tables "spécifiques" avec les champs de la classe "générique" + propriétés spécifiques, la cp étant aussi clé étrangère
```
Client(numCarte, nom, ville, numRue, cp, rue, tel, mail)
clé primaire : numCarte
```
```
ClientCarteBancaire (numCarte, nom, ville, numRue, cp, rue, tel, mail, nomRéseau)
clé primaire : numCarte
clé étrangère : numCarte fait référence à Client
```
```
ClientCarteFidelite (numCarte, nom, ville, numRue, cp, rue, tel, mail, montantAbonnement)
clé primaire : numCarte
clé étrangère : numCarte fait référence à Client
```
2ème solution : “la semie-complète” ⇒ chaque classe devient une table ==> table "générique" normale + tables "spécifiques" avec juste les propriétés spécifiques, + la propriété cp de la classe générique qui devient donc cp de chaque classe spécifique et aussi clé étrangère.
Client(numCarte, nom, ville, numRue, cp, rue, tel, mail)
clé primaire : numCarte
```
ClientCarteBancaire (numCarte, nomRéseau)
clé primaire : numCarte
clé étrangère : numCarte fait référence à Client
```
```
ClientCarteFidelite (numCarte, montantAbonnement)
clé primaire : numCarte
clé étrangère : numCarte fait référence à Client
```
3ème solution : “light” ⇒ 1 seule table pour l'ensemble de la hiérarchie contenant alors les propriétés de toutes les classes
Client(numCarte, nom, ville, numRue, cp, rue, tel, mail, nomReseau, montantAbo)
clé primaire : numCartehttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/15TP séquence 5 EX12020-05-07T07:55:13ZStevan BLANCHARDTP séquence 5 EX1![image](/uploads/b078997f918319adb4c4929d3bed5eb0/image.png)
association ACHETER entre teckel et acheteur : un acheteur peut acheter 0 ou * teckel et un teckel peut être vendu à 0 ou 1 acheteur
association VENDRE entre teckel et élev...![image](/uploads/b078997f918319adb4c4929d3bed5eb0/image.png)
association ACHETER entre teckel et acheteur : un acheteur peut acheter 0 ou * teckel et un teckel peut être vendu à 0 ou 1 acheteur
association VENDRE entre teckel et éleveur : un éleveur peut vendre 0 ou * teckel et un teckel peut nous être vendu par aucun (cas des chiens nés à domicile) ou 1 seul éleveur.
{ X } : un teckel ne peut pas être acheté par un acheteur si il nous a été vendu par un éleveur !!
eXclusion : l’une ou l’autre ou rien !
2- Réaliser le modèle Logique (textuel).
Acheteur (ID, Nom, Prenom, numéro rue, nom rue, ville, code postal)
clé primaire : ID
Eleveur(id, nom eleveur, prénom,affixe, nom rue, numéro rue, ville, code postal)
Clé primaire : id
Teckel(Tatouage,nom,datenaiss,sexe,poids, idAcheteur,idEleveur )
Clé primaire : Tatouage
Clé étrangère : idAcheteur fait référence à Acheteur
Clé étrangère : idEleveur fait référence à Eleveur
expliquez comment sont traduites les éventuelles contraintes du Diagramme de classes dans le MLd ?
![image](/uploads/350485e27a8e7626a6bbcf18297a38c7/image.png)
Elles ne sont pas traduites ⇒ elles sont là juste à titre d’information afin de ne pas oublier de gérer cela par du code ensuite dans le SGBDR (à l’aide de procédure stockée et/ou “déclencheur”)Stevan BLANCHARDStevan BLANCHARDhttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/14UML Séquance 5 ex22020-04-30T10:08:17ZStevan BLANCHARDUML Séquance 5 ex2![image](/uploads/25c979c6d84b4c70d599f2fc6b1964f6/image.png)![image](/uploads/25c979c6d84b4c70d599f2fc6b1964f6/image.png)Stevan BLANCHARDStevan BLANCHARDhttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/13TP4 EX22020-04-09T06:44:39ZStevan BLANCHARDTP4 EX21-
![image](/uploads/93c439a21547038d7f6635ca44af4bd6/image.png)
2-
![image](/uploads/c30b4d4ccb74101b6f5150372fc68ff0/image.png)
3-
```
CREATE TABLE personne (
code SERIAL,
nom VARCHAR(20),
prenom VARCHAR(20),
numRue INT,
nomRue VAR...1-
![image](/uploads/93c439a21547038d7f6635ca44af4bd6/image.png)
2-
![image](/uploads/c30b4d4ccb74101b6f5150372fc68ff0/image.png)
3-
```
CREATE TABLE personne (
code SERIAL,
nom VARCHAR(20),
prenom VARCHAR(20),
numRue INT,
nomRue VARCHAR(20),
CP CHAR(5),
ville VARCHAR(20),
telephone CHAR(10),
mail VARCHAR(30),
dateNaissance DATE,
codeConjoint INT,
codePere INT,
codeMere INT,
PRIMARY KEY (code)
);
CREATE TABLE banque (
code SERIAL,
num_rue INT,
nom_rue VARCHAR(20),
CP CHAR(5),
ville VARCHAR(20),
nomDirecteurVARCHAR(20),
prenomDirecteurVARCHAR(20),
PRIMARY KEY (code)
);
CREATE TABLE compte (
num SERIAL,
solde FLOAT,
dateCreation DATE,
codeBanque INT,
codeProprietaire1 INT,
codeProprietaire2 INT,
PRIMARY KEY (num)
);
CREATE TABLE client (
codePersonne INT,
codeBanque INT,
PRIMARY KEY (codePersonne, codeBanque)
);
ALTER TABLE compte ADD CONSTRAINT fkcode_banque FOREIGN KEY (codeBanque) REFERENCES banque(code);
ALTER TABLE compte ADD CONSTRAINT fkcode_proprietaire1 FOREIGN KEY (codeProprietaire1) REFERENCES personne(code);
ALTER TABLE compte ADD CONSTRAINT fkcode_proprietaire2 FOREIGN KEY (codeProprietaire2) REFERENCES personne(code);
ALTER TABLE client ADD CONSTRAINT fkcode_personne FOREIGN KEY (codePersonne) REFERENCES personne(code);
ALTER TABLE client ADD CONSTRAINT fkcode_banque FOREIGN KEY (codeBanque) REFERENCES banque(code);
ALTER TABLE personne ADD CONSTRAINT fkcode_conjoint FOREIGN KEY (codePersonne) REFERENCES personne(code);
ALTER TABLE personne ADD CONSTRAINT fkcode_pere FOREIGN KEY (codePere) REFERENCES personne(code);
ALTER TABLE personne ADD CONSTRAINT fkcode_mere FOREIGN KEY (codeMere) REFERENCES personne(code);
```
6-
```
SELECT num FROM slam1.compte
WHERE codeProprietaire1 IS NOT NULL AND codeProprietaire2 IS NOT NULL;
```
```
Select numero, num_client1 from compte
where code_agence = 'A1' order by num_client1;
```
```
SELECT nom, prenom
FROM Client C1
WHERE conjoint is not null
AND EXISTS ( SELECT mere FROM Client WHERE C1.code = mere)
OR EXISTS ( SELECT pere FROM Client WHERE C1.code = pere);
```
EXISTS --> elle retourne vrai si la sous requête retourne au moins 1 ligne
faux sinon.
==> on a la liste des clients qui ont 1 conjoint et qui existent en tant que père ou mère dans la table client
https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/12TP42020-04-02T07:17:17ZStevan BLANCHARDTP41-
![image](/uploads/23bc20e36c0e2e6b779646a76602096a/image.png)
-2
![image](/uploads/879f2564e1258bf2850fd805f9e02d42/image.png)
```
create table medic.famille
(
code_famille serial,
libelle varchar(50),
primary key(code_famille...1-
![image](/uploads/23bc20e36c0e2e6b779646a76602096a/image.png)
-2
![image](/uploads/879f2564e1258bf2850fd805f9e02d42/image.png)
```
create table medic.famille
(
code_famille serial,
libelle varchar(50),
primary key(code_famille)
);
create table medic.medicament
(
code_medicament serial,
libelle varchar(50),
prix int,
code_famille int,
primary key(code_medicament),
foreign key (code_famille) references medic.famille
);
create table medic.moleculle
(
code_mollecule serial,
libelle varchar(50),
primary key(code_mollecule)
);
create table medic.asso
(
code_commercialle int,
code_generique int,
primary key(code_commercialle, code_generique),
foreign key(code_commercialle) references medic.medicament,
foreign key(code_generique) references medic.medicament
);
```
Code sql pour entrer les famille
```
insert into medic.famille values (1,'péniciline'), (2,'Céphalosporines')
```
code sql pour entrer les médicaments
```
insert into medic.medicament values
(1,'EXTENCILINE',15,1),
(2,'ZYDUS',10,1),
(3,'WINTHROP',9.50,1),
(4,'SANDOZ',10.50,1),
(5,'KEFORAL',19.90,2),
(6,'RAMBAZY',15.55,2),
(7,'BIOGARAN',13,2);
```
6-
Afficher les médicament de la famille péniciline
```
select *
from medic.medicament
where code_famille=(
select code_famille
from medic.famille
where libelle='péniciline')
```
Afficher le nombre de médicament géneriquehttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/11eval22020-03-22T15:47:18ZGéraldine Tayssegeraldine.taysse@bts-malraux.neteval2Prénom - nom ===>> Stevan Blanchard
Question 1
La région couvre un seul établissement
un établissement peut couvrir une seule ou plusieurs région
un Étudiant fréquente un seul établissent
un établissement est fréquenté par aucun ou pl...Prénom - nom ===>> Stevan Blanchard
Question 1
La région couvre un seul établissement
un établissement peut couvrir une seule ou plusieurs région
un Étudiant fréquente un seul établissent
un établissement est fréquenté par aucun ou plusieurs Étudiant
un Étudiant suis un seul cursus
un cursus est suivi par aucun ou plusieurs étudiant
un étudiant souscrit a une seul convention
une convention est souscrite par aucun ou plusieurs Étudiant
la convention est signer par une seul entreprise
une entreprise peut signer aucune ou plusieurs convention
un Étudiant peut posséder aucune ou plusieurs compétence
une compétence peut être posséder par aucun ou plusieurs étudiant
une entreprise peut rechercher aucun ou plusieurs profils
un profil peut rechercher aucune ou plusieurs entreprises
un profil peut contenir aucune ou plusieurs compétences
une compétence peut être contenue dans aucun ou plusieurs profils
Question 2
Etablisement(idEtablisement,nom,nomRue,numRue,cp,vill,tel,mail,nomResponsable)
Clé primaire : idEtablisement
Etudiant(idEtudiant,nom,prenom,nomRue,numRue,cp,vill,tel,dateNaiss, idEtablisement, codeCursus )
Clé primaire : idEtudiant
Clé étrangère : idEtablisement fait réference a la table Etablisement, codeCursus fait réference a la table Cursus
Cursus(codeCursus,libelle)
Clé primaire : codeCursus
Region(codeRegion,nom)
Clé primaire : codeRegion
Clé étrangère : idEtablisementfait réference a la table Etablisement
Convention(numConvention, date, caracteristique, dateFin, idEtudiant, idEntreprise)
Clé primaire : numConvention
Clé étrangère : idEtudiant fait réference a la table Etudiant, idEntreprise fait réference a la table Entreprise
Entreprise(idEntreprise,nom,nomRue,numRue,cp,vill,tel,mail,siret,nomResponsable)
Clé primaire : idEntreprise
Clé étrangère :
Competence(codeCompétence, libelle)
Clé primaire : codeCompétence
Clé étrangère :
Profil(idProfil, description)
Clé primaire : idProfil
Clé étrangère :
Posséder(idNiveau, niveau Aquissition, idEtudiant, idCompetence)
Clé primaire : idNiveau
Clé étrangère : idCompetence fait référence a la table Competence, idEtudiant fait référence a la table Etudiant
Rechercher(numRecherche, idEntreprise, idProfil)
Clé primaire : numRecherche
Clé étrangère : idEntreprise fait référence a la table Entreprise, idProfil fait référence a la table Profil
Contenir (numContenir, idProfil, codeCompétence)
Clé primaire : numContenir
Clé étrangère : idProfil fait référence a la table Profil, codeCompétence fait référence a la table Competence
Question 3a
--> V
car il peut ne posséder aucune ou plusieurs compétence et une compétence peut ne contenir aucun ou plusieurs profils
Question 3b
--> F
La multiplicité indique que une entreprise peut accueillir aucun ou plusieurs Étudiant en stage
Question 3c
--> V
car l'étudiant peut souscrire aucune ou plusieurs convenions, convenions pouvant être signer par une seule entreprise. donc plusieurs convention du même étudiant peuvent être signer par la même entreprise
Question 4a
SELECT nom E2, prenom E2
FROM Etudiant
INNER JOIN Entreprise ON Etudiant.idEtablissment = Entreprise.id
INNER JOIN Etudiant ON idEntreprise E2 = idEntreprise E1
WHERE prenom="Mathieu" AND nom="Yoda";
Question 4b
SELECT nom, prénom, nomEntreprise, numConvention
FROM Etudiant
INNER JOIN Convention ON Etudiant.id = Convention.idEtudiant
INNER JOIN Entreprise ON Convention.idEntreprise = Entreprise.id
Where numConvention < 4;https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/10Sequence 4 : diagram class2020-03-19T10:46:03ZStevan BLANCHARDSequence 4 : diagram class![image](/uploads/6bd6361860d3cb1543cc4e81f53e3ca5/image.png)
![image](/uploads/a3fc6970b29e73bfe95264bf29980466/image.png)
![image](/uploads/6bd6361860d3cb1543cc4e81f53e3ca5/image.png)
![image](/uploads/a3fc6970b29e73bfe95264bf29980466/image.png)
https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/9LE DIAGRAMME DE CLASSES EX12020-03-09T10:20:44ZStevan BLANCHARDLE DIAGRAMME DE CLASSES EX1#Diagramme de classe
![image](/uploads/23f4de3eb2ffcea1e2d31a3d8671dd24/image.png)
#MLD
![image](/uploads/ce58d1834aba27915f4d3bd03d1d423f/image.png)#Diagramme de classe
![image](/uploads/23f4de3eb2ffcea1e2d31a3d8671dd24/image.png)
#MLD
![image](/uploads/ce58d1834aba27915f4d3bd03d1d423f/image.png)https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/8entrainement2020-03-02T10:45:09ZStevan BLANCHARDentrainementcommune(idCommune, nom, population, nbFoyer)
CP: idCommune
communauté(code, nom, idCommune )
CP: code
CE: idCommune ref commune
déchetterie(code_déchetterie, adresse, tel, horaire, nomResponsable, idCommune )
CP: code_déchetter...commune(idCommune, nom, population, nbFoyer)
CP: idCommune
communauté(code, nom, idCommune )
CP: code
CE: idCommune ref commune
déchetterie(code_déchetterie, adresse, tel, horaire, nomResponsable, idCommune )
CP: code_déchetterie
CE: idCommune ref commune
socle(idSocle, localisation, idCommune)
CP: idSocle
CE: idCommune ref commune
emplacement(idEmplacement, fréquenceLevées, dateProchaineLevee, idCommune, idSocle , code_Type_PAV)
CP: idEmplacement
CE: idCommune ref commune, idSocle ref socle, code_Type_PAV ref Type_PAV
Levée(id, date, poids, code_déchetterie,idEmplacement , code_Type_déchet )
CP: id
CE: code_déchetterie ref déchetterie, idEmplacement ref emplacement, code_Type_déchet ref Type_déchet
Type_déchet(code_Type_déchet, libelle, code_Type_PAV )
CP: code_Type_déchet
CE: code_Type_PAV ref Type_PAV
Type_PAV(code_Type_PAV,libelle,couleur)
CP: code_Type_PAVhttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/7Exercice : C2020-03-02T09:33:30ZStevan BLANCHARDExercice : C# Résultat du reverse engineering :
![image](/uploads/8b164670595b28ee168a746e7ed9a30d/image.png)
# Diagramme de classe UML
![image](/uploads/c2dc7e8f9326b5cf99f42cddd7e166e8/image.png)
3.
A) Oui car la multiplicité du côté fournisseur...# Résultat du reverse engineering :
![image](/uploads/8b164670595b28ee168a746e7ed9a30d/image.png)
# Diagramme de classe UML
![image](/uploads/c2dc7e8f9326b5cf99f42cddd7e166e8/image.png)
3.
A) Oui car la multiplicité du côté fournisseur sur l'association entre matériel et fournisseur est à 1.
B) L'association reliant fournisseur et consommable a pour multiplicité du côté fournisseur 1* donc oui.
C) Oui le fournisseur peut vendre soit du matériel soit du consommable.
D) Faux car la date de réparation est dans la classe association qui relie matériel,type de panne,forunisseur et date ce qui signifie que pour une date d'un matériel on ne connais alors qu'une seule date de réparation donc non
4.
![image](/uploads/97baf921d47ed384a0ea43712befee38/image.png)TP séquence 1https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/6Exercice 22020-01-27T09:42:58ZStevan BLANCHARDExercice 2# Schemas relationel
![Capture](/uploads/78a2259a3d0711bc27f292a4febb1035/Capture.PNG)
# Diagramme de classe
![image](/uploads/40e8c202f818493b811c72a25e643f05/image.png)# Schemas relationel
![Capture](/uploads/78a2259a3d0711bc27f292a4febb1035/Capture.PNG)
# Diagramme de classe
![image](/uploads/40e8c202f818493b811c72a25e643f05/image.png)TP séquence 1https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/5Exercice 52020-01-20T11:13:04ZStevan BLANCHARDExercice 5MDL :
![image](/uploads/8d4c0b46324db743b5f6cce4e9e679cc/image.png)
[code SQL](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4760)MDL :
![image](/uploads/8d4c0b46324db743b5f6cce4e9e679cc/image.png)
[code SQL](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4760)séance 20/1/2020https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/4Issue exercice 12020-01-20T09:44:28ZStevan BLANCHARDIssue exercice 11-
* num + date => montant.
* num => nom, cumul, ville, date.
2-
![image](/uploads/992cb04fe10c208b934e7a10f53f84dc/image.png)
3,4-
![image](/uploads/e31f10810010dc2bd4a8dac709064e90/image.png)
5-
[code SQL](https://framagit.org...1-
* num + date => montant.
* num => nom, cumul, ville, date.
2-
![image](/uploads/992cb04fe10c208b934e7a10f53f84dc/image.png)
3,4-
![image](/uploads/e31f10810010dc2bd4a8dac709064e90/image.png)
5-
[code SQL](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4685)
6-
* a) `alter table donnateur add rue varchar(25), add cp varchar(5)`
* b) `alter table donnateur add constraint EouP check (type in ('E', 'P'))`
si on se tronpe voici l'erreur "la nouvelle ligne de la relation « donnateur » viole la contrainte de vérification « eoup »"
* c) `insert into donnateur values (1,'Pedro','Santos','P',700,'rue des plaisirs','72700','Allonnes')
(2,'Samuel','Bennala','P',0,'7 rue du cancre','72700','Allonnes')
(3,'Pathé','Poulet','E',3000,'3 rue du poulaliet','72700','Allonnes')
`
* d) `update slam1.donnateur set cumul = (cumul - 50) where cumul >= 300`
* e) `select nom from slam1.donnateur inner join slam1.donnation on donnateur.num = donnation.num_donnateur where donnation.montant < 50`
* f) `select nom, montant
from slam1.donnateur
inner join slam1.donnation on donnateur.num = donnation.num_donnateur
order by montant desc limit 1`
* g) `select nom as "nom donnateur", max(montant) as "montant le plus élevé", min(montant) as "montant le plus faible", avg(montant) as "moyenne des dons"
from slam1.donnateur
inner join slam1.donnation on donnateur.num =donnation.num_donnateur
group by nom
order by 2 desc;`
* h) `update slam1.donnateur d1
set cumul = cumul + (select sum(montant)
from slam1.donnation
where num_donnateur = d1.num);`
* i) `delete from donnation where extract(year from date)=2019`https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/3Exercice voiture2020-01-13T09:46:55ZStevan BLANCHARDExercice voitureschémas des dépendances fonctionnelle
![image](/uploads/d0f2c2a9386e9839c5b8562aa18ef90b/image.png)
[code sql](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4684)schémas des dépendances fonctionnelle
![image](/uploads/d0f2c2a9386e9839c5b8562aa18ef90b/image.png)
[code sql](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4684)séance 2https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/2Exercice 22020-01-06T10:17:03ZStevan BLANCHARDExercice 2![image](/uploads/3fb6ff0367d343a8fe339b77c4dc6612/image.png)
[Code SQL de la base de donnée de l'exercice 2](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4626)![image](/uploads/3fb6ff0367d343a8fe339b77c4dc6612/image.png)
[Code SQL de la base de donnée de l'exercice 2](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4626)Séance 1 : RG et DFhttps://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/-/issues/1Exercice : 12020-01-06T09:38:52ZStevan BLANCHARDExercice : 1![image](/uploads/7aed102fe605b3321df9b6135642009d/image.png)
[Code SQL de la base de données](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4624)![image](/uploads/7aed102fe605b3321df9b6135642009d/image.png)
[Code SQL de la base de données](https://framagit.org/s.blanchard/slam1-exploitation-de-schema-de-donnees/snippets/4624)Séance 1 : RG et DF