Problématique Table User dans mySQL

Comment structurer sa base

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous.

Pour mon projet, l’idée est la suivante : L’utilisateur est obligé de créer un compte afin d’enregistrer sa progression. Tout ce qui est inscrition, connexion et insertion dans la BDD c’est ok.
Par contre c’est la 1ere fois que je fais un site avec connexion obligatoire.
Ma question est : comment structurer ma base afin que chaque utilisateur qui se connecté enregistre bien sa propre progression. J’ai du mal a imaginer. Ma 1ere idée est de mettre sur toutes les autres tables une clé externe avec l’id user.

Qu’en pensez vous?
Merci par avance

Bonjour,

Comment structurer ma base afin que chaque utilisateur qui se connecté enregistre bien sa propre progression.

VeGeTa

Il te suffit d’une table utilisateur reliée avec tes autres tables. Pas obligé de mettre des idUser partout, des fois une table peut dépendre d’une autre uniquement en raison de sa relation ou dans le cas d’une table de liaison. Ensuite pour identifier ton utilisateur, tu peux utiliser une session pour stocker l’ID utilisateur et mettre à jour les bonnes données.

Bonjour Yarflam ! Super merci ! Voici ce que j’ai fait

Capture3.PNG
Capture3.PNG

Il y a peut etre des clés externe en trop? Qu’en penses tu?

voici ma requete mais j’ai une erreur.

$query = $pdo->query('SELECT  * FROM cafeland_dishes INNER JOIN dishes_found ON cafeland_dishes.id_dish = dishes_found.dish_id  ORDER BY dish_name ASC WHERE user_id ='.$_SESSION['auth']->id);

Erreur fatale : dans à la ligne 42

+0 -0

Que dish_id se retrouve dans la table category me semble de trop, c’est bien une catégorie de dishes ?

Après es-tu sûr d’avoir besoin d’une relation entre users et dishes_found ? Est-ce que celle avec celebrities ne suffit pas ? Est-ce que des entrées peuvent être créé indépendamment l’une de l’autre ?

Je ferai quelque chose comme ça pour obtenir une liste unique par utilisateur (bien que je ne sache pas grand chose du contexte d’application de ta requête) :

SELECT *
FROM cafeland_dishes
WHERE id_dish IN (
  SELECT DISTINCT id_dish
  FROM dishes_found
  WHERE user_id = $_SESSION['auth']->id
)
ORDER BY dish_name ASC

Merci Yarflam !

Que dish_id se retrouve dans la table category me semble de trop, c’est bien une catégorie de dishes ?
Il y a en tout 260 plats, donc pour pas afficher tout ça, je les affiche par catégorie (entrée, légumes, desserts etc..). Il y a 8 catégories en tout.

Après es-tu sûr d’avoir besoin d’une relation entre users et dishes_found ? Est-ce que celle avec celebrities ne suffit pas ? Est-ce que des entrées peuvent être créé indépendamment l’une de l’autre ?
La seule table ou je modifie des données est celle la. C’est celle qui lie les célébrités aux plats.
Une célébrité peut avoir jusqu’a 3 plats favoris. Mais les plats ne sont pas réservé qu’a une seule célébrité.

Je vais tester ton code et enlever la clé externe user dans la table celebrity

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte