SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 12.10.2012 20:33:03

freeetu
Участник
Зарегистрирован: 11.06.2012
Сообщений: 11

В чём суть "денормализации"? Философский вопрос

Вот скажите мне тогда, в чём суть "денормализации"?

Я сделал две таблицы, одна с фотографиями, вторая с контактами


SELECT
`table_upload_photo`.`alias`
FROM `table_users_list` AS `tu`
INNER JOIN `table_upload_photo` USING(`id_photo`)
WHERE
`tu`.`user_id` = '10336' &&
`tu`.`human_id` = '107466'
LIMIT 1


для `table_users_list` есть индексы
`id_photo`, `user_id`+`human_id`
и для `table_upload_photo` - `id_photo` уник

Теперь, чтобы в контакте получить фото по `id_photo` при связке я должен создать индекс по трём полям, чтобы запрос по скорости был таким же, как если бы я в таблице с контактами просто сохранил эту "фотографию" ??...

Если я правильно понял, тогда где эта пресловутая польза от "денормализации"....

Неактивен

 

#2 12.10.2012 21:58:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5833

Re: В чём суть "денормализации"? Философский вопрос

По-моему, вы неправильно понимаете термин "денормализации". Хранить фото в контакте (или кол-во загруженных данным пользователем фото и т.д.) это и есть денормализация.

Неактивен

 

#3 13.10.2012 04:43:11

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3878

Re: В чём суть "денормализации"? Философский вопрос

freeetu, вы привели пример несоответствующий вопросу темы

1) Существует понятие нормальной формы базы данных (см. http://ru.wikipedia.org/wiki/%D0%9D%D0% … 0%BC%D0%B0 ). Идея нормализации в том, чтобы избежать повторов в базе и возможности того, что update сделает базу несамосогласованной. Обычно нормализация не ведет к росту производительности, а наоборот.

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

В вашем примере оба варианта находятся в нормальной форме, если фотография одна на каждого юзера,

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson