Commit 118d687f authored by Martin Schneider's avatar Martin Schneider
Browse files

merge

parents 6296abd5 ca47d4dc
......@@ -127,6 +127,7 @@ __Est affecté__
# _Héritages_ :
Les oeuvres empruntées et pretées hérite de tous les attributs de l'objets oeuvre (caractéristiques permanente), pour les oeuvres possedée par le louvre on veut garder en memoir le prix d'acqusition et pour celmles appartenants a un musée exterieur on précisera de quel musée il provient par une association
Nous avons décider de modideliser cet heriatge par deux classe filles completées d'une vue dynamique qui represente la classe oeuvre
.
__OBJET HERITE oeuvre_louvre__
......
Dans expo_perm.json et expo_temp.json, nous avons utilisé une représentation avec imbrication redondante pour les guides, les salles et les panneaux, c'est à dire qu'ils sont décrits plusieurs fois dans une exposition.
Et pour les oeuvres nous avons utilisé une liste avec leur ids.
Pour écrire les tables des oeuvres en JSON, on peut mettre en attribut toutes les tables qui possèdent une clé étrangère vers oeuvre, soit en redéfinissant l'objet à chaque soit avec les ids.
\ No newline at end of file
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;
......@@ -4,6 +4,55 @@ conn = psycopg2.connect("host=%s dbname=%s user=%s password=%s" % (
"tuxa.sme.utc", "dbnf18a037", "nf18a037", "1AfyGsAH"))
def inserer_musee():
nom = input("Entrez le nom du musée")
codep = input("code postal du musée : ")
ville = input("ville du musee")
adresse = input("adresse complete du musée : ")
cur = conn.cursor()
if nom and codep and ville and adresse :
try:
sql = f"INSERT INTO MUSEE_EXT ( nom, adresse, cp, ville) VALUES ('{nom}', '{adresse}', '{codep}', '{ville}');"
cur.execute(sql)
conn.commit()
print("insertion en cours")
except psycopg2.DataError as e:
print("echec de l'insertion")
print(e)
else :
print("tentative d'ajout d'une valeur nulle, retour")
print()
def inserer_neolitique():
cur = conn.cursor()
try:
sql = "INSERT INTO OEUVRE_EXT (titre, type, date_crea) VALUES ('Statue Menhir', 'sculpture', -4000);"
cur.execute(sql)
conn.commit()
print("insertion success")
except psycopg2.DataError as e:
print("echec de l'insertion")
print(e)
def inserer_expoperm():
nom = input("Entrez le nom de l'expo")
cur = conn.cursor()
if nom :
try:
sql = f"INSERT INTO EXPO_PERM VALUES '{nom}');"
cur.execute(sql)
conn.commit()
print("insertion de l'exposition", nom, "réussi")
except psycopg2.DataError as e:
print("echec de l'insertion")
print(e)
else :
print("tentative d'ajout d'une valeur nulle, retour")
print()
def liste_guide():
cur = conn.cursor()
sql = "SELECT IDG, nom, prenom, date_embauche FROM guide"
......@@ -153,16 +202,62 @@ def liste_oeuvre_umpruntees():
print()
raw = cur.fetchone()
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;"
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()
raw = cur.fetchone()
def informations_oeuvres():
cur = conn.cursor()
sql = 'SELECT O.ido, O.titre , O.prix_acq, count(R.oeuvre) as "Nombre restaurations", sum(R.montant) as "Total montant restaurations" FROM OEUVRE_LOUVRE O \
LEFT JOIN Restaurer R ON R.oeuvre = O.ido GROUP BY O.ido, O.titre, O.prix_acq UNION ALL \
SELECT oe.ido, oe.titre, NULL AS prix, -1 AS "Nombre restaurations", NULL AS "Total montant restaurations" FROM oeuvre_ext oe;'
cur.execute(sql)
raw = cur.fetchone()
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()
else:
print(f"Nom de l'oeuvre : {raw[1]} (id:{raw[0]}) ")
print(" empruntée d'un autre musée")
print()
raw = cur.fetchone()
def main():
print(conn)
menu()
cont=0
while cont ==0:
print(conn)
menu()
cont=int(input("Continuer 1, si oui"))
conn.close()
print(conn)
return 0
def menu():
print("Inserer des donées:")
print(" 20. Insertion d'un nouveau musée")
print(" 21. Insertion oeuvre néolithique")
print(" 22. Creer une nouvelle exposition permanente")
print(" 23. ")
print(" 24. ")
print(" 25. ")
print(" 26. ")
print("Liste des requêtes :")
print("1. Lister les guides avec leur identification, nom, prénom, et date d'embauche.")
print("2. Lister toutes les informations des expositions permanentes.")
......@@ -201,6 +296,22 @@ def menu():
if choice == 7:
liste_oeuvre_pretees()
if choice == 8:
temp_moyen_pret()
if choice == 9:
informations_oeuvres()
#requettes insertions
if choice == 20:
inserer_musee()
if choice == 21:
inserer_neolitique()
if choice == 22:
inserer_expoperm()
if __name__ == '__main__':
......
[{
"nom": "Femmes",
"oeuvres": [1, 2, 5],
"affectations": [{
"jour": "lundi",
"creneau": "9-11",
"guide": {
"nom": "Sellier",
"prenom": "Barnabé",
"adresse": "15 RUE DES LOMBARDS",
"embauche": "2021-07-01"
}
},
{
"jour": "jeudi",
"creneau": "13-15",
"guide": {
"nom": "Schneider",
"prenom": "Martin",
"adresse": "8 BLVD VICTOR HUGO",
"embauche": "2020-07-01"
}
}]
},
{
"nom": "GreceAntique",
"oeuvres": [1, 3, 4],
"affectations": [{
"jour": "vendredi",
"creneau": "9-11",
"guide": {
"nom": "Sellier",
"prenom": "Barnabé",
"adresse": "15 RUE DES LOMBARDS",
"embauche": "2021-07-01"
}
}]
}]
\ No newline at end of file
[{
"nom": "Impressioniste",
"debut": "2021-06-01",
"fin": "2021-12-01",
"oeuvres": [1, 2, 3],
"affectations": [{
"jour": "lundi",
"guide": {
"nom": "Sellier",
"prenom": "Barnabé",
"adresse": "15 RUE DES LOMBARDS",
"embauche": "2021-07-01"
}
},
{
"jour": "jeudi",
"guide": {
"nom": "Schneider",
"prenom": "Martin",
"adresse": "8 BLVD VICTOR HUGO",
"embauche": "2020-07-01"
}
}],
"salle": {
"num": 10,
"capacite": 100
},
"panneau": [{
"num" : 1,
"description": "penseur de rodin"
},
{
"num": 2,
"description": "Nymphéas"
}
]
},
{
"nom": "Neolithique",
"debut": "2021-06-01",
"fin": "2025-12-01",
"oeuvres": [1, 3, 4, 5],
"affectations": [{
"jour": "lundi",
"guide": {
"nom": "Sellier",
"prenom": "Barnabé",
"adresse": "15 RUE DES LOMBARDS",
"embauche": "2021-07-01"
}
},
{
"jour": "mercredi",
"guide": {
"nom": "Schneider",
"prenom": "Martin",
"adresse": "8 BLVD VICTOR HUGO",
"embauche": "2020-07-01"
}
}],
"salle": {
"num": 1,
"capacite": 150
},
"panneau": [{
"num" : 3,
"description": "Guernica"
}]
}]
\ No newline at end of file
......@@ -161,6 +161,8 @@ INSERT INTO Artiste (nom, prenom, naiss, mort) VALUES ('Picasso', 'Pablo', TO_DA
INSERT INTO Artiste (nom, prenom, naiss, mort) VALUES ('Canova', 'Antonio', TO_DATE('881-10-25', 'YYYY-MM-DD'), TO_DATE('973-04-08', 'YYYY-MM-DD'));
INSERT INTO Expo_temp VALUES ('Impressionniste', TO_DATE('2021-06-01', 'YYYY-MM-DD'), TO_DATE('2021-12-01', 'YYYY-MM-DD'));
INSERT INTO Expo_temp VALUES ('Cubisme', TO_DATE('2021-12-01', 'YYYY-MM-DD'), TO_DATE('2022-12-01', 'YYYY-MM-DD'));
INSERT INTO Expo_perm VALUES ('Femmes');
......@@ -172,6 +174,8 @@ INSERT INTO Musee_ext (nom, adresse, CP, ville) VALUES ('Musée d''Orsay', '62 r
INSERT INTO Oeuvre_ext (titre, dimensions, type, date_crea, auteur, expo) VALUES ('Le penseur', '1.8 x 0.98 x 1.45', 'sculpture', 1880, 1, 'Impressionniste');
INSERT INTO Oeuvre_ext (titre, dimensions, type, date_crea, auteur, expo) VALUES ('Les nymphéas', '0.219 x 0.602', 'peinture', 1920, 3, 'Impressionniste');
INSERT INTO Oeuvre_ext (titre, dimensions, type, date_crea, auteur, expo) VALUES ('Guernica', '0.349 x 0.776', 'peinture', 1937, 4, 'Impressionniste');
INSERT INTO Oeuvre_ext (titre, dimensions, type, date_crea, auteur, expo) VALUES ('trois femmes', '200 × 178 cm', 'peinture', 1908, 4, 'Cubisme');
INSERT INTO Oeuvre_louvre (titre, dimensions, type, date_crea, auteur, prix_acq, date_acq, expo) VALUES ('La joconde', '0.77 x 0.53', 'peinture', 1510, 2, 10000000, TO_DATE('1990-01-01', 'YYYY-MM-DD'), 'Femmes');
INSERT INTO Oeuvre_louvre (titre, dimensions, type, date_crea, auteur, prix_acq, date_acq) VALUES ('Annonciation', '0.98 x 0.217', 'peinture', 1480, 2, 10000, TO_DATE('2001-04-01', 'YYYY-MM-DD'));
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment