comment concevoir cette base de données MySQL
-
20-09-2019 - |
Question
il y a 2 millions d'utilisateurs chaque utilisateur dispose de 4 tables. les données de 4 tables ne va pas être joint et resteront fixe.
la structure de chaque table des utilisateurs sera le même.
Pour stocker les données de ces utilisateurs dans une base MySQL, je dois concevoir une base de données.
dois-je créer 2 millions de bases de données chacune avec 4 tables?
toute aide appréciée
les 4 tables sont les
- enregistrements d'appels entrants de l'utilisateur pendant 1 mois
- incming enregistrements sms de l'utilisateur pendant 1 mois
- appels sortants dossiers de l'utilisateur pour 1 mois
- enregistrements sms sortants de l'utilisateur pour 1 mois
les tables appels auront la structure suivante:
Numéro dates, l'heure frais de durée
les sms entrant aura la structure suivante:
numéro de date heure
le sms sortant aura la structure suivante:
frais de numéro de date et heure
La solution
Ceci est un antimodèle SQL que j'appelle Les métadonnées Tribbles. Ils ont l'air mignon et amical, mais bientôt ils se multiplient hors de contrôle.
Dès que vous entendez des phrases commençant par « je une table identique par ... » ou «J'ai une colonne identique par ... » alors vous avez probablement des métadonnées Tribbles.
Vous devriez commencer par faire une base de données avec quatre tables, et ajoutez un attribut user_id
à chacune des quatre tables.
Il y a des cas d'exception où vous voudriez scinder en bases de données séparées par utilisateur, mais ils sont exceptions . Ne pas y aller, sauf si vous savez ce que vous faites et peut prouver qu'il serait nécessaire.
Autres conseils
La plupart des serveurs de base de données (et) les systèmes de fichiers ne traitera pas des cas nécessitant que de nombreuses bases de données distinctes. Je suppose que ce que vous avez réellement besoin sont quatre tables, chacune contenant une ligne pour chaque utilisateur. C'est une exigence tout à fait raisonnable.
Non, vous n'avez pas besoin de 2 millions de bases de données avec 4 tables chacune. Vous avez juste besoin d'une base de données, 4 tables, et l'ID utilisateur unique pour chaque utilisateur.
Quelque chose comme:
users table:
| user_id (primary key) | username |
address table
| user_id (foreign key) | address |
whatever table
| user_id (foreign key) | whatever |
Je me demande pourquoi vous avez besoin de 4 tables par utilisateur? Espérons que vous comprenez les bases de ce que je suis en train de transmettre ici bien.
Vous avez juste besoin d'une table pour les utilisateurs, table1, table2, table3, table4. puis quand vous devez saisir des données pour table1 il suffit d'inclure le users_id à table1
TABLE 1 USERS
ID usersID amount quantity ID Name
1 1 200 2 1 John
2 1 400 3
Vous pouvez vous connecter en utilisant ensuite INNER JOIN par son table1.usersID = users.ID Tout table doit avoir UserSid (attendre table des utilisateurs qui a ID) pour les connecter
Je espère que vous obtenez le point
Non, vous n'avez pas besoin de 2 millions de bases de données!
Vous avez besoin en fait 2 millions de cas pour 4 tables.
Bien sûr, vous devez concevoir une base de données relationnelle telle que chaque table a un attribut relationnel pour d'autres tables.