как спроектировать эту базу данных MySQL - PullRequest
3 голосов
/ 18 ноября 2009

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

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

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

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

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

4 таблицы являются

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

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

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

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

номер даты и времени

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

дата и время количество сборов

Ответы [ 6 ]

9 голосов
/ 18 ноября 2009

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

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

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

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

4 голосов
/ 18 ноября 2009

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

3 голосов
/ 18 ноября 2009

Нет, вам не нужно 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 таблицы на пользователя? Надеюсь, вы понимаете основы того, что я пытаюсь здесь передать.

1 голос
/ 18 ноября 2009

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

telecom_model_01

0 голосов
/ 18 ноября 2009

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

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

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

0 голосов
/ 18 ноября 2009

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

TABLE 1                              USERS

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

Вы можете подключиться, используя INNER JOIN, по его table1.usersID = users.ID Все таблицы должны иметь userID (ожидаемую таблицу пользователей с идентификатором), чтобы соединить их

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...