Вопрос

всего 2 миллиона пользователей у каждого пользователя есть 4 таблицы.данные в 4 таблицах не будут добавлены и останутся исправленными.

структура таблиц каждого пользователя будет одинаковой.

Чтобы хранить данные этих пользователей в mysql, я должен спроектировать базу данных.

нужно ли мне создать 2 миллиона баз данных , каждая из которых содержит 4 таблицы?

любая помощь приветствуется

эти 4 таблицы - это

  1. записи о входящих звонках пользователя за 1 месяц
  2. учет sms-сообщений пользователя в течение 1 месяца
  3. записи исходящих звонков пользователя за 1 месяц
  4. записи исходящих sms-сообщений пользователя за 1 месяц

таблицы вызовов будут иметь следующую структуру

плата за дату время номер продолжительность

входящее sms-сообщение будет иметь следующую структуру

дата время номер

исходящее sms-сообщение будет иметь следующую структуру

плата за дату время номер

Это было полезно?

Решение

Это SQL-антипаттерн, который я вызываю Трибблы метаданных. Они выглядят милыми и дружелюбными, но вскоре их размножение выходит из-под контроля.

Как только вы слышите фразы, начинающиеся "У меня есть идентичная таблица для ..." или "У меня есть идентичный столбец для ...", то у вас, вероятно, есть трибблы метаданных.

Вам следует начать с создания одной базы данных с четырьмя таблицами и добавить user_id атрибут для каждой из четырех таблиц.

Существуют исключительные случаи, когда вы хотели бы разделить базы данных на отдельные для каждого пользователя, но они исключения.Не ходите туда, если вы не знаете, что делаете, и не можете доказать, что это было бы необходимо.

Другие советы

Большинство серверов баз данных (и файловых систем) не будут обрабатывать экземпляры, требующие такого количества отдельных баз данных.Я предполагаю, что на самом деле вам нужны четыре таблицы, каждая из которых содержит строку для каждого пользователя.Это абсолютно разумное требование.

Нет, вам не нужны 2 миллиона баз данных по 4 таблицы в каждой.Вам просто нужна 1 база данных, 4 таблицы и уникальный идентификатор пользователя для каждого пользователя.

Что -то вроде:

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

address table
| user_id (foreign key) | address  |

whatever table
| user_id (foreign key) | whatever |

Я должен задаться вопросом, зачем вам нужно 4 таблицы на пользователя?Надеюсь, вы понимаете основы того, что я пытаюсь здесь донести.

Рассмотрим этот пример, заимствованный из хранилища данных, - это обычная звезда Кимбалла.Очень упрощенная модель, но эти четыре таблицы охватывают описанные вами потребности и многое другое.

telecom_model_01

Вам просто нужна таблица для пользователей, table1, table2, table3, table4.затем, когда вам нужно будет ввести данные в table1, просто укажите users_id в table1

TABLE 1                              USERS

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

Затем вы можете подключиться, используя ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ по его table1.usersID=users.ID Все таблицы должны иметь usersID (ожидайте, что таблица users будет иметь ID), чтобы соединить их

Надеюсь, вы уловили суть

Нет, вам не нужны 2 миллиона баз данных!

На самом деле вам нужно 2 миллиона экземпляров для 4 таблиц.

Конечно, вы должны спроектировать реляционную базу данных таким образом, чтобы каждая таблица имела реляционный атрибут для других таблиц.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top