|
|
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
Проектирую EAV БД интернет-магазина: // Товаров products ( product_id [PK], product_group_id [FK], ...) // Группы товаров products_groups ( product_group_id [PK], ...) // Атрибуты групп товаров groups_attributes ( group_attribute_id [PK], product_group_id [FK], ...) // EAV attributes_values ( string_atribute_value_id [FK], product_id [FK], string_value_id [FK]) // Целочистенные значения атрибутов integer_values ( id [PK], value) // Дробные значения атрибутов float_value ( id [PK], value) // Строковы значения атрибутов string_values ( id [PK], value) Нормальная ли такая схема? Модератор: Тема перенесена из форума "Microsoft SQL Server". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 14:43 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
я в плане того, хорошо ли хранить не само значение атрибута, а value_id, т.е., например, не: integer_attributes_values ( string_atribute_value_id [FK], product_id [FK], value) а: attributes_values ( string_atribute_value_id [FK], product_id [FK], value_id [FK]) integer_values ( id [PK], value) Как будет лучше для поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 15:14 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
Error-Code-0xDEADBEEFКак будет лучше для поиска? Для хорошего поиска EAV лучше не использовать Error-Code-0xDEADBEEFхорошо ли хранить не само значение атрибута, а value_id Честно говоря особого смысла не вижу. Не забудьте, что вам придется обеспечивать уникальность value_id для совокупности всех таблиц с атрибутами. К тому же схема усложнится лишний раз, и запросы станут более громоздкими. Храните все атрибуты как строки переменной длины :-). Поиск по строками идет хорошо, + индексов потребуется меньше, да и потери на хранение строк по сравнению с другими типами не такие уж и большие, если не сказать, что их не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 15:48 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
Error-Code-0xDEADBEEFПроектирую EAV БД интернет-магазина: product_group_id - это тоже атрибут все атрибуты можно хранить как строковые типы атрибутов - строка, число, дата, ссылка на справочник, список группы товаров - иерархический справочник справочников м.б. много разных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 15:51 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
_мод, а если атрибут списковый с выбором нескольких значений, как лучше хранить его items и выбранные значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:14 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
Error-Code-0xDEADBEEF_мод, а если атрибут списковый с выбором нескольких значений, как лучше хранить его items и выбранные значения? Так это и есть справочник. Значение атрибута - ид этого справочника ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 16:28 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
Arm79Храните все атрибуты как строки переменной длины :-). Поиск по строками идет хорошо, + индексов потребуется меньше, да и потери на хранение строк по сравнению с другими типами не такие уж и большие, если не сказать, что их не будет. Поиск на полное совпадение по строкам идет хорошо. Мало того что поиск "все элементы, у которых цена больше 100" вгонит такую систему в аут, так даже с поиском "все элементы, у которых цена равна 100" возникнут проблемы, если в базе будет '100.00'. Для любителей EAV и единой таблицы значений в SQL Server есть тип sql_variant. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2013, 17:06 |
|
||
|
EAV БД
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинМало того что поиск "все элементы, у которых цена больше 100" вгонит такую систему в аут, так даже с поиском "все элементы, у которых цена равна 100" возникнут проблемы, если в базе будет '100.00'. 1. Индекс по значению 2. Значения преобразуются к единому виду, а только потом сравниваются. Т.е. 100 -> 100.00 и сравнение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.10.2013, 10:12 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=34&tid=1541098]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 162ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...