|
|
|
| Здравствуйте!
У меня возникли пару вопросов:
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. прошу прощения за громоздкость поста, я пытался объяснить все, чтобы было понятнее. | |
|
|
|
|
|
|
|
для: Infocean
(30.05.2009 в 18:10)
| | Всё правильно.
Единственное, что имеет смысл создать индексы на тех полях, по которым будет осуществляться отбор или сортировка строк при выводе. | |
|
|
|
|
|
|
|
для: Trianon
(30.05.2009 в 18:22)
| | Трианон, огромное спасибо, мне прям легче стало, а то я всё сидел и сомневался (правильно я делаю или нет). Индексы обязательно поставлю.
Подскажите, пожалуйста, еще, конкретно вот по таким вопросам:
1) как мне потом 1-им запросом извлечь данные из 2-х таблиц, так чтобы из таблицы категорий извлеклось 1 значение(id,name), а не вся таблица, а из таблицы Контент извлеклись все записи у которых content.idcategory = category.id ?
Если можно, то приведите грубый пример извлекающий данные из таблиц.
2) Т.е. таблицы связываются потом, только посредством запроса извлекающего данные из 2-х таблиц?
3) Я правильно понял, что при создании любых таблиц, столбцы содержащие много текста лучше помещать в конец таблицы? | |
|
|
|
|
|
|
|
для: Infocean
(30.05.2009 в 19:04)
| | >1) как мне потом 1-им запросом извлечь данные из 2-х таблиц, так чтобы из таблицы категорий извлеклось 1 значение(id,name), а не
какое именно?
>2) Т.е. таблицы связываются потом, только посредством запроса извлекающего данные из 2-х таблиц?
да
>3) Я правильно понял, что при создании любых таблиц, столбцы содержащие много текста лучше помещать в конец таблицы?
нет. | |
|
|
|
|
|
|
|
для: 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) Подскажите, пожалуйста, где можно поподробнее почитать про то, как правильно надо составлять структуру Таблицы. | |
|
|
|
|
|
|
|
для: Infocean
(30.05.2009 в 23:50)
| | SELECT *
FROM content
LEFT JOIN category ON content.id_category=category.id
WHERE content.id_category=3
это если я Вас правильно домыслил)
Подскажите, пожалуйста, где можно поподробнее почитать про то, как правильно надо составлять структуру Таблицы
Знал бы прикуп, жил бы в Сочи;)
Читайте книги и анализируйте их. В каждом конкретном случае правильная структура таблицы отличается от другого конкретного случая. | |
|
|
|
|
|
|
|
для: Valick
(31.05.2009 в 00:09)
| | Огромное спасибо.
Вы домыслили правильно, как раз то что надо.
За совет отдельное спасибо :) | |
|
|
|