Допустим, у вас есть база данных с одной таблицей, например ...
---------------------------------------------
| Name | FavoriteFood |
---------------------------------------------
| Alice | Pizza |
| Mark | Sushi |
| Jack | Pizza |
---------------------------------------------
Было бы более экономно использовать дополнительную таблицу под названием «Strings», в которой хранятся строки, и изменить столбец FavoriteFood на индекс в таблице строк. В приведенном выше примере «Пицца» выглядит так, как будто она хранится дважды, но с дополнительной таблицей она будет сохраняться только один раз. Конечно, предположим, что есть только 1 000 000 строк и 1 000 уникальных строк вместо 3 строк и 2 уникальных строк.
Редактировать: Мы не знаем заранее, что такое FavoriteFoods: они предоставляются пользователем. Программный интерфейс к таблице строк будет выглядеть примерно так ...
String GetString(int ID) { return String at with Row-ID == ID }
int GetID(String s) {
if s exists, return row-id;
else {
Create new row;
return new row id;
}
}
Таким образом, таблица строк выглядит более эффективной, но современные базы данных уже делают это в фоновом режиме, поэтому я могу просто использовать простой подход к одной таблице и быть эффективным?