Domanda

Ci sono 2 milioni di utenti che ogni utente ha 4 tabelle.i dati nelle 4 tabelle non verranno aggiunti e rimarranno fissi.

la struttura delle tabelle di ciascun utente sarà la stessa.

Per memorizzare i dati di questi utenti in mysql devo progettare un database.

devo creare 2 milioni di database ciascuno con 4 tabelle?

qualsiasi aiuto apprezzato

le 4 tabelle sono le

  1. record delle chiamate in entrata dell'utente per 1 mese
  2. record di SMS in entrata dell'utente per 1 mese
  3. record delle chiamate in uscita dell'utente per 1 mese
  4. record degli sms in uscita dell'utente per 1 mese

le tabelle delle chiamate avranno la seguente struttura

data ora numero durata addebiti

gli sms in arrivo avranno la seguente struttura

numero data/ora

gli sms in uscita avranno la seguente struttura

addebiti per data e ora

È stato utile?

Soluzione

Questo è un antipattern SQL che chiamo Triboli di metadati. Sembrano carini e amichevoli, ma presto si moltiplicano senza controllo.

Non appena senti frasi che iniziano con "Ho una tabella identica per..." o "Ho una colonna identica per...", probabilmente hai Metadata Tribbles.

Dovresti iniziare creando un database con quattro tabelle e aggiungere a user_id attribuire a ciascuna delle quattro tabelle.

Esistono casi eccezionali in cui vorresti dividere in database separati per utente, ma lo sono eccezioni.Non andarci se non sai cosa stai facendo e puoi dimostrare che sarebbe necessario.

Altri suggerimenti

La maggior parte dei server di database (e filesystem) non gestirà le istanze che richiedono così tanti database separati.Immagino che ciò di cui hai effettivamente bisogno siano quattro tabelle, ciascuna contenente una riga per ciascun utente.Questo è un requisito assolutamente ragionevole.

No, non ti servono 2 milioni di database con 4 tabelle ciascuno.Hai solo bisogno di 1 database, 4 tabelle e un ID utente univoco per ciascun utente.

Qualcosa di simile a:

users table:
| user_id (primary key) | username |

address table
| user_id (foreign key) | address  |

whatever table
| user_id (foreign key) | whatever |

Devo chiedermi perché hai bisogno di 4 tabelle per utente?Spero che tu capisca le basi di ciò che sto cercando di trasmettere qui.

Considera questo esempio, preso in prestito dal data warehousing, è una semplice stella di Kimball.Modello molto semplificato, ma queste quattro tabelle coprono le esigenze descritte e altro ancora.

telecom_model_01

Hai solo bisogno di una tabella per gli utenti, table1, table2, table3, table4.quindi, quando devi inserire i dati nella tabella1, includi semplicemente lo users_id nella tabella1

TABLE 1                              USERS

ID   usersID     amount   quantity   ID   Name
1       1           200      2        1   John
2       1           400      3      

È possibile connetterti quindi utilizzando il join interno dalla sua tabella1.usersid = utenti.id tutta la tabella deve avere utenti ID (aspettatevi che la tabella degli utenti che abbia ID) per collegarli

Spero che tu abbia capito il punto

No, non ti servono 2 milioni di database!

In realtà hai bisogno di 2 milioni di istanze per 4 tabelle.

Naturalmente, dovresti progettare un database relazionale in modo tale che ogni tabella abbia un attributo relazionale per le altre tabelle.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top