Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Структура таблицы для интернет магазина 
:(
    Опции темы
xoslv
Дата 11.10.2010, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Доброго времени суток!
Есть вопрос относительно надёжности и быстродействия базы данных.
Вопрос скорее к оптимизаторам БД.
Цель разработка интернет каталога примерно на 10 - 15 тысяч записей.
Как будет лучше, использование одной таблицы в которой будет порядка 80 полей, треть из которых VARCHAR, а остальные DOUBLE и INTEREGER. В которой все поля ИНТ будут индексами, по которым будет идти поиск.
Или же лучше сделать примерно 7 - 8 таблиц в которых будет по 13 - 15 полей, где порядка 10 из них будет VARCHAR?

Какой из этих вариантов наиболее жизнеспособный?

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

Ещё интересен вопрос по поводу кеша. Как можно закешировать возвращённый результат, чтобы при повторном таком запросе, ДБ выдала результат на много быстрее. и держала в памяти этот ответ каких минут 30 если не было никаких изменений в данной таблице... 

Касательно последнего, возможно ли такое вообще?

Какие поля будут в таблице: (по бумажный вариант)
Код

`id` INT(10) NOT NULL AUTO INCREMENT PRIMARY KEY,
`seller_id` INT(10) NOT NULL DEFAULT 0,
`seller_code` VARCHAR(25) NOT NULL DEFAULT '',
`seller_price` DOUBLE(8,4) NOT NULL DEFAULT '0.00',
`local_type` INT(10) NOT NULL DEFAULT 0,
`local_number` VARCHAR(25) NOT NULL DEFAULT '',
`local_price` DOUBLE(8,4) NOT NULL DEFAULT '0.00',
`discount` DOUBLE(8,4) NOT NULL DEFAULT '0.00',
`discount_from` INT(10) NOT NULL DEFAULT 0,
`discount_till` INT(10) NOT NULL DEFAULT 0,
`warranty` INT(10) NOT NULL DEFAULT 365,
`on_stock` INT(10) NOT NULL DEFAULT 0,
`show` INT(1) NOT NULL DEFAULT 0,
`name_lv` VARCHAR(255) NOT NULL DEFAULT '',
`name_ru` VARCHAR(255) NOT NULL DEFAULT '',
`description_lv` TEXT NOT NULL DEFAULT '',
`description_ru` TEXT NOT NULL DEFAULT '',
`ram_slot` VARCHAR(55) NOT NULL DEFAULT'',
`ram_slot_c` INT(2) NOT NULL DEFAULT 0,
`formfactor` VARCHAR(75) NOT NULL DEFAULT '',
`video` VARCHAR(255) NOT NULL DEFAULT '',
`chipset` VARCHAR(50) NOT NULL DEFAULT '',
`pci_slot_c` INT(2) NOT NULL DEFAULT 0,
`cpu_socket` VARCHAR(20) NOT NULL DEFAULT '',
`core2_duo` TEXT NOT NULL DEFAULT '',
`fire_wire` INT(1) NOT NULL DEFAULT 0,
`creator` INT(10) NOT NULL DEFAULT 0,
`ide_slot_c` INT(2) NOT NULL DEFAULT 0,
`sata_slot_c` INT(2) NOT NULL DEFAULT 0,
`sata3_slot_c` INT(2) NOT NULL DEFAULT 0,
`sli_support` INT(1) NOT NULL DEFAULT 0,
`usb_slot_c` INT(2) NOT NULL DEFAULT 0,
`usb3_slot_c` INT(2) NOT NULL DEFAULT 0,
`video_slot` VARCHAR(50) NOT NULL DEFAULT 0,
`core_c` VARCHAR(25) NOT NULL DEFAULT '',
`bitrate` INT(2) NOT NULL DEFAULT 0,
`igpu` VARCHAR(25) NOT NULL DEFAULT '',
`die_lithography` VARCHAR(25) NOT NULL DEFAULT '',
`qpi` VARCHAR(25) NOT NULL DEFAULT '',
`l2_cache` VARCHAR(25) NOT NULL DEFAULT '',
`number` VARCHAR(25) NOT NULL DEFAULT '',
`type` VARCHAR(255) NOT NULL DEFAULT '',
`step` VARCHAR(10) NOT NULL DEFAULT '',
`freq` INT(10) NOT NULL DEFAULT '',
`power` INT(10) NOT NULL DEFAULT '',
`socket` VARCHAR(25) NOT NULL DEFAULT '',
`socket_flag` INT(1) NOT NULL DEFAULT 0,
`size_mb` INT(10) NOT NULL DEFAULT 0,
`cl` VARCHAR(10) NOT NULL DEFAULT '',
`kit` INT(1) NOT NULL DEFAULT 0,
`rpm` INT(10) NOT NULL DEFAULT 0,
`bufer` INT(10) NOT NULL DEFAULT 0,
`connector` VARCHAR(25) NOT NULL DEFAULT '',
`soft` VARCHAR(255) NOT NULL DEFAULT '',
`color_id` INT(10) NOT NULL DEFAULT 0,
`lightscribe` INT(1) NOT NULL DEFAULT 0,
`cooling` VARCHAR(100) NOT NULL DEFAULT '',
`gpu` VARCHAR(100) NOT NULL DEFAULT '',
`gpu_full` VARCHAR(100) NOT NULL DEFAULT '',
`ram` INT(10) NOT NULL DEFAULT 0,
`core` VARCHAR(10) NOT NULL DEFAULT '',
`slot` VARCHAR(10) NOT NULL DEFAULT '',
`model` VARCHAR(255) NOT NULL DEFAULT '',
`fdd_bay` INT(2) NOT NULL DEFAULT 0,
`hdd_bay` INT(2) NOT NULL DEFAULT 0,
`ext_bay` INT(2) NOT NULL DEFAULT 0,
`psu` INT(10) NOT NULL DEFAULT 0,
`modul_cable_flag` INT(1) NOT NULL DEFAUL 0,
`mb_connector` VARCHAR(25) NOT NULL DEFAULT '',
`pcie_connector` INT(2) NOT NULL DEFAULT 0,
`sata_connector` INT(2) NOT NULL DEFAULT 0,
`fan`  VARCHAR(10) NOT NULL DEFAULT 0,
`ups_va` INT(10) NOT NULL DEFAULT 0,
`page_c` INT(10) NOT NULL DEFAULT 0,
`lan` VARCHAR(50) NOT NULL DEFAULT 0,
`wifi` INT(1) NOT NULL DEFAULT 0,
`size` VARCHAR(100) NOT NULL DEFAULT '',
`resolution` VARCHAR(50) NOT NULL DEFAULT '',
`reaction` VARCHAR(50) NOT NULL DEFAULT '',
`language` VARCHAR(75) NOT NULL DEFAULT '',
`speed` VARCHAR(50) NOT NULL DEFAULT '',
`contrast` VARCHAR(50) NOT NULL DEFAULT '',
`tv_tuner` INT(1) NOT NULL DEFAULT 0,

--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
Zloxa
Дата 11.10.2010, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(xoslv @  11.10.2010,  16:46 Найти цитируемый пост)
Минус своей затеи я вижу в том, что при падении таблицы, я рискую потерять весь каталог, а не его часть.

Имхо Вы не там видите минус, где он есть.
Сохранность и доступность данных не задача программиста, задача DBA./*конечно от программиста при том требуется соблюдение определенных правил, но тут, ИМХО вовсе не тот случай*/
А минус денормализации - существенное  усложнение процесса модификации данных и обеспечения  их согласованности.
Денормализация с целю оптимизации доступа по чтению - вполне себе общепринятая практика.



Это сообщение отредактировал(а) Zloxa - 11.10.2010, 17:12


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
xoslv
Дата 11.10.2010, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Я согласен, что при внесении дополнений в структуру таблицы, я буду её нагружать ещё круче, учитывая что нововведение не нужно для всех видов товара а только для конкретной категории.
Ну а в целом, как я понимаю, мой вариант реализации каталога вполне имеет право на существование и очень даже нормальное?
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
xoslv
Дата 12.10.2010, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Хочется ещё плюсов и минусов от специалистов. Критика допускается!
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
Zloxa
Дата 12.10.2010, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(xoslv @  11.10.2010,  18:01 Найти цитируемый пост)
при внесении дополнений в структуру таблицы, я буду её нагружать ещё круче,

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

Еще в качестве проблемы можно придумать объем. Определенно сканирование таблицы с 1-2 тыщ записями будет производиться быстрее чем одной 13-15тыщ. Но об этом тоже сложно говорить, не понимая какого рода запросы будут превалировать.

Добавлено через 3 минуты и 49 секунд
В общем резюме. Делай. Такой подход, при таких исхдных - вполне жизнеспособен.
А там, как граблей в лоб получишь - обращайся, посочувствуем, на вавку подуем, расскажем как правильно надо было, с учетом внезапно всплывшего.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
xoslv
Дата 13.10.2010, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Ок! Будем пробовать и смотреть. А проблемы будем решать по мере поступления.

З.Ы. Что означает: согласованность данных? 

Это сообщение отредактировал(а) xoslv - 13.10.2010, 09:33
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
Zloxa
Дата 13.10.2010, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



Цитата(xoslv @  13.10.2010,  09:31 Найти цитируемый пост)
З.Ы. Что означает: согласованность данных? 

Под согласованностью я понимал консистентность, но это слово мне не нравится. В этой статье согласованность является одним из условий консистентности, а, скажем, в этой - синонимом.

Добавлено @ 10:05
На примере приведенной тобой структуры:
Допустим поле language, у тебя могут оказаться значения 'Русский' и 'Русcкий'(с одной латинской с), которые обозначают одно и то же, но суть разнятся. Это называется противоречивость данных - нарушение согласованности(консистентности).
В нормализованной структуре, обеспечить подобную непротиворечивость данных - несколько проще. 

Это сообщение отредактировал(а) Zloxa - 13.10.2010, 10:08


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
xoslv
Дата 13.10.2010, 10:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 195
Регистрация: 12.1.2007

Репутация: нет
Всего: нет



Здорово, спасибо! Полезные статейки!
--------------------
Не всё то маздай, что синее!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.