Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Несколько категории к компании

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Таблицы и поля MySQL
pantela
Отправлено: 24 Ноября, 2011 - 09:41:05
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




Проект делается на фреймворке CodeIgniter (думаю смысла не имеет, но всё же сказал) В проекте есть записи компании, у каждой компании должно быть неограниченное количество категории и подкатегории, структура у меня таблицы компании примерно такая:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. CREATE TABLE IF NOT EXISTS `companies` (
  3.   `id` int(11) NOT NULL AUTO_INCREMENT,
  4.   `cat_id` varchar(255) NOT NULL,
  5.   `date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  6.   PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;
  8.  

(все поля не привёл в дампе, думаю смысла нету)
так вот вопрос в том как лучще привязывать категории к компании, 2 момента я думаю, если есть ещё варинты предлогайте:

1. Сделать новую таблицу и туда прописывать АД категории и АД компании, т.е. сколько будет категории у компании столько записи в таблице будет

2. Сделать в таблице компании в поле cat_id перечисдление АД категории через запятуную.

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

спс.Ув.

P.S. Если есть ещё варианты слушаю Улыбка
 
 Top
EuGen Администратор
Отправлено: 24 Ноября, 2011 - 09:46:11
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




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


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Stierus Супермодератор
Отправлено: 24 Ноября, 2011 - 09:46:53
Post Id



Рекордсмен по количеству сообщений за 7 дней


Покинул форум
Сообщений всего: 2132
Дата рег-ции: Дек. 2008  
Откуда: Москваль


Помог: 52 раз(а)




Вариант 1 - стандартная связь многие ко многим. Вариант 2 - полная жесть. как вы будете в этих полях искать? задача - найти все компании, находящиеся в какой-то категории ... вот у вас и проблема Улыбка
 
My status
 Top
pantela
Отправлено: 24 Ноября, 2011 - 09:58:34
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 765
Дата рег-ции: Авг. 2010  


Помог: 1 раз(а)




ясно, большое вам спасибо. Закатив глазки
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB