Administrateur PHPfrance |
3088 Messages
05 mars 2008, 23:43
Il n'y a pas de mots pour dire à quel point j'appuie l'utilisation
systématique des préfixes. Pour toutes les raisons invoquées par l'ami
Cyrano et plus encore. Les jointures naturelles en sont une, mais même les jointures explicites sont simplifiées
Code : Tout sélectionner
-- Récupérer la liste des groupes auxquels appartient un utilisateur
SELECT u.user_id, g.group_id, g.group_title
FROM users u
JOIN users_groups ug USING (user_id)
JOIN groups g USING (group_id)
WHERE u.username = 'joe'
La relation entre les table est évidente :
user_id appartient à la table
users (le nom de la table est au pluriel car elle contient plusieurs "user") et si je te dis que ma table
users_groups contient 2 champs : user_id et group_id, je suis sûr que tu vas deviner ce qu'elle fait.
Comme ça a été dit plus haut, tu n'auras pas à t'embêter avec des aliases à rallonge comme "g.id AS group_id, u.id AS user_id". D'ailleurs, la nécessité même d'utiliser un alias prouve que le nom de la colonne ne convient pas. Un peu comme si tes parents t'avait donné le même prénom que ton grand frère, alors quand il est à la maison en même temps que toi ils t'appellent Marcel. On voit régulièrement dans ce même forum des requêtes incompréhensibles parce que plusieurs colonnes portent le même nom, ou un même donnée est stockée dans des colonnes de noms différents.
Pour ta seconde question, en ce qui me concerne ça dépend des jours. Selon l'humeur et la taille de la base, j'appellerais cette table "newsletters_users" (plusieurs newsletters liant plusieurs users) en ajoutant peut-être un préfixe pour indiquer que c'est une , comme "rel_newsletters_users". La table aurait pour clé primaire (newsletter_id, user_id). Je n'ai pas trouvé de règles pour définir dans quel ordre mettre les colonnes dans la
table comme dans le
nom de la table mais tant que possible je fais en sorte que ce soit le même partout. Contrairement à
zeus, je considère ces règles comme étant une méthode, plus qu'une simple histoire de préférences personnelles.
De plus, je mets en garde contre l'utilisation de franglais dans une base de données. liste/gens ou newsletter/users, choisis ton camps camarade
