Système de Gestion de Base de Données

Synthèse de Révision Complète - XML, DTD, XSD, XPath, XQuery, MongoDB

Bienvenue Cette synthèse interactive couvre l'ensemble du cours SGBD. Naviguez entre les modules, testez vos connaissances avec les quiz interactifs, et utilisez le Cheat Sheet ci-dessous pour une révision de dernière minute.

📚 Modules du Cours

1. Introduction à XML

Structure, syntaxe, règles de bonne formation, entités prédéfinies, namespaces.

Voir le module →
2. DTD (Document Type Definition)

Déclaration d'éléments, attributs, cardinalité, contenu mixte, entités.

Voir le module →
3. XSD (XML Schema)

Types simples/complexes, facettes de restriction, cardinalité minOccurs/maxOccurs.

Voir le module →
4. XPath

Navigation, axes, predicats, fonctions (count, sum, contains...).

Voir le module →
5. XQuery

Expressions FLWOR, construction XML dynamique, jointures.

Voir le module →
6. MongoDB

CRUD, opérateurs de comparaison/logiques, pipeline d'agrégation.

Voir le module →

📋 Cheat Sheet SGBD

Référence rapide pour l'examen. Gardez cette page ouverte !

🚀 Aide-Mémoire de Dernière Minute

DTD - Cardinalité
Exactement 1element
0 ou 1 (optionnel)element?
1 ou pluselement+
0 ou pluselement*
<!ELEMENT livre (titre, auteur+, isbn?)>
DTD - ATTLIST
Texte libreCDATA
ID uniqueID
Référence à IDIDREF
Énumération(a|b|c)
Obligatoire#REQUIRED
Optionnel#IMPLIED
<!ATTLIST livre
id ID #REQUIRED
cat (A|B|C) "A">
DTD - Contenu Mixte
⚠️ Règle: #PCDATA doit être EN PREMIER
<!-- CORRECT -->
<!ELEMENT p (#PCDATA | b | i)*>

<!-- INCORRECT -->
<!ELEMENT p (b | #PCDATA)*>
XSD - Cardinalité vs DTD
element (DTD)défaut (1,1)
element? (DTD)minOccurs="0"
element+ (DTD)minOccurs="1" max="∞"
element* (DTD)min="0" max="∞"
<xs:element name="auteur"
minOccurs="1"
maxOccurs="unbounded"/>
XSD - Facettes de Restriction
Longueur min/maxminLength / maxLength
Valeur min/maxminInclusive / maxInclusive
Expression régulièrepattern
Liste de valeursenumeration
DécimalesfractionDigits
<xs:restriction base="xs:string">
<xs:pattern value="[A-Z]{2}\d{4}"/>
</xs:restriction>
XSD - Types Prédéfinis
Textexs:string
Entierxs:int / xs:integer
Décimalxs:decimal
Booléenxs:boolean
Datexs:date
ID uniquexs:ID / xs:IDREF
XPath - Syntaxe de Base
Enfants directs/
Tous descendants//
Parent..
Attribut@attr
Nœud courant.
Tous éléments*
//livre[@prix > 20]/titre
XPath - Fonctions Clés
Comptercount()
Sommesum()
Positionposition()
Dernierlast()
Contientcontains()
Textetext()
//auteur[count(livre) > 3]
XPath - Axes Avancés
Frères suivantsfollowing-sibling::
Frères précédentspreceding-sibling::
Ancêtresancestor::
Descendantsdescendant::
XQuery - FLWOR
Itérationfor $x in ...
Assignationlet $x := ...
Filtrewhere condition
Triorder by ... (a/desc)
Retourreturn ...
for $b in //book
where $b/@year > 2000
order by $b/title
return $b/title
XQuery - Construction XML
Syntaxe: {expression} évalue le code
<result>
<titre>{data($b/title)}</titre>
<attr val="{$var}"/>
</result>
Extraire textedata($node)
Concaténerconcat(a, b)
Index bouclefor $b at $i
MongoDB - Opérateurs de Comparaison
Égal$eq
Différent$ne
Plus grand (ou égal)$gt / $gte
Plus petit (ou égal)$lt / $lte
Dans liste$in
Pas dans liste$nin
db.col.find({ age: { $gt: 18 } })
MongoDB - Opérateurs Logiques
ET (implicite){ a:1, b:2 }
ET (explicite)$and: [...]
OU$or: [...]
NON$not: {...}
db.col.find({
$or: [
{ age: { $lt: 18 } },
{ status: "senior" }
]
})
MongoDB - CRUD
Insérer 1insertOne({})
Insérer NinsertMany([...])
Lirefind({filter})
Modifier 1updateOne({}, {$set:{}})
Modifier NupdateMany({}, {...})
SupprimerdeleteOne/Many({})
MongoDB - Pipeline Agrégation
Filtrer$match
Grouper$group
Projeter$project
Trier$sort
Limiter$limit
Aplatir tableau$unwind
Ordre: $match → $group → $sort
⚠️ Pièges Fréquents à l'Examen
//livre[1]Premier de CHAQUE parent
(//livre)[1]Premier du DOCUMENT
#PCDATA positionToujours EN PREMIER
ID commence parLettre (pas chiffre)
$match positionDébut de pipeline
XQuery assignation:= (pas =)
Projection MongoDB1=inclure, 0=exclure