2013-11-15 5 views
0

В настоящее время я работаю над webapp, который сильно зависит от количества данных из базы данных. Рассмотрим следующий случай.Mysql создает множество таблиц или меньше таблиц, что лучше?

A) дизайн таблицы с предопределенными таблицами только

1)table vehicle_type 
------------------ 
id|name 
------------------ 
1 |car 
2 |truck 
3 |bike 
------------------- 
2)table users 
------------------- 
id|name 
------------------- 
1 |James 
2 |John 
3 |Stefen 
------------------- 
3)table ownership 
-------------------------------- 
id|vehicle_type_id|user_id|count 
-------------------------------- 
1 | 1    |1  |30 
2 | 1    |3  |20 
3 | 3    |2  |13 
-------------------------------- 

B) дизайн Таблицы с динамически создавать таблицы с помощью приложения логики, то есть, когда новая запись идет в vehicle_type мы создаем новую таблицу с этим имя

1)table vehicle_type 
------------------ 
id|name 
------------------ 
1 |car 
2 |truck 
3 |bike 
------------------- 
2)table users 
------------------- 
id|name 
------------------- 
1 |James 
2 |John 
------------------- 
3)dynamic_table car 
------------------- 
id|user_id|count 
------------------- 
1 |1  |20 
2 |2  |10 
------------------- 
3)dynamic_table truck 
------------------- 
id|user_id|count 
------------------- 
1 |3  |15 
2 |2  |20 
3 |1  |12 
------------------- 
4)dynamic_table bike 
------------------- 
id|user_id|count 
------------------- 
1 |1  |4 
2 |2  |12 
------------------- 

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

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

Просьба предложить достоинства и недостатки каждого метода.

Спасибо

+0

Что такое «динамический» стол? –

+0

IMHO, динамические таблицы не являются хорошей идеей для любых типов постоянных данных. Они используют временные данные, для которых вам не нужна долгосрочная жизнеспособность. В вашем случае я бы определил «большой набор данных». Mysql обрабатывает миллионы строк просто отлично на этом типе данных с правильной индексацией. –

+0

@ypercube Я просто ссылаюсь на таблицы, созданные с использованием логики приложения, когда они нам понадобятся. –

ответ

0

Не знаете, что такое динамический стол. Не существует единого правильного ответа на вопрос «что лучше». Так что это зависит от проекта. Вот несколько возможных мнений.

Первый подход (одна таблица):

За:

  • Меньше кода/времени/усилие, чтобы начать;
  • Легче поддерживать (возможно, не так);
  • Запросы могут обрабатывать весь набор данных;
  • По мере роста набора данных вы можете применить table partitioning для решения проблем производительности;

Минусы:

  • набор данных будет расти быстрее;
  • Менее проворный (e.g есть некоторые дополнительные свойства владения для конкретного типа транспортного средства);

Второй подход: несколько таблиц

Плюсы:

  • Может быть более гибкой;
  • Возможно немного лучше;

Минусы:

  • Больше кода/времени/усилий, чтобы начать;
  • Сложнее поддерживать (может быть, ложь);

В качестве общей рекомендации рассмотрите шаблоны доступа к данным. Это должно помочь вам понять.

  • Какие вопросы вы собираетесь использовать?
  • Какие из них будут выполняться чаще?
  • Будут ли больше операций чтения или записи?
  • Какие данные вы собираетесь распространять?
Смежные вопросы