Il faut trouver le modèle qui correspond au mieux pour représenter une situation.
Dans d'autres termes, quelle est la structure de données la plus appropriée pour modéliser un problème?
Plusieurs modèles de base de données existent, on peut voir les SGBDs les plus connus et les modèles qu'ils utilisent ici
Nous allons voir plusieurs modèles différents pour comparer, mais dans le cadre de ce cours nous en étudierons qu'un seul en profondeur
Dans ce modèle, la base de donnée est un ensemble de nœuds étiquetés.
Les noeuds sont reliés par des graphes qui sont eux aussi étiquetés.
Exemple de graphe pour une base de données d'entreprise de location
Avec ce type de base de données, on va plutôt rechercher à mettre en évidence des liens entre les noeuds, des distances entre les élements...
Pour plus d'informations sur les bases de données en graphe, vous pouvez lire la documentation disponible ici
Si vous décidez de faire une maitrise à l'uqac, le cours Bases de données réparties 8INF803 propose une très bonne introduction à ce type de bases de données.
La BD est un ensemble de noeuds, chacun pouvant contenir plusieurs attributs.
Les noeuds sont structurés sous la forme d'un arbre.
Le format de fichier xml est un arbre!
Ce modèle représente les données sous forme d'un ensemble de clés associés à des valeurs
le cours 8INF803 présente en détail ce modèle
Exemple de données stockées sous la forme de clé/valeurs
Classement actuel des modèles les plus utilisés

inventées dans les années 1970 pour :
Garder une indépendance des données, càd que les programmes ne doivent pas être affectés par un changement de la structure du stockage des données.
gérer les problèmes d'intégrité et de redondance et de cohérence.
Le modèle relationnel est basé sur le concept mathématique de relations.
Pour mieux le visualiser, on le représente souvent par un tableau. Cependant il n'est pas forcément représenté comme ça informatiquement.
Relation : Une table contenant des lignes et des colonnes
Attribut : Le nom d'une colonne de relation. L'ordre des attributs n'a pas d'importance.
Domaine :L'ensemble des valeurs permises pour un attribut (Entier, String, Float...)
Tuple : Une ligne d'une relation (aussi appelé occurrence)
Exemple d'une relation avec ses attributs et quelques occurrences
Les bases de données relationnelles apportent le principe de clé, il en existe plusieurs types :
Les superclés :Attribut ou ensemble d'attributs qui identifient uniquement un tuple dans une relation.
Les clés candidates : Superclé "minimale": aucun sous-ensemble d'une clé candidate n'est une superclé
Les clés primaires : La clé candidate choisie pour identifier les tuples dans une relation
Les clés étrangères : Attribut ou ensemble d'attributs d'une relation correspondant à la clé primaire d'une autre relation
On représente le schéma d'une relation comme suit :
Nom (attribut1, attribut2, attribut3, ...)
On souligne toujours les attributs de la clé primaire.
produit(NumProduit,nom, prix...)
magasin(NumMagasin,nom, adresse...)
vente(numProduit,numMagasin, Date)
Pour que le contenu d'une BD ait un sens, les attributs ne peuvent pas prendre des valeurs n'importe comment. En général, des conditions (ou contraintes) s'appliquent.
On a déjà vu que chaque attribut est associé à un domaine. Les valeurs possibles sont donc limitées à celles-là: ce sont les contraintes de domaine.
Par exemple on ne peut pas écrire de date dans un attribut de type nombre
Contrainte d'intégrité d'entité Dans une relation, aucun attribut de la clé primaire ne peut être nul.
Contrainte d'intégrité référentielle Si une relation contient une clé étrangère, sa valeur doit correspondre à celle d'un tuple de la relation qui définit cette clé; sinon, elle doit être nulle.
Contraintes de multiplicité Détermine combien de tuples peuvent être mis en relation (on les étudiera plus tard).
Contraintes générales N'importe quelle autre contrainte appropriée pour la situation. Ex.:
La valeur null est utilisée pour définir un attribut qui ne s'applique pas ou qui est inconnu pour une occurence.
Attention !!! null != 0 != ""
Une vue est une relation qui a été crée en utilisant plusieurs valeurs provenant de relations de bases.
Les vue n'existent pas forcément dans la base de données, et elles peuvent être créées sur demande.