J'ai un petit problème que j'ai résolu. Supposant que la partie conception est correcte ... j'aimerai avoir votre avis sur 7 requêtes SQL dont certaines sont réalisées avec deux solutions différentes, enfin vous pouvez me dire svp par exemple si :
- "ça va !! "
ou
- " Ça ne va pas du tout !! "
ou
- "On n'est pas sure ... "

Et si vous aimeriez bien un amélioration serait toujours la bienvenue.

Voila en quoi consiste :

Produire le diagramme relationnel d’une ville de Shadocks. Tous les Shadocks vivent dans des nids.

Tous les nids sont posés sur une branche nommée (comportant elle même des branches) d'un même arbre. Les Shadocks étant loufoques, les nids peuvent avoir une infinité de caractéristiques qui peuvent avoir une infinité de valeurs.
Par exemple:
-*‐ forme: ronde, carrée, hexagonale …
-*‐ couleur: rouge, vert, …
-*‐ attributs: une ou plusieurs fenêtres, portes, toits,ailes...
-*‐ etc… Dans chaque nid peuvent vivre plusieurs Shadocks.

Il existe une règle qui stipule que pour qu'un Shadock puisse sortir vivre dans un autre nid, il faut que tous les Shadocks qui ont emménagé après lui dans le nid actuel, soient partis vivre dans un autre nid. C'est la politesse Shadockienne.

Le diagramme MLD (après être passer par MCD sous WinDesign, je ne prends pas en compte l'association réflexive entre l'entité branche et elle même) est:
Nom : Nouvelle image bitmap.jpg
Affichages : 152
Taille : 25,9 Ko

Voici les requêtes avec les solutions que je propose:

--Liste de tous les nids posés sur l’arbre.
-*‐ Liste des nids qui ont plus de 5 Shadocks.

SOLUTION 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
          SELECT IDNID FROM NID 
            WHERE 
         (SELECT COUNT(IDSHADOCK) FROM SHADOCK GROUP BY IDNID ) >5;
SOLUTION 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
            SELECT IDNID FROM NID NATURAL JOIN (SELECT IDSHADOCK 
                                                                                   FROM SHADOCK
                                                                                    GROUP BY IDSHADOK
                                                                                     HAVING COUNT(*) >=6)
-*‐ Liste de tous les Shadocks qui peuvent emménager dans un autre nid.

SOLUTION 1
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
             SELECT IDSHADOCK FROM  VIVRE
             WHERE 
             (SELECT DATEAMENAGMENT FROM VIVRE) 
            IN
             (SELECT MAX(DATEAMENAGMENT) FROM VIVRE GROUP BY IDNID);
SOLUTION 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
            SELECT IDSHADOCK  FROM SHADOCK
             NATURAL JOIN 
             (SELECT IDSHADOCK 
               FROM VIVRE 
               ORDER BY DATEAMENAGEMENT DESC
            LIMIT 1 );
-*‐ Liste des nids qui sont en forme de casserole mais pas rouge.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT IDNID 
   FROM NID 
   WHERE FORMENID LIKE  ”CASSEROLE”
   AND COULEURNID != “ROUGE”;
-*‐ Liste des branches qui supportent d’autres branches et la liste des branches qui ne supportent pas de branche.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT IDBRANCHE FROM BRANCHE B1 
                                        OUTER JOIN BRANCHE B2
                                        ON B1.IDBRANCHE=B2.IDBRANCHE;
-*‐ Liste des nid que supporte la branche “GaBuZoMe”.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
SELECT IDNID FROM NID
                            JOIN BRANCHE ON NID.IDBRANCHE=BRANCHE.IDBRANCHE
WHERE NOMBRANCHE LIKE “GaBuZoMe”;

-*‐La liste des nids qui ont toutes les caractéristiques possibles
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
SELECT IDNID FROM NID WHERE FORMENID IS NOT NULL
 
                                                AND COULEURNID IS NOT NULL
 
                                                AND COMPLEMENTNID IS NOT NULL;
ou bien :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
SELECT IDNID FROM NID WHERE (FORMENID ,COULEURNID,COMPLEMENTNID)
                                                              IS NOT NULL;
Je tiens à vous remercier pour votre lecture, en attendant votre avis, je vous souhaite tous un agréable weekend .