Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Oceane Bordeau
NF18_A21_TD2_GPE2
Commits
13d78f64
Commit
13d78f64
authored
Jan 05, 2022
by
Martin Schneider
Browse files
Merge branch 'main' of gitlab.utc.fr:obordeau/nf18_projet1 into main
parents
72357224
9ee516ab
Changes
5
Hide whitespace changes
Inline
Side-by-side
NoSQL.md
View file @
13d78f64
...
...
@@ -4,3 +4,4 @@ Et pour les oeuvres nous avons utilisé une liste avec leur ids.
Pour écrire les tables des oeuvres en JSON, on doit adopter une des deux méthodes pour gérer les clés étrangère:
<br>
-soit on met juste l'id correspondant
<br>
-soit on redéfinit à chaque fois (imbrication redondante)
Si par exemple on choisit la première méthode, l'attribut auteur serait un entier et expo une liste d'entier.
\ No newline at end of file
UML.drawio
deleted
100644 → 0
View file @
72357224
<mxfile host="app.diagrams.net" modified="2021-11-03T11:45:44.484Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36" etag="BAqdeIJBVgELe2pZdZs9" version="15.6.6" type="device"><diagram id="YENaLjN_NxkEbvXbnhcM" name="Page-1">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</diagram></mxfile>
\ No newline at end of file
VIEW.sql
deleted
100644 → 0
View file @
72357224
CReate
view
vOeuvres
as
SELECT
oe
.
ido
,
oe
.
titre
,
oe
.
dimensions
,
oe
.
type
,
oe
.
date_crea
,
oe
.
auteur
,
NULL
as
prix
,
NULL
as
dateacq
FROM
oeuvre_ext
oe
UNION
ALL
SELECT
ol
.
ido
,
ol
.
titre
,
ol
.
dimensions
,
ol
.
type
,
ol
.
date_crea
,
ol
.
auteur
,
ol
.
prix_acq
as
prix
,
ol
.
date_acq
as
dates
FROM
oeuvre_louvre
ol
;
application.py
View file @
13d78f64
...
...
@@ -133,9 +133,9 @@ def liste_expos_permanentes():
raw
=
cur
.
fetchone
()
print
(
"
\n
Liste des expositions permanentes"
)
while
raw
:
print
(
f
"Nom de l'exposition :
{
raw
[
0
]
}
\n
"
)
print
()
print
(
f
"Nom de l'exposition :
{
raw
[
0
]
}
"
)
raw
=
cur
.
fetchone
()
print
()
def
liste_expos_temporaires
():
...
...
@@ -172,25 +172,43 @@ def liste_oeuvres_louvre():
def
info_expo
():
cur
=
conn
.
cursor
()
tmp
=
0
sql
=
"SELECT nom from expo_perm;"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
print
(
"
\n
Les exposition permanentes sont:"
)
while
raw
:
print
(
f
"
{
raw
[
0
]
}
"
)
raw
=
cur
.
fetchone
()
print
()
sql
=
"SELECT nom from expo_temp;"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
print
(
"Les exposition temporaires sont:"
)
while
raw
:
print
(
f
"
{
raw
[
0
]
}
"
)
raw
=
cur
.
fetchone
()
print
()
nom
=
input
(
"
\n
Vous voulez connaitre des informations sur quelle exposition ?"
)
"Vous voulez connaitre des informations sur quelle exposition ?
\n
"
)
sql
=
f
"SELECT expo, Count(*), Avg(prix_acq) FROM OEUVRE_LOUVRE GROUP BY expo HAVING expo='
{
nom
}
'"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
if
raw
:
print
(
f
"Exposition
{
raw
[
0
]
}
"
)
print
(
f
"
\n
Exposition
:
{
raw
[
0
]
}
"
)
print
(
f
" Nombre d'oeuvres :
{
raw
[
1
]
}
"
)
print
(
f
" Prix moyen d'acquisition :
{
raw
[
2
]:.
2
f
}
"
)
print
()
tmp
=
1
sql
=
f
"SELECT expo, Count(*) FROM OEUVRE_EXT GROUP BY expo HAVING expo='
{
nom
}
'"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
if
raw
:
print
(
f
"Exposition
{
raw
[
0
]
}
"
)
print
(
f
"
\n
Exposition
{
raw
[
0
]
}
"
)
print
(
f
" Nombre d'oeuvres :
{
raw
[
1
]
}
"
)
print
()
tmp
=
1
if
tmp
==
0
:
print
(
"L'exposition n'existe pas"
)
print
(
"
\n
L'exposition n'existe pas
\n
"
)
def
afficher_guide_expo
():
...
...
@@ -200,14 +218,28 @@ def afficher_guide_expo():
choixExpo
=
input
(
"
\n
Exposition permanente (1) ou exposition temporaire (2)
\n
"
)
expo
=
input
(
"
\n
Entrez le nom de l'exposition:
\n
"
)
if
(
choixExpo
==
'1'
):
sql
=
"SELECT nom from expo_perm;"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
print
(
"
\n
Les exposition permanentes sont:"
)
while
raw
:
print
(
f
"
{
raw
[
0
]
}
"
)
raw
=
cur
.
fetchone
()
expocol
=
"expoperm"
affecter
=
"affecter_perm"
else
:
sql
=
"SELECT nom from expo_temp;"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
print
(
"
\n
Les exposition temporaires sont:"
)
while
raw
:
print
(
f
"
{
raw
[
0
]
}
"
)
raw
=
cur
.
fetchone
()
expocol
=
"expotemp"
affecter
=
"affecter_temp"
expo
=
input
(
"
\n
Entrez le nom de l'exposition:
\n
"
)
sql
=
f
"SELECT idg, nom, prenom FROM guide JOIN
{
affecter
}
as a ON a.guide=guide.idg WHERE a.
{
expocol
}
= '
{
expo
}
' GROUP BY nom, prenom, idg;"
cur
.
execute
(
sql
)
...
...
@@ -302,14 +334,14 @@ def liste_oeuvre_periode():
def
temp_moyen_pret
():
cur
=
conn
.
cursor
()
sql
=
"SELECT idm, nom, adresse, AVG(ROUND(fin - debut)) FROM Prete JOIN Musee_ext ON prete.musee = musee_ext.IDM GROUP BY idm, musee_ext adresse, nom;"
sql
=
"SELECT idm, nom, adresse, AVG(ROUND(fin - debut)) FROM Prete JOIN Musee_ext ON prete.musee = musee_ext.IDM GROUP BY idm, musee_ext
,
adresse, nom;"
cur
.
execute
(
sql
)
raw
=
cur
.
fetchone
()
print
(
"Temps moyen d'un prêt (par musée):"
)
while
raw
:
print
(
f
"musée partenaire :
{
raw
[
0
]
}
:
"
)
print
(
f
" adresse :
{
raw
[
1
]
}
"
)
print
(
f
"
temps moyen des prêts :
{
raw
[
2
]
}
jours"
)
print
(
f
"musée partenaire :
{
raw
[
1
]
}
"
)
print
(
f
" adresse :
{
raw
[
2
]
}
"
)
print
(
f
" temps moyen des prêts :
{
raw
[
3
]
}
jours"
)
print
()
raw
=
cur
.
fetchone
()
...
...
@@ -324,13 +356,17 @@ def informations_oeuvres():
print
(
"Informations sur chaque oeuvre :"
)
while
raw
:
if
raw
[
2
]
!=
None
:
print
(
f
"Nom de l'oeuvre :
{
raw
[
1
]
}
(id:
{
raw
[
0
]
}
) "
)
print
(
f
" prix d'acquisition :
{
raw
[
2
]
}
"
)
print
(
f
" prix total des
{
raw
[
3
]
}
rennovation
{
raw
[
4
]
}
euros "
)
print
(
f
"Nom de l'oeuvre :
{
raw
[
1
]
}
"
)
print
(
f
" Prix d'acquisition :
{
raw
[
2
]
}
"
)
if
raw
[
3
]
!=
0
:
print
(
f
" Prix total des
{
raw
[
3
]
}
rennovation
{
raw
[
4
]
}
euros"
)
else
:
print
(
" Cette oeuvre n'a jamais été restaurée"
)
print
()
else
:
print
(
f
"Nom de l'oeuvre :
{
raw
[
1
]
}
(id:
{
raw
[
0
]
}
)
"
)
print
(
"
e
mpruntée d'un autre musée"
)
print
(
f
"Nom de l'oeuvre :
{
raw
[
1
]
}
"
)
print
(
"
E
mpruntée d'un autre musée"
)
print
()
raw
=
cur
.
fetchone
()
...
...
init.sql
View file @
13d78f64
...
...
@@ -154,6 +154,16 @@ CREATE TABLE Panneau(
PRIMARY
KEY
(
ID
,
salle
)
);
CREATE
view
vOeuvres
as
SELECT
oe
.
ido
,
oe
.
titre
,
oe
.
dimensions
,
oe
.
type
,
oe
.
date_crea
,
oe
.
auteur
,
NULL
as
prix
,
NULL
as
dateacq
FROM
oeuvre_ext
oe
UNION
ALL
SELECT
ol
.
ido
,
ol
.
titre
,
ol
.
dimensions
,
ol
.
type
,
ol
.
date_crea
,
ol
.
auteur
,
ol
.
prix_acq
as
prix
,
ol
.
date_acq
as
dates
FROM
oeuvre_louvre
ol
;
CREATE
VIEW
vExpos
AS
SELECT
*
FROM
Expo_Perm
UNION
ALL
SELECT
nom
FROM
Expo_Temp
;
INSERT
INTO
Artiste
(
nom
,
prenom
,
naiss
,
mort
)
VALUES
(
'Rodin'
,
'Auguste'
,
TO_DATE
(
'1840-11-12'
,
'YYYY-MM-DD'
),
TO_DATE
(
'1917-11-17'
,
'YYYY-MM-DD'
));
INSERT
INTO
Artiste
(
nom
,
prenom
,
naiss
,
mort
)
VALUES
(
'De Vinci'
,
'Léonard'
,
TO_DATE
(
'1452-04-14'
,
'YYYY-MM-DD'
),
TO_DATE
(
'1519-05-02'
,
'YYYY-MM-DD'
));
INSERT
INTO
Artiste
(
nom
,
prenom
,
naiss
,
mort
)
VALUES
(
'Monet'
,
'Claude'
,
TO_DATE
(
'1840-11-14'
,
'YYYY-MM-DD'
),
TO_DATE
(
'1926-12-05'
,
'YYYY-MM-DD'
));
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment