Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура таблицы товаров? Крупный проэкт / 25 сообщений из 33, страница 1 из 2
20.05.2010, 20:49
    #36640253
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Здравствуйте.

Нужно создать таблицу(ы) товаров с неограниченным(большим запасом) свойств.
Собственно что я надумал:

Основная таблица объектов (item)
id (autoincrement)
site_id (index)
name varchar [наименование]
description varchar [описание]
text text [полное описание]
price int [основная цена]
status enum (index) [статус:on|off]

Таблица свойств (feature)
id (index)
site_id (index)
name varchar [название]
type enum [тип:строка|текст|число|ссылка на файл]
status enum (index) [статус:on|off]

Таблица значений свойств и связка с объектом
id_item (index)
id_feature (index)
value_i int [число]
value_v varchar [строка|ссылка на файл]
value_t text [текст]

Ну вот как-то так. Боюсь что последняя таблица будет просто огромной (может последнюю таблицу разбить на разные таблицы по типу). Да и всё это не совсем как лучше дергать, чтоб дешевле было. Сайтов сейчас порядка 100 и еще будет больше, у каждого сайта от 100 до 1000 товаров. И товары разнообразные, т.е. таблица должна быть универсальной.

С уважением Александр.
...
Рейтинг: 0 / 0
20.05.2010, 21:26
    #36640284
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgs, а вы из беларуси, что у вас цена INT?

А вообще тема часто обсуждаемая тут.
http://www.sql.ru/forum/actualthread.aspx?tid=736284&hl=%e2%e5%f0%f2%e8%ea%e0%eb%fc
http://www.sql.ru/forum/actualthread.aspx?tid=685384&hl=%e2%e5%f0%f2%e8%ea%e0%eb%fc%ed%e0%ff
...
Рейтинг: 0 / 0
20.05.2010, 21:37
    #36640299
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
mahouneclgs, а вы из беларуси, что у вас цена INT?

[...]
Не столь важно, да и это на рабочий вариант. А за линки спасибо буду изучать...
...
Рейтинг: 0 / 0
21.05.2010, 11:39
    #36641052
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Ну база как-то так получилось. Сейчас буду наполнять и проверять.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
-- 
-- Структура таблицы `product` собственно самы товары
-- 

CREATE TABLE `product` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `name` varchar( 100 ) NOT NULL, # наименование
  `description` varchar( 255 ) NOT NULL, # краткое описание
  `price` float NOT NULL, # основная цена в у.е.
  `status` tinyint( 1 ) unsigned default '1', # статус (основные  0 , 1 , расширяется  2 , 3 , 4 ...) > 0  выводятся
  PRIMARY KEY  (`id`),
  KEY `sid` (`sid`,`price`,`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT= 1  ;


-- --------------------------------------------------------

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

CREATE TABLE `product_status` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `name` varchar( 50 ) NOT NULL, # наименовае статуса
  PRIMARY KEY  (`id`),
  KEY `sid` (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT= 1  ;


-- --------------------------------------------------------

-- 
-- Структура таблицы `product_feature` свойства
-- 

CREATE TABLE `product_feature` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `name` varchar( 100 ) NOT NULL, # наименование
  `ftid` int( 10 ) unsigned NOT NULL, # id типа свойства
  `status` tinyint( 1 ) unsigned default '1', # статус ( 0 , 1 ) > 0  выводятся
  PRIMARY KEY  (`id`),
  KEY `sid` (`sid`,`status`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT= 1  ;


-- --------------------------------------------------------

-- 
-- Структура таблицы `product_feature_type` типы свойств
-- 

CREATE TABLE `product_feature_type` (
  `id` int( 10 ) unsigned NOT NULL auto_increment,
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `table` varchar( 30 ) NOT NULL, # имя таблицы и тип
  PRIMARY KEY  (`id`),
  KEY `sid` (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT= 1  ;


-- --------------------------------------------------------

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

CREATE TABLE `product_float` (
  `pid` int( 10 ) unsigned NOT NULL, # id продукта
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `fid` int( 10 ) unsigned NOT NULL, # id свойства
  `value` float NOT NULL,
  KEY `pid` (`pid`,`sid`,`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


-- --------------------------------------------------------

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

CREATE TABLE `product_int` (
  `pid` int( 10 ) unsigned NOT NULL, # id продукта
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `fid` int( 10 ) unsigned NOT NULL, # id свойства
  `value` int( 18 ) NOT NULL, # значение
  KEY `pid` (`pid`,`sid`,`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


-- --------------------------------------------------------

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

CREATE TABLE `product_string` (
  `pid` int( 10 ) unsigned NOT NULL, # id продукта
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `fid` int( 10 ) unsigned NOT NULL, # id свойства
  `value` varchar( 255 ) NOT NULL, # значение
  KEY `pid` (`pid`,`sid`,`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


-- --------------------------------------------------------

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

CREATE TABLE `product_text` (
  `pid` int( 10 ) unsigned NOT NULL, # id продукта
  `sid` int( 10 ) unsigned NOT NULL, # id сайта
  `fid` int( 10 ) unsigned NOT NULL, # id свойства
  `value` text NOT NULL, # значение
  KEY `pid` (`pid`,`sid`,`fid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


Подразумивается что вложенность (оно же тип товара) прописывается в отдельной таблице (один ко многим)
...
Рейтинг: 0 / 0
21.05.2010, 12:08
    #36641121
ScareCrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
авторСайтов сейчас порядка 100 и еще будет больше, у каждого сайта от 100 до 1000 товаров
сто тысяч записей - это ОГРОМНАЯ таблица??? смеялсо.
то что ты придумал это EAV - стуктура хранения такая. в советской россии называется "Схема Тенцера"
...
Рейтинг: 0 / 0
21.05.2010, 12:19
    #36641159
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgs,

Как взаимосвязаны между собой сайты?
...
Рейтинг: 0 / 0
21.05.2010, 12:25
    #36641182
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
ScareCrow[...]
сто тысяч записей - это ОГРОМНАЯ таблица??? смеялсо.
[...]

clgs[...]
Боюсь что последняя таблица будет просто огромной (может последнюю таблицу разбить на разные таблицы по типу).
[...]
Сайтов сейчас порядка 100 и еще будет больше, у каждого сайта от 100 до 1000 товаров. [...]

Я говорил относительно таблицы товаров. А теперь считаем внимательно и читаем тоже)
100*1000*50 = 5 000 000 свойств. Про них я и говорил. И это только начало. Хотя Вы правы, не очень то и большая.
...
Рейтинг: 0 / 0
21.05.2010, 12:26
    #36641188
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
miksoftclgs,

Как взаимосвязаны между собой сайты?

Не как. А тожнее используют один движек (SaaS)
...
Рейтинг: 0 / 0
21.05.2010, 12:30
    #36641210
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgsmiksoftclgs,

Как взаимосвязаны между собой сайты?

Не как. А тожнее используют один движек (SaaS)Тогда я бы на вашем месте рассмотрел вариант хранения данных не в одной таблице, а посхемно (т.е. 100 databases с одинаковыми по структуре таблицами). Для администрирования (репликации, бэкапы, права доступа, блокировки и т.п.) может оказаться значительно удобнее.
...
Рейтинг: 0 / 0
21.05.2010, 12:35
    #36641233
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgs,

Задача, случаем не учебная?
А то, может, зря мы тут придираемся?
...
Рейтинг: 0 / 0
21.05.2010, 12:48
    #36641282
mahoune
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Думаю нет...
Очень правдоподобно выглядит.
...
Рейтинг: 0 / 0
21.05.2010, 12:59
    #36641328
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
mahouneОчень правдоподобно выглядит.Это кому как :)
Немалый ряд категорий товаров с такой структурой таблиц не продашь. А поскольку у топикстартера происходит попытка простроить SaaS, то ему нужна весьма универсальная структура, до которой еще далеко.
...
Рейтинг: 0 / 0
21.05.2010, 13:04
    #36641351
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
miksoftclgs,
Задача, случаем не учебная?
А то, может, зря мы тут придираемся?

2miksoft , Во первых, чтение чужих мыслей зря не бывает, если это не шизофреник). Нет, не учебная. Суть следущая, есть SaaS проэкт, под каждый сайт создаём по требованию таблицы вручную и шаблон для вывода. Потом добавления, редактирования... Работы хватает... Собственно всё это нужно возлажить на самого заказчика, при минимальных увеличениях нагрузки на сервера.
...
Рейтинг: 0 / 0
21.05.2010, 13:06
    #36641363
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
miksoft[...]Немалый ряд категорий товаров с такой структурой таблиц не продашь. А поскольку у топикстартера происходит попытка простроить SaaS, то ему нужна весьма универсальная структура, до которой еще далеко.
Поэтому этот вопрос попал на обсуждения в массы. А не в узком круку с узким мышлением.
...
Рейтинг: 0 / 0
21.05.2010, 13:09
    #36641379
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgsПоэтому этот вопрос попал на обсуждения в массы. А не в узком круку с узким мышлением.Чтобы масса была больше - перенесу топик.
Тем более, что тема весьма баянистая и не MySQL-специфичная.

Модератор: Тема перенесена из форума "MySQL".
...
Рейтинг: 0 / 0
22.05.2010, 01:23
    #36642797
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Вот что пришло на ум.

product - Продукты
product_group - Группы продуктов
product_in_group - Связь групп и продуктов
product_status - Дополнительные статусы продукта (Может не использоваться)
product_feature - Связь характеристики продукта с типом, группой и данными
product_feature_type - Тип характеристики (Содержит название, способа хранения|отображения и статус показывать фильтр по этому полю или нет)
product_feature_group - Наименование группы характеристик и статус (Может не использоваться. Если выключена то не показывается вся группа. Как эти характеристики)
product_feature_* - Таблица данных

Ваши "придирки"?
...
Рейтинг: 0 / 0
23.05.2010, 09:22
    #36643656
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgs,

Продукты могут входить в несколько групп?

Если нет, то product_in_group лишняя.
...
Рейтинг: 0 / 0
23.05.2010, 09:37
    #36643663
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Cat2clgs,

Продукты могут входить в несколько групп?

Если нет, то product_in_group лишняя.

Могут, а могут и не могут :)
Т.е. нужно учесть два варианта, и еще оптимально по нагрузки.
...
Рейтинг: 0 / 0
23.05.2010, 09:42
    #36643667
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Забыл добавить. Тут вопрос стоит в другом, интересует универсальность по полям (характеристикам).
Думаю для оптимизации, организовать группы, т.е. таблица для групп данных (например: группа цена[цена розничная, оптовая, крупно оптовая, для дилеров], т.е. такие данные которые нет смысла разделять и хранить по отдельности), ну и оставить таблицы для одиночных данных.
...
Рейтинг: 0 / 0
23.05.2010, 10:05
    #36643680
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgs,

Вам уже написали что это "схема по Тенцеру"?
...
Рейтинг: 0 / 0
23.05.2010, 11:50
    #36643762
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
Cat2,

Да, писали.
...
Рейтинг: 0 / 0
23.05.2010, 14:29
    #36643882
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgsCat2,

Да, писали.
Тогда решайте что будет лучше.

1. Не думать о задаче , сделать универсальные справочники по Тенцеру которые смогут отразить любые требования но и навсегда убить эффетивность запросов

2. Тщательно продумать задачу, отмести ненужные требования и сделать эффективную базу, но в то же время ожидать, что изменение условий потребует изменений таблиц в базе и пренедалки интерфейсов.

Решать Вам. Панацеи нет.
...
Рейтинг: 0 / 0
23.05.2010, 18:48
    #36644053
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgs,

А вам никогда не приходило в голову, что листовая (не имеющая подгрупп) группа товаров - это подмножество товаров, обладающих сходным набором характеристик?

Попутно - характеристики могут быть справочными и фильтрационными (не знаю правильный термин, суть в том, что они могут использоваться для отбора/фильтрации товаров), могут быть с фиксированным перечнем значений и без такового (для таковых, имхо, лучше построить отдельную подсистему таблиц). Так нередко бывает нужен числовой эквивалент характеристики для фильтрации по диапазону. В случае, если нужна сортировка значений характеристики, отличная от алфавитной и отличная от сортировки по числовому значению, может быть нужно отдельное значение для сортировки.
...
Рейтинг: 0 / 0
23.05.2010, 19:43
    #36644088
clgs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
miksoft,

1. Поэтому думаю организовать таблицы групповых данных (писал выше), т.е. в одной таблице сразу несколько характеристик.

2. Для сортировки и фильтрации - Числовой эквивалент строковой характеристики можно указать в таблице product_feature_type ; А вот с перечнем я совсем забыл, в туже таблицу добавить линк на другую таблицу со списком доступных характеристик.
miksoftclgs,
[...] В случае, если нужна сортировка значений характеристики, отличная от алфавитной и отличная от сортировки по числовому значению, может быть нужно отдельное значение для сортировки.
Если не сложно, объясните пожалуйста.
...
Рейтинг: 0 / 0
23.05.2010, 21:17
    #36644189
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Структура таблицы товаров? Крупный проэкт
clgsmiksoft,

1. Поэтому думаю организовать таблицы групповых данных (писал выше), т.е. в одной таблице сразу несколько характеристик.Вы неправильно поняли мою мысль. В ваших терминах, я говорил о взаимосвязи между таблицами product_group и какой-то из таблиц с характеристиками (не могу понять, какая из них содержит справочник характеристик.)
clgsmiksoftclgs,
[...] В случае, если нужна сортировка значений характеристики, отличная от алфавитной и отличная от сортировки по числовому значению, может быть нужно отдельное значение для сортировки.
Если не сложно, объясните пожалуйста.Может, примеры не лучшие, но попробую:
1) сувениры по знакам зодиака - лучше сортировать по их хронологическому порядку;
2) цвета каких-либо предметов - бывает нужно сортировать по некоторой палитре.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Структура таблицы товаров? Крупный проэкт / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]