Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Тьма таблиц или тьма строк
 
 автор: Vitaleks   (16.03.2010 в 21:03)   письмо автору
 
 

Доброго времени суток.
Такой вопрос, имеется скажем много производителей, например 9999, и список их услуг, какждый по например 3000.

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

Когда в одну таблицу:

company => company_id, company_name - список компаний
service => service_id, company_id, service_name - услуги

Когда для каждого производителя своя таблица:

company => company_id, company_name - список компаний
service_ID => service_id, service_name - услуги (где ID = company_id т.е таблиц будет 9999 штук)

Заранее спасибо за совет :)

  Ответить  
 
 автор: Тень&   (16.03.2010 в 21:22)   письмо автору
 
   для: Vitaleks   (16.03.2010 в 21:03)
 

В одну таблицу. Просто индекс на столбец company_id в таблице service.

  Ответить  
 
 автор: oliss   (17.03.2010 в 02:10)   письмо автору
 
   для: Vitaleks   (16.03.2010 в 21:03)
 

Две таблицы ,связанные по внешнему ключу

-- 
-- Структура таблицы `compani`
-- 

CREATE TABLE `compani` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `c_name` varchar(255) NOT NULL default 'NOT NULL',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `c_name` (`c_name`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

-- 
-- Дамп данных таблицы `compani`
-- 

INSERT INTO `compani` VALUES (1, 'IBM');
INSERT INTO `compani` VALUES (2, 'Микоян');



-- 
-- Структура таблицы `service`
-- 

CREATE TABLE `service` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `compani_id` int(10) unsigned NOT NULL,
  `s_name` varchar(255) NOT NULL default 'NOT NULL',
  PRIMARY KEY  (`id`),
  UNIQUE KEY `s_name` (`s_name`),
  KEY `compani_id` (`compani_id`)
) ENGINE=MyISAM AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

-- 
-- Дамп данных таблицы `service`
-- 

INSERT INTO `service` VALUES (1, 1, 'Продажа компьютеров');
INSERT INTO `service` VALUES (2, 1, 'Комплектующие');
INSERT INTO `service` VALUES (3, 2, 'Колбасы без мяса');


Если есть ( одинаковые услуги,относящиеся к разным компаниям) то надо добавить таблицу связи
-- 
-- Структура таблицы `linc`
-- 

CREATE TABLE `linc` (
  `id_compani` int(10) unsigned NOT NULL,
  `id_service` int(10) unsigned NOT NULL,
  KEY `id_compani` (`id_compani`),
  KEY `id_service` (`id_service`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

а поле `compani_id` int(10) unsigned NOT NULL, из таблицы `service` убрать

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования