Je fabrique donc un site Web qui permet aux utilisateurs de créer des listes de contacts. Donc, ils sont des utilisateurs, les utilisateurs ont des listes, et les listes ont des contacts. Il me semble que j'ai besoin de 3 tables pour ça mais je veux juste m'en assurer.Est-ce la bonne façon d'organiser mes tables de base de données?
Il y aurait bien sûr une table User, puis une table "List of Lists" contenant le nom d'utilisateur, et listname, comme clé primaire avec toutes les autres informations que nous voulons joindre à l'ensemble des listes. Enfin, faute d'un meilleur mot, la table List qui aurait à nouveau le nom d'utilisateur/nom de la liste p.k., puis l'ID du contact et les notes et tel que l'utilisateur attache à ce contact sur cette liste spécifique.
J'espère que c'est une explication claire. Pour une raison quelconque, je ne suis pas sûr de cet arrangement. D'une part, si le site devient populaire, la liste peut gonfler en milliards de lignes. Et il se sent aussi un peu bizarre que les infos de la liste de tout le monde soient toutes mélangées dans la même table. Je suppose que je pourrais créer des tables séparées pour chaque utilisateur et même pour chaque liste mais cela semble être une mauvaise idée pour d'autres raisons.
Mon explication db suppose que je peux utiliser des clés étrangères sur mes tables qui actuellement ne sont pas une option. Si je ne peux pas activer les tables InnoDB, j'utiliserai probablement des ID pour les listes au lieu de dépendre d'une clé composée. Peut-être que je devrais le faire de toute façon?
Pourquoi avez-vous prenom, last_name dans la table de contact et ... est-ce pas redondant? – mpen
J'ai supposé qu'un contact a un prénom et un nom. Ou sont les contacts d'autres utilisateurs dans le système? Ensuite, la table Contact ne doit pas avoir First_Name, Last_Name ou Phone, mais un champ nommé Contact_User_ID (juste pour ne pas le confondre avec le User_ID de la personne pour laquelle il est le contact). Notes et d'autres choses iraient dans la table de contact, mais toutes les méta-données de personne (il a déjà First_Name, Last_Name, mais vous ajouteriez par exemple téléphone, adresse etc) iraient dans la table utilisateur. –
Merci pour le diagramme complet. Une chose que j'aurais dû mieux expliquer est que les listes de contacts sont construites et référenceraient une table de contacts existante. Pas de choses que les utilisateurs composent et pas d'autres utilisateurs dans la table Utilisateur. – Moss