Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как лучше организовать хранение данных в таблицах?

244
11 января 2007 года
UAS
2.0K / / 19.07.2006
Здравствуйте.

MySQL:
 
Код:
Таблица users(
id
name
email
registered
max_score
);

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

а теперь есть ещё таблица
 
Код:
Таблица scores(
id //id из users.id
score
);

данные в этой таблице будут менятся где-то раз в 3 дня.

Так вот, я не знаю. Кто-то гворит что лучше держать 2 таблицы (как здесь), а кто-то говорит, что можно их объединить (т.е. доавить поле scores.score в users как users.score).

Можете ли вы сказать как оптимальней, и почему, если не трудно??
1.9K
11 января 2007 года
InterWen
331 / / 16.09.2006
Раз в 3 дня ИМХО не так часто, чтобы отделять эту единственную колонку.
Вот если бы это был счетчик "сколько людей прочли" для информационной единицы (напр. новости), на мега-посещаемом (пусть и в перспективе) сайте, то да, несомненно отделение необходимо, а так, делай по своему усмотрению, если тебелишняя таблица не мешает в БД, создавай :)
337
11 января 2007 года
shine
719 / / 09.06.2006
UAS, по большому счету при такой нагрузке на таблицы, как ты описал не имеет значения каким из этих способов ты их организуешь. Оба варианта которые ты описал вполне нормальные и могут хорошо работать.
244
11 января 2007 года
UAS
2.0K / / 19.07.2006
просто в проекте задумывается так, что единоразово раз в 3 дня будет обновляться таблица scores. в перспективе записей в таблице может перевалить за 3000-4000 человек(записей). вот я и думаю, может вынести в отдельную таблицу, или никакой разницы какую таблицу обрабатывать...

Цитата:
Вот если бы это был счетчик "сколько людей прочли" для информационной единицы (напр. новости), на мега-посещаемом (пусть и в перспективе) сайте, то да, несомненно отделение необходимо


Гы!)) А можно объяснить почему, если не трудно

ЗЫ: просто впервые делаю какой-то загружаемый скрипт, опыта в разработке сильно посещаемых систем почти ноль

1.9K
11 января 2007 года
InterWen
331 / / 16.09.2006
Цитата: UAS
просто в проекте задумывается так, что единоразово раз в 3 дня будет обновляться таблица scores. в перспективе записей в таблице может перевалить за 3000-4000 человек(записей). вот я и думаю, может вынести в отдельную таблицу, или никакой разницы какую таблицу обрабатывать...


Гы!)) А можно объяснить почему, если не трудно

ЗЫ: просто впервые делаю какой-то загружаемый скрипт, опыта в разработке сильно посещаемых систем почти ноль





Да разве ж 3000-4000 это много? ИМХО "много" (даже скорее ОБЬЕМНО) - таблицы с 3 дюжинами колонок (40% из которых - текстовые поля) и более чем на 100 000 записей.

Обьяснить? Поскольку никогда не обладал даром переносить технические статьи в разряд устного народного творчества, пересказывать не стану, даю источник :) - http://lib.protoplex.ru/lib_show/120.html
Я не имею ввиду, что это святая истина и её стоит беспрекословно соблюдать, нет, скорее просто пища к размышлениям.

11K
11 января 2007 года
.nornad
125 / / 04.01.2007
Я в данном случае посоветую UAS'у выбрать вариант с одной таблицей. Записей не очень много, обновляются достаточно редко. Думаю, в базе есть и другие таблицы. Мускул при сложных запросах часто не очень удобен - приходится использовать всякие join'ы или вообще временные таблицы. Поэтому моё решение таково - если нет нужны выделять что-то в отдельную таблицу, то и не надо этого делать.
244
12 января 2007 года
UAS
2.0K / / 19.07.2006
Спасибо всем. Буду разбираться...

Чё-то я намудрил... По расчетам получается 6000 запросов к БД!)))))) Буду переделывать, а то хостер на кол посадит))
302
12 января 2007 года
Sagittarius
648 / / 12.04.2003
Организовывать структуру БД нужно сразу правильно, чтобы в будущем не было головных болей с переделкой структуры.

Автор, оставь вариант с 2 таблицами, так как он исключит хранение избыточных данных.

ИМХО. Кроме того, поле users.max_score можно убрать, так как его всегда можно посчитать по таблице scrores.
13
12 января 2007 года
RussianSpy
3.0K / / 04.07.2006
Цитата: InterWen
Да разве ж 3000-4000 это много? ИМХО "много" (даже скорее ОБЬЕМНО) - таблицы с 3 дюжинами колонок (40% из которых - текстовые поля) и более чем на 100 000 записей.


Хм... странные понятия у вас про "объемные таблицы"... 100 тыс записей - это маленькая таблица. Это очень немного потому как на таких объемах практически не видны плюсы и минусы разных БД (с определенными поправками конечно). Они становятся видны на таблицах от 1-2 миллионов записей.
А вообще объемная таблица - это например 15 полей (1 счетчик, 4 текста, остальное инты) на 68 миллионов записей. Просто почти полгода с подобными зверьми работал - удовольствие то еще надо сказать. Самые простые действия могут занимать достаточно много времени.

Ну а для MySQL даже 1 миллион уже большая таблица. Потому ее и не используют в серьезных проектах.

309
12 января 2007 года
el scorpio
1.1K / / 19.09.2006
Вообще-то связи "один к одному" являются нежелательными. Потому что приходится сначала искать данные в одной таблице, потом в другой.
Имеет смысл разве что при разделении по правам доступа: юзеры на одну таблицу имеют право записи, а на другую - только чтение.
347
12 января 2007 года
Maniak
319 / / 05.11.2005
Цитата: RussianSpy

Ну а для MySQL даже 1 миллион уже большая таблица. Потому ее и не используют в серьезных проектах.



а какие субды используют тогда?

13
15 января 2007 года
RussianSpy
3.0K / / 04.07.2006
Которые неMySQL...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог