Est-ce une bonne modelisation de table?

Mammouth du PHP | 1511 Messages

22 févr. 2006, 20:03

Faut iil donc que je fasse juste une liaison entre id_membre et news_auth_id?
Je ne vois pas en quoi ca va me permettre de recuperer le pseudo qui correspond a l'id...
@+

Mammouth du PHP | 19672 Messages

22 févr. 2006, 20:42

Tu pose mal la question : tu dois établir une relation entre membre et news. Une, pas deux. Tu n'as pas besoin de deux fois la même clé étrangère dans une table. Regarde bien ton modèle.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

22 févr. 2006, 21:28

Et après comment ferais-je pour recuperer le pseudo du membre en ayant juste l'id de stockée dans ma table news?
@+

Mammouth du PHP | 19672 Messages

22 févr. 2006, 21:35

Non, tu ne saisis pas.

Tu as besoin d'avoir la clé primaire dans la table des membres et cette même valeur en clé étrangère dans la table news. Mais la clé étrangère n'a pas besoin d'être présente deux fois dans la table news.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

23 févr. 2006, 08:26

Et pour finir, est ce que je dois mettre un champ news_auth dans ma table news?
@+

Mammouth du PHP | 19672 Messages

23 févr. 2006, 10:48

Dans la mesure où tu as en clé étrangère la clé primaire de ta table membre, je dirais non puisque tu peux retrouver l'auteur en faisant une jointure des deux tables avec cette clé : elle sert à ça.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

24 févr. 2006, 09:00

Image
Donc, en faisant sur la table montrée ci dessus
<?php
$req_news = mysql_query(SELECT vagao_members_member_id, nickname, news_id, news_content, news_title FROM vagao_news WHERE news_id = `1`)
?>
Cela me selectionnera t'il le pseudo du membre dont l'id correspond a l'id contenue dans vagao_members_member_id ou est ce que je dis une connerie une fois de plus?
@+

Mammouth du PHP | 19672 Messages

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 ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 1511 Messages

24 févr. 2006, 14:29

Ah ok, je comprends mieux, je suis un peu long a la détente sur ce coup la car je ne connaissais pas les liaisons! :oops:
Ca fait rien, maintenant j'ai saisi le principe et je vais l'appliquer du mieux que je le peux!
@+