Как лучше создать таблицы в бд

делаю компонент нужна совет по оптимальной структуре таблиц

 
Посетитель
small user social cms
Медаль
Сообщений: 296
Делаю компонент который считывает из xml файла информацию и складывает в базу.
имеется следующая структура xml:
Код PHP:
  1. <yml_catalog date="2013-07-29 13:00">
  2. <shop>
  3. <name>Наименование магазина</name>
  4. <company>Компания</company>
  5. <url>Ссылка</url>
  6. <email>электронный адрес</email>
  7. <currencies>
  8. <currency id="RUR" rate="1"/>
  9. </currencies>
  10. <categories>
  11. <category id="2517" parentId="2515">Категории</category>
  12. <category id="2017" parentId="2115">Категории</category>
  13. </categories>
  14. <offers>
  15. <offer id="119195" available="false">
  16. <url>Ссылка</url>
  17. <price>Цена</price>
  18. <currencyId>RUR</currencyId>
  19. <categoryId>1465</categoryId>
  20. <picture>Адрес к картинке</picture>
  21. <store>true</store>
  22. <pickup>false</pickup>
  23. <delivery>true</delivery>
  24. <name>Наименование</name>
  25. <vendor>Производитель</vendor>
  26. <vendorCode>артикул</vendorCode>
  27. <description>
  28. Описание продукта
  29. </description>
  30. </offer>
  31. <offer id="119196" available="false">
  32. <url>Ссылка</url>
  33. <price>Цена</price>
  34. <currencyId>RUR</currencyId>
  35. <categoryId>1465</categoryId>
  36. <picture>Адрес к картинке</picture>
  37. <store>true</store>
  38. <pickup>false</pickup>
  39. <delivery>true</delivery>
  40. <name>Наименование</name>
  41. <vendor>Производитель</vendor>
  42. <vendorCode>артикул</vendorCode>
  43. <description>
  44. Описание продукта
  45. </description>
  46. </offer>
  47. </offers>
  48. </shop>
  49. </yml_catalog>
Каким образом построить структуру таблиц баз данных?
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
Тут получается как минимум 3 таблицы:
1. Организация:
ид
name
company
url
email
currency
2. Категория
ид
category
parent
title
3.Товар
id
сompany_id
item_id
url
price
cur
cat
pic_url
store
pickup
store
delivery
vendor
artic
description
Реклама
cms
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
Не совсем понятен вопрос. YML - это формат(на основе XML), в котором отдают данные Яндексу из готовой БД. А вам нужно наоборот. Тут уж надо исходить из того, куда эти данные потом пойдут. Возможно даже хватит и одной таблицы "Товары". Если магазин один - файл ведь один для одного магазина. У категорий только структура. Если можно вытащить названия категорий откуда то ещё и если они нужны, то возможно нужно будет ещё таблицу категорий товаров.
Хватит париться, живи как нравится!
Посетитель
small user social cms
Медаль
Сообщений: 296
то есть товары по категориям нет смысла разбивать?
я изначально думал так:
1 Компания (в принципе всегда одинаковые данные)
2 Категории (список всех категорий)
3 Категория 1
3.1 Товар в этой категории
3.2 -//-
4 Категория 2
4.1 Товар в этой категории
4.2 -//-

Категорий сейчас 21
а товаров в них 4-5 тыс шт.
Посетитель
small user social cms
Медаль
Сообщений: 296
Марат:

Не совсем понятен вопрос. YML - это формат(на основе XML), в котором отдают данные Яндексу из готовой БД. А вам нужно наоборот. Тут уж надо исходить из того, куда эти данные потом пойдут.
Разбил вопрос на части здесь только про базу данных.
Марат:

Возможно даже хватит и одной таблицы "Товары". Если магазин один - файл ведь один для одного магазина. У категорий только структура. Если можно вытащить названия категорий откуда то ещё и если они нужны, то возможно нужно будет ещё таблицу категорий товаров.
Да магазин один, точнее витрина магазина. Категорийность сохранить по моему мнению важно, хотя бы для того чтоб сортировать товары, но я возможно не прав это мой первый разбор.
Редактировалось: 1 раз (Последний: 31 июля 2013 в 16:26)
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
VopisUVD:
то есть товары по категориям нет смысла разбивать?
Одна таблица для товаров, не важно в каких они категориях.
Для категорий, я так понял названия категорий вы не получаете? Только id и id родительской категории. Соотвественно, как будете выводить категории? Ну, в крайнем случае можно состряпать свою таблицу соответствия названия категории и id. Названия категорий, думаю не меняют же? Плюс можно добавить сеолинки, настройки категории и.т.д. Если справитесь со всем этим, то можно подумать и о создании таблицы(одной) категорий в БД.
Хватит париться, живи как нравится!
Посетитель
small user social cms
Медаль
Сообщений: 296
Марат:
я так понял названия категорий вы не получаете?
Почему, вот он
<categories>
<category id="2517" parentId="2515">Категории</category>
<category id="2017" parentId="2115">Категории</category>
</categories>
их 21 категория на настоящий момент

Марат:
можно добавить сеолинки, настройки категории и.т.д.
оно в моем понимании ни к чему... Так как линки не должны индексироваться, они ведут на сайт основного магазина...
Модератор
small user social cms
МедальКубок зрительских симпатийПочетный донор проекта
Сообщений: 964
VopisUVD:
Почему, вот он
Виноват, пропустил. Тогда есть резон делать отдельно и таблицу категорий.
VopisUVD:
оно в моем понимании ни к чему... Так как линки не должны индексироваться, они ведут на сайт основного магазина...
Ну, мало ли какая необходимость может возникнуть в будущем.
Хватит париться, живи как нравится!
Посетитель
small user social cms
Медаль
Сообщений: 296
В model.php вставляем добавление таким образом?
Спойлер
Предварительно еще нужно создать таблицы в базе?

Выдает ошибку Parse error: syntax error, unexpected ')', expecting '&' or T_VARIABLE
Редактировалось: 2 раз (Последний: 31 июля 2013 в 19:45)
Посетитель
small user social cms
Медаль
Сообщений: 296
Создание таблицы категории
Код PHP:
  1. CREATE TABLE `cms_topshop_category` (
  2. `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
  3. `category` VARCHAR( 300 ) NOT NULL ,
  4. `categoryId` INT NOT NULL ,
  5. `parentId` INT NOT NULL ,
  6. INDEX ( `categoryId` )
  7. ) ENGINE = MYISAM ;
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
VopisUVD:
`category` VARCHAR( 300 ) NOT NULL ,
вар чар максимум может быть 255
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
VopisUVD:
$sql = "INSERT INTO cms_topshop (category, categoryId,)
VALUES ('{$category}', '{$categoryId}', NOW())";
Вот тут выдаст ошибку 3 колонка NOW() - используется для даты и времени. и лишняя запитая

запрос должен быть так:
Код PHP:
  1. $sql = "INSERT INTO cms_topshop (category, categoryId)
  2. VALUES ('{$category}', '{$categoryId}'";
или так:
Код PHP:
  1. $sql = "INSERT INTO cms_topshop (category, categoryId, date_pub)
  2. VALUES ('{$category}', '{$categoryId}', NOW())";
в это случае в таблице должна быть колонка date_pub
Посетитель
small user social cms
Медаль
Сообщений: 296
Димитриус:
VALUES ('{$category}', '{$categoryId}'";
Должно быть без закрывающей скобки? Или все таки так:
VALUES ('{$category}', '{$categoryId}')";
Да про дату не знал почистил
Димитриус:
вар чар максимум может быть 255
Возможно я использую не правильный параметр... Какой больше подойдет для наименования категории?
Посетитель
small user social cms
МедальКубок зрительских симпатийАвторитет форума
Сообщений: 1224
Это я уже проморгал) конечно должно быть)
Посетитель
small user social cms
Медаль
Сообщений: 296
Димитриус:

Это я уже проморгал) конечно должно быть)
К сожалению все равно ошибку выдает... что и раньше, пробую дальше копать)))

PS: Все сам пропустил лишнюю зпт
Редактировалось: 1 раз (Последний: 31 июля 2013 в 21:47)
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.