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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> разумно ли создавать много таблиц? 
:(
    Опции темы
Sufius
  Дата 31.1.2005, 07:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени!

Вот задумался над такой проблемой. Если делать сайт и выкладывать туда музыку... если кол-во композиций переваливает более 20.000 то возникает один вопрос - как создавать БД...

Есть два пути:
1) создать 1 таблицу, куда складировать всё инфу... например,
id | artist | album | song | letter |

в поле letter указывать букву, которая отображает букву для поиска... допустим у строка выглядит так

1 | Сплин | Гни свою линию | Брат-2 | С |
то есть когда пользователь делает поиск по букве "С" ему отображается Сплин и другие группы, у которых поле буква "С"...
Далее он наживает на Сплин и ему идет выборка по полю artist...

Недостаток - когда более 20.000 строк - довольно долго будет обрабатывать запрос...

2) создать таблицы для каждой буквы...
но тогда, когда поиск идет не по букве, а через форму поиска, то скрипт должен будет проверить все таблицы... а это около 60...

Вопрос... может как-то по другому можно сконструировать БД? кто что может предложить?



--------------------
Помогите плиз с Ajax http://forum.vingrad.ru/forum/topic-208747.html
PM MAIL ICQ   Вверх
Akina
Дата 31.1.2005, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


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

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



Почитай что-нить про организацию БД, а? Про нормализацию там и пр...
Станет понятно что таблиц должно быть 2 или 3, что поле letter нахрен не надо, что... впрочем твой случай относится как раз к категории классических и в любой литературе разобран по косточкам - может на другом материале, но смысл тот же...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Vaulter
Дата 31.1.2005, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



у меня есть такой сайт (на локалке, писАл сам) структура такая:
Код

CREATE TABLE `albums` (
 `id` int(11) NOT NULL auto_increment,
 `title` varchar(255) default '',
 `artist` int(11) NOT NULL default '0',
 `year` int(11) default '0',
 `tracks` int(11) default '0',
 `time` int(11) default '0',
 PRIMARY KEY  (`id`),
 KEY `id` (`id`,`artist`)
) TYPE=MyISAM;



#
# Table structure for table 'artists'
#

CREATE TABLE `artists` (
 `id` int(11) NOT NULL auto_increment,
 `artist` varchar(100) default '',
 PRIMARY KEY  (`id`),
 KEY `id` (`id`)
) TYPE=MyISAM;



#
# Table structure for table 'songs'
#

CREATE TABLE `songs` (
 `id` int(11) NOT NULL auto_increment,
 `title` varchar(255) default '',
 `track` int(11) default '0',
 `album` int(11) NOT NULL default '0',
 `bitrate` int(11) default '0',
 `size` int(11) default '0',
 `time` int(11) default '0',
 `filename` varchar(255) default '',
 `downloads` int(11) default '0',
 `added` int(11) default '0',
 `genreid` int(11) default '0',
 `genre` varchar(100) default '',
 `touch` int(10) unsigned default NULL,
 `who` varchar(15) default NULL,
 PRIMARY KEY  (`id`),
 KEY `id` (`id`,`album`)
) TYPE=MyISAM;





--------------------
PM MAIL WWW ICQ   Вверх
VVp
Дата 1.2.2005, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не на самой серверной машине такой запрос
Код

SELECT * FROM `tovar` WHERE name LIKE 'с%'

по таблице из примерно 10000 записей, более чем на 20 полей, среди которых даже есть поле типа text, занял 0.0023 сек.
Так что ты напрасно беспокоишься. 20000 записей - это еще не повод для беспокойства.

PM MAIL   Вверх
Гость_Sufius
Дата 2.2.2005, 19:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











smile Спасибо... все сделал, всё получилось...
Только один вопрос...
Проблема с русскими наименованиями... В БД забить-то можно, но вот как делать поиск по русским буквам? Выдает Интернал Сервер Еррор...
Код

SELECT * FROM `tovar` WHERE name LIKE 'с%'

Это понятно... с если буква русская?
Как тогда писать запрос поиска по букве?
  Вверх
Opik
Дата 2.2.2005, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

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



так и писать =)
Код

SELECT * FROM `tovar` WHERE name LIKE 'Ф%'

PM MAIL Skype   Вверх
Farik
Дата 2.2.2005, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если БД - mysql, то рекомендую позаботиться о строке "default-character-set=cp1251" или "default-character-set=utf8" в конфиге. По умолчанию этого нет и возникают проблемы именно с работой русских символов.
PM MAIL   Вверх
Sufius
Дата 2.2.2005, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Э-э-э... а в каком файле это надо установить?
в этом что ли config-win.h?


--------------------
Помогите плиз с Ajax http://forum.vingrad.ru/forum/topic-208747.html
PM MAIL ICQ   Вверх
Vaulter
Дата 3.2.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Sufius
httpd.conf


--------------------
PM MAIL WWW ICQ   Вверх
Sufius
Дата 3.2.2005, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хех... конфиг апача...
там есть строка AddDefaultCharset WINDOWS-1251
изменяю на cp1251 или utf8 - нет эффекта...
та же internal error...


--------------------
Помогите плиз с Ajax http://forum.vingrad.ru/forum/topic-208747.html
PM MAIL ICQ   Вверх
IZ@TOP
Дата 3.2.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

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



Цитата(Vaulter @ 3.2.2005, 15:14)
Sufius
httpd.conf

А может всеже в my.ini или my-*.cnf, который находится в корневой папке MySQL'я?
Добавлено @ 17:01
Цитата(Sufius @ 3.2.2005, 15:38)
та же internal error...

Скорее всего это связано не с MySQL'ем а с настройкой Apache.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Sufius
Дата 3.2.2005, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



2 IZ@TOP
В папке мускула таких файлов не отыскал... нашел только config-win.h... попробую с ним поиграться...
Возможно... просто он выдаёт её, когда поиск болжен осуществляться по русской букве... в остальном всё работает...


--------------------
Помогите плиз с Ajax http://forum.vingrad.ru/forum/topic-208747.html
PM MAIL ICQ   Вверх
Vaulter
Дата 4.2.2005, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



IZ@TOP
точно. демон попутал


--------------------
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




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


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

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