Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Много полей в БД 
:(
    Опции темы
JEEN
Дата 2.2.2012, 12:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

а в основной таблице сохранять сразу идентификатор..

так и есть. Числа это и есть идентификатор массива
array(0=>'Белый', 1=>'Черный'); поэтому много чисел.

Добавлено через 8 минут и 6 секунд
вот что сейчас вычитал
Цитата

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

PM MAIL   Вверх
$дмитрий
Дата 2.2.2012, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Не нужно нарушать традиции
Цитата

BOOL these types are synonyms for TINYINT(1)


Цитата

чтобы небыло пустых ячеек в основной таблице. Не надо?

Не надо

Цитата

В теории баз данных говорится о том, что схема базы данных должна быть полностью нормализована

Только не в интернете, тут другие правила
PM MAIL   Вверх
krundetz
Дата 2.2.2012, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата($дмитрий @  2.2.2012,  10:50 Найти цитируемый пост)
Расмазывать по таблицам все подряд не стоит

а где размазывание? в первую таблиццу я выделил то по чему можно производить однозначный поиск, хотя опять повторюсь все зависит от задачи, которая ставиться перед системой
Цитата(JEEN @  2.2.2012,  12:06 Найти цитируемый пост)
boolean или tinyint(1)?

одно и тоже
Цитата(JEEN @  2.2.2012,  11:45 Найти цитируемый пост)
итого я бы вынес это:

исходите из задачи, просто выносить чтобы что то вынести, пустая трата времени, поставте задачу, чего вы хотите добиться вынесением
Цитата(JEEN @  2.2.2012,  12:17 Найти цитируемый пост)
вот что сейчас вычитал

опять же повторюсь все зависит от задачи, есть данные которые нужны постоянно, есть такие которые требуються очень редко и т.д. и т.п. а соответственно будут отличаться требования к скорости их обработки.

Это сообщение отредактировал(а) krundetz - 2.2.2012, 12:54


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
ksnk
Дата 2.2.2012, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Имеет смысл выкинуть в отдельную таблицу часто повторяющиеся значения. просто для того, чтобы сэкономить  на 'select distinct ...' по этому полю, для вывода возможных вариантов.
Есть мнение, что в некоторых случаях удобнее обойтись без такой операции, а заменить значение на ENUM поле... Экономия даже больше.

Есть еще мнение - "работает - не трогай"  smile Если менять схему таблицы без особых оснований - можно и проиграть в скорости и удобстве.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
$дмитрий
Дата 2.2.2012, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

а где размазывание? в первую таблиццу я выделил то по чему можно производить однозначный поиск

Я не комментировал твой вариант. Нужно?
PM MAIL   Вверх
krundetz
Дата 2.2.2012, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата(ksnk @  2.2.2012,  13:03 Найти цитируемый пост)
Есть еще мнение - "работает - не трогай"

Очень правильное мнение.
Цитата($дмитрий @  2.2.2012,  13:04 Найти цитируемый пост)
Нужно? 

Если не затруднит, то давай, я всегда открыт для чужих мнений.


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
$дмитрий
Дата 2.2.2012, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

Если не затруднит, то давай, я всегда открыт для чужих мнений. 

Это щас пальцем в небо тыкать, потому как:
Цитата

все зависит от задачи, которая ставиться перед системой

Покритикую, разве что для продолжения темы smile 

---

Не вижу смысла создавать таблицу второстепенных данных в таком виде
Цитата

autoID | autoNameID | colorID | Описание

Название авто, как ни крути нам нужно при любом запросе(будь-то страница список авто, подробное описание), оно обязательное для заполнения и не является "Дополнительным свойством". Что оно делает в доп. таблице?
Смысл выносить сюда colorID, Описание?

Короче все статические хар-ки должны находится в одной таблицы. 
PM MAIL   Вверх
krundetz
Дата 2.2.2012, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



$дмитрий я предположил что:

1. Ежесекундно производиться поиск по VIN номерам
2. Данные по VIN переписываются не часто.
3. Также постоянно осуществляется поиск по остальным данным, хотя и реже чем по VIN.
4. Остальные данные изменяются не реже раза в день ( огромная сеть авто сервисных станций описывает все операции производимые с машиной )

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

Хотя ты прав насчет идентификатора названия, стоит его перенести в основную таблицу.

Это сообщение отредактировал(а) krundetz - 2.2.2012, 23:27


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
$дмитрий
Дата 3.2.2012, 06:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

чтобы поиску обслуживался(обслуживается) ли такой автомобиль в мастерской происходил максимально быстро

Интересный момент. К примеру, есть БД(MyISAM) состоящая из 2 таблиц:
1. С 1 колонкой
2. С 50 колонками
В обоих таблицах есть поле с индексом. Вопрос: по какой таблице поиск, по этому полю, будет происходить быстрее и почему?

Это сообщение отредактировал(а) $дмитрий - 3.2.2012, 06:37
PM MAIL   Вверх
krundetz
Дата 3.2.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата($дмитрий @  3.2.2012,  06:36 Найти цитируемый пост)
Вопрос: по какой таблице поиск, по этому полю, будет происходить быстрее и почему?

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

Добавлено через 5 минут и 29 секунд
Цитата($дмитрий @  3.2.2012,  06:36 Найти цитируемый пост)
В обоих таблицах есть поле с индексом.

опятьже индексы можно сделать по разному

Это сообщение отредактировал(а) krundetz - 3.2.2012, 11:51


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
$дмитрий
Дата 3.2.2012, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

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

Таблицы различаются только кол-вом столбцов, там где их больше ес-но данных(не строк) будет больше. Остальные условия идентичные.
Вот к чему спрашиваю: а стоит ли выносить в отдельную таблицу поле/поля по котором будет производится активный поиск?

Ведь индексы у нас хранятся в отдельном файле и не зависят от того сколько там будет столбцов. Поправь если не прав
PM MAIL   Вверх
krundetz
Дата 3.2.2012, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вечный странник
***


Профиль
Группа: Завсегдатай
Сообщений: 1400
Регистрация: 14.6.2007
Где: НН(Сормово)

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



Цитата($дмитрий @  3.2.2012,  12:22 Найти цитируемый пост)
а стоит ли выносить в отдельную таблицу поле/поля по котором будет производится активный поиск?

при условии что часть данных в таблице часто обновляется и поиск происходит не по ним, то да стоит, так как существует понятие блокировок на запись и блокировки на чтение
Цитата($дмитрий @  3.2.2012,  12:22 Найти цитируемый пост)
Ведь индексы у нас хранятся в отдельном файле и не зависят от того сколько там будет столбцов. Поправь если не прав 

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


--------------------
!цензоры - Хранитель стратегической жидкости
Группа ТГВ
Группа Нижний Новгород
user posted image
PM MAIL   Вверх
$дмитрий
Дата 3.2.2012, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата

если мы говорим о MySql то по разному для разных типов таблиц

Ну это понятно, давай ограничиваться MyIsam

Цитата

но здесь суть не в этом где они хранятся, работаю то я с данными, а индексы существуют только для поиска 

Индексы же как раз и указывают на конкретное место поиска в файле данных. Вобщем тестировать оба варианта ... чтоб снять вопрос
PM MAIL   Вверх
ksnk
Дата 3.2.2012, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



Цитата(Gold Dragon @  2.2.2012,  12:15 Найти цитируемый пост)
у меня маленькое предложение, а не лучше ли некоторые данные вынести вообще в константы которые описать сразу в коде.. Зачем к примеру мне хранить таблицу цветов когда я просто могу сделать массив, а в основной таблице сохранять сразу идентификатор

Imho, про цвета - дурацкая идея  smile . Если кто-то поменяет массив цветов в исходнике - сразу вся база накроется медным тазом. А новое название цвета дизайнеру придумать - раз плюнуть, как и программисту вставить его "по алфавиту" в массив...
Можно было бы в отдельную таблицу вынести, если так уж неймется...


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
JEEN
Дата 4.2.2012, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



я тут вспомнил, про функцию serialize / unserialize. Числовые поля не сделать так (по ним поиск идет), а вот тестовые - легко. Стоит делать или не заморачиваться?
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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