par
Cyrano » 24 févr. 2006, 11:11
Je vais essayer de t'expliquer sur la base d'un exemple simple, à toi d'adapter par la suite.
Imaginons un système de nouvelles basique. Nous identifions deux entités: les nouvelles d'une part, les auteurs de l'autre. Chacune de ces entités a ses propres propriétés :
- Les nouvelles
- Identifiant
- date et heure de publication
- titre
- texte
- Les auteurs
- identifiant
- nom
- prenom
- pseudonyme
Sur la base de ce schéma, nous pouvons établir une relation : un auteur peut publier 0 à n nouvelle(s)
Une nouvelle appartient à un auteur et un seul
Nous aurons donc logiquement à ajouter dans les nouvelles l'identifiant de l'auteur pour retrouver celui-ci et en afficher les informations lorsque nous afficherons une nouvelle.
Ceci va donner le schéma suivant :
Code : Tout sélectionner
+-------------+ +-----------------+
| nouvelles | | auteurs |
+-------------+ 1:1 /¯¯¯¯¯¯¯¯¯¯¯¯¯¯\ 0:n +-----------------+
|identifiant |-----------------------------------|identifiant |
|date_heure | \______________/ |nom |
|titre | |prenom |
|texte | |pseudonyme |
+-------------+ +-----------------+
Ça, c'est ce qu'on appelle le modèle conceptuel de données : pour l'instant, on inscrit pas de clés étrangères, ce ne sont pas encore des tables et des champs mais des entités et des propriétés.
Lorsque nous allons passer au modèle physique, nous allons retrouver les éléments permettant les relations entre nos deux entités:
Code : Tout sélectionner
+-------------------------+ +----------------------------+
| nouvelles | | auteurs +
+-----------+---------+---+ +---------------+--------+---+
|nouv_id |INT |PK | |aut_id |INT |PK |
|aut_id |INT |FK |<----------------|aut_nom |VA(64) | |
|nouv_date |DATETIME | | |aut_prenom |VA(64) | |
|nouv_titre |VA(255) | | |aut_pseudo |VA(32) | |
|nouv_texte |TEXT | | +---------------+--------+---+
+-----------+---------+---+
Maintenant nous avons nos deux tables avec une clé étrangère (FK) dans la table des nouvelles.
Pour extraire une nouvelle en ayant également les informations sur son auteur, nous aurons une requête comme ceci:
Code : Tout sélectionner
SELECT nouv_titre, nouv_texte, nouv_date, aut_pseudo
FROM nouvelles, auteurs
WHERE auteurs.aut_id = nouvelles.aut_id
AND nouv_id = 1
Est-ce que tu saisis mieux le principe général ?
Je vais essayer de t'expliquer sur la base d'un exemple simple, à toi d'adapter par la suite.
Imaginons un système de nouvelles basique. Nous identifions deux entités: les nouvelles d'une part, les auteurs de l'autre. Chacune de ces entités a ses propres propriétés :
[list]
[*]Les nouvelles
[list]
[*]Identifiant
[*]date et heure de publication
[*]titre
[*]texte[/list]
[*]Les auteurs
[list]
[*]identifiant
[*]nom
[*]prenom
[*]pseudonyme[/list][/list]
Sur la base de ce schéma, nous pouvons établir une relation : un auteur peut publier 0 à n nouvelle(s)
Une nouvelle appartient à un auteur et un seul
Nous aurons donc logiquement à ajouter dans les nouvelles l'identifiant de l'auteur pour retrouver celui-ci et en afficher les informations lorsque nous afficherons une nouvelle.
Ceci va donner le schéma suivant :
[code]+-------------+ +-----------------+
| nouvelles | | auteurs |
+-------------+ 1:1 /¯¯¯¯¯¯¯¯¯¯¯¯¯¯\ 0:n +-----------------+
|identifiant |-----------------------------------|identifiant |
|date_heure | \______________/ |nom |
|titre | |prenom |
|texte | |pseudonyme |
+-------------+ +-----------------+[/code]
Ça, c'est ce qu'on appelle le modèle conceptuel de données : pour l'instant, on inscrit pas de clés étrangères, ce ne sont pas encore des tables et des champs mais des entités et des propriétés.
Lorsque nous allons passer au modèle physique, nous allons retrouver les éléments permettant les relations entre nos deux entités:
[code]+-------------------------+ +----------------------------+
| nouvelles | | auteurs +
+-----------+---------+---+ +---------------+--------+---+
|nouv_id |INT |PK | |aut_id |INT |PK |
|aut_id |INT |FK |<----------------|aut_nom |VA(64) | |
|nouv_date |DATETIME | | |aut_prenom |VA(64) | |
|nouv_titre |VA(255) | | |aut_pseudo |VA(32) | |
|nouv_texte |TEXT | | +---------------+--------+---+
+-----------+---------+---+[/code]
Maintenant nous avons nos deux tables avec une clé étrangère (FK) dans la table des nouvelles.
Pour extraire une nouvelle en ayant également les informations sur son auteur, nous aurons une requête comme ceci:
[code]SELECT nouv_titre, nouv_texte, nouv_date, aut_pseudo
FROM nouvelles, auteurs
WHERE auteurs.aut_id = nouvelles.aut_id
AND nouv_id = 1[/code]
Est-ce que tu saisis mieux le principe général ?