мне нужно несколько таблиц или один? - PullRequest
0 голосов
/ 21 декабря 2010

Я разработал инструмент, который может заполнить более миллиона данных.

В настоящее время я разработал одну таблицу с 36 столбцами.у меня вопрос: нужно ли мне делить их на несколько таблиц или на одну ??* и какой движок будет использовать для скорости ...

меня беспокоит большая база данных, которая будет иметь по крайней мере 50000 запросов в день.

Ответы [ 6 ]

4 голосов
/ 21 декабря 2010

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

Нормализация включает в себя разбиение базы данных на таблицы и помогает:

  1. Избегайте модификации аномалий.
  2. Минимизировать влияние изменений в структуре данных.
  3. Сделать модель данных более информативной.

В Wikipedia .

имеется много информации о нормализации.

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

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

1 голос
/ 21 декабря 2010

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

0 голосов
/ 21 декабря 2010

Корреляция не подразумевает причинно-следственную связь.

То, что shitloads столбцов обычно указывают на плохой дизайн, не означает, что shitload столбцов является плохимdesign.

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

0 голосов
/ 21 декабря 2010

Вам следует смоделировать базу данных в соответствии с данными, которые вы хотите сохранить.Это называется «нормализацией»: по сути, каждый фрагмент информации должен храниться только один раз, в противном случае ячейка таблицы должна указывать на другую строку или таблицу, содержащую значение.Если, например, у вас есть таблица, содержащая номера телефонов, и один столбец содержит код города, скорее всего, в одном столбце будет более одного номера телефона с одинаковым значением.Как только это произойдет, вам следует создать новую таблицу для кодов городов и связать ее с записями, указав первичный ключ строки, в которой хранится нужный код города.

Таким образом, вместо

id | area code | number 
---+-----------+---------
1  | 510       | 555-1234
2  | 510       | 555-1235
3  | 215       | 555-1236
4  | 215       | 555-1237

у вас будет

id | area code    id | number   | area code
---+----------    ---+----------+-----------
1  | 510          1  | 555-1234 | 1
2  | 215          2  | 555-1235 | 1
                  3  | 555-1236 | 2
                  4  | 555-1237 | 2

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

Попробуйте это учебное пособие .

0 голосов
/ 21 декабря 2010

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

Создайте базу данных так, чтобы она наилучшим образом соответствовала данным (как видно из вашего приложения), смонтируйте их и оптимизируйте позже.Вы, вероятно, обнаружите, что производительность не является проблемой.

0 голосов
/ 21 декабря 2010

Это зависит!

Содержит ли эта таблица одну «сущность»? все атрибуты 36 столбцов - это одна вещь, или есть несколько «вещей», смешанных вместе?

Если смешано, то вы должны нормализовать (разделить на отдельные объекты с отношениями между ними). Вы должны стремиться как минимум к Третьей нормальной форме (3NF).

Лучшая практика - нормализовать как можно больше; если позже вы обнаружите проблему с производительностью, то денормализуйте как можно меньше.

...