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

Форум MySQL

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

 

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

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

тема: Как сделать правильно?
 
 автор: Infocean   (30.05.2009 в 18:10)   письмо автору
 
 

Здравствуйте!
У меня возникли пару вопросов:

1) Как правильно сделать структуру таблицы, чтобы при выборке данных была наименьшая нагрузка?
Пример нужной таблицы:
id – автоматическое создание ключа для каждой строки
pict – путь до картинки
name - название
url – адрес сайта
descr – описание

Как правильно распределить эти столбцы в таблице, чтобы при извлечении данных из неё, всё быстро работало.

2) Правильно ли я понимаю понятие связанные таблицы?
Пример:
Таблица категории (category):
id - автоматическое создание ключа для каждой новой строки
namecat – название категории

Таблица с контентом(content):
id – автоматическое создание ключа для каждой новой строки
idcategory – ид категории
pict – путь до картинки
name - название
url – адрес сайта
descr – описание

т.е. я должен теперь создать две такие таблицы запросами:
1) таблица category:
CREATE TABLE ` category ` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


2) таблица content:
CREATE TABLE ` content ` (
  `id` int(11) NOT NULL auto_increment,
  `idcategory` int(11) NOT NULL default '0',
  `pict` varchar(100) default NULL,
  `name` varchar(100) NOT NULL,
  `url` varchar(200) NOT NULL,
  `descr` text,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;


И тут у меня возникает ещё пару вопросов:
1) правильная структура или нет?
2) как мне потом 1-им запросом извлеч данные из 2-х таблиц,так чтобы из таблицы категорий извлеклось 1 значение(id,name), а не вся таблица, а из таблицы Контент извлеклись все записи у которых content.idcategory = category.id ?
3) Т.е. таблицы связываются потом,только посредством запроса извлекающего данные из 2-х таблиц?

Пожалуйста, объясните мне, как правильно нужно сделать.

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

  Ответить  
 
 автор: Trianon   (30.05.2009 в 18:22)   письмо автору
 
   для: Infocean   (30.05.2009 в 18:10)
 

Всё правильно.
Единственное, что имеет смысл создать индексы на тех полях, по которым будет осуществляться отбор или сортировка строк при выводе.

  Ответить  
 
 автор: Infocean   (30.05.2009 в 19:04)   письмо автору
 
   для: Trianon   (30.05.2009 в 18:22)
 

Трианон, огромное спасибо, мне прям легче стало, а то я всё сидел и сомневался (правильно я делаю или нет). Индексы обязательно поставлю.

Подскажите, пожалуйста, еще, конкретно вот по таким вопросам:
1) как мне потом 1-им запросом извлечь данные из 2-х таблиц, так чтобы из таблицы категорий извлеклось 1 значение(id,name), а не вся таблица, а из таблицы Контент извлеклись все записи у которых content.idcategory = category.id ?
Если можно, то приведите грубый пример извлекающий данные из таблиц.

2) Т.е. таблицы связываются потом, только посредством запроса извлекающего данные из 2-х таблиц?

3) Я правильно понял, что при создании любых таблиц, столбцы содержащие много текста лучше помещать в конец таблицы?

  Ответить  
 
 автор: Trianon   (30.05.2009 в 21:55)   письмо автору
 
   для: Infocean   (30.05.2009 в 19:04)
 

>1) как мне потом 1-им запросом извлечь данные из 2-х таблиц, так чтобы из таблицы категорий извлеклось 1 значение(id,name), а не

какое именно?

>2) Т.е. таблицы связываются потом, только посредством запроса извлекающего данные из 2-х таблиц?

да

>3) Я правильно понял, что при создании любых таблиц, столбцы содержащие много текста лучше помещать в конец таблицы?

нет.

  Ответить  
 
 автор: Infocean   (30.05.2009 в 23:50)   письмо автору
 
   для: Trianon   (30.05.2009 в 21:55)
 

1) Например:
В таблице Категорий, есть 3 категории:
"INSERT INTO category VALUES (1, 'Авто')";
"INSERT INTO category VALUES (2, 'Дом')";
"INSERT INTO category VALUES (3, 'Компьютеры')";


и таблица с контентом:

"INSERT INTO category VALUES (1,3,'pict_1.jpg', 'Intel','www.intel.ru','описание')";
"INSERT INTO category VALUES (2,3,'pict_2.jpg', 'Hewlett Packard','www.hp.ru','описание')";
"INSERT INTO category VALUES (3,1,'pict_3.jpg', 'Ваш дом','www.site.ru','описание')";


как мне извлечь одним запросом название категории, у которой id=3(т.е. "Компьютеры") и из таблицы Контент извлечь все записи, у которых id=3.

2) Огромное спасибо, за конкретный ответ

3) Подскажите, пожалуйста, где можно поподробнее почитать про то, как правильно надо составлять структуру Таблицы.

  Ответить  
 
 автор: Valick   (31.05.2009 в 00:09)   письмо автору
 
   для: Infocean   (30.05.2009 в 23:50)
 

SELECT *
FROM content
LEFT JOIN category ON content.id_category=category.id
WHERE content.id_category=3

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

  Ответить  
 
 автор: Infocean   (31.05.2009 в 20:51)   письмо автору
 
   для: Valick   (31.05.2009 в 00:09)
 

Огромное спасибо.
Вы домыслили правильно, как раз то что надо.
За совет отдельное спасибо :)

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

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