powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Товары с разными характеристиками
25 сообщений из 66, страница 2 из 3
Товары с разными характеристиками
    #39226149
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще вариант с наследованием :
продукт принадлежит одной из групп
группа определяет набор свойств продукта

PRODUCTS
----------------
product_id (PK)
group_id (FK)
product_name

GROUPS
--------------
group_id (PK)
group_name

PROPERTIES
------------------
property_id (PK)
group_id (FK)
property_name

PRODUCTS_PROPERTIES
-----------------------------------
product_id (FK, PK1)
property_id (FK, PK1)
property_value

получился у меня EAV (в PRODUCTS_PROPERTIES) ?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227147
hwt0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за ответы !! Вы реально помогли !


Вот исправленная таблица с наследованием. Теперь все верно?

Но как вычитал для MySQL это не подходит (т.к СУБД не поддерживает наследование), т.е. одни и те же данные из goods можно добавить одновременно и в printers и в mobile.(А должно как я описывал выше только для одного товара одна характеристика и если задана, то во вторую уже нельзя добавить ). Тогда делать, как предложили tip78 ?

Если сделать как говорит tip78 (как понял это модель EAV), то , что в таблице props2goods, будет содержаться по 10, 20 …. 1000 записей такое типа:

1 1 2 red
2 1 3 red
3 1 5 red
4 1 7 red
5 1 9 red

Это нормально? В таблице props2goods, часто будут повторяться название характеристики, так и должно быть ?


И последнее , как понял модель EAV часто используется в рабочих проектах (если брать в расчет то, что используется MySQL) ?

авторя поддержу tip78 и проголосую за old school и стандартные структуры :)

Правильно ли я понял, что это либо EAV либо как я написал в первом посте (где в таблице будет много NULL) ?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227164
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0Всем спасибо за ответы !! Вы реально помогли !


Вот исправленная таблица с наследованием. Теперь все верно?

Но как вычитал для MySQL это не подходит (т.к СУБД не поддерживает наследование), т.е. одни и те же данные из goods можно добавить одновременно и в printers и в mobile.(А должно как я описывал выше только для одного товара одна характеристика и если задана, то во вторую уже нельзя добавить ). Тогда делать, как предложили tip78 ?

"не поддерживает наследование" - это значит "нет специальных конструкций для реализации наследования". Реализовывать наследование "вручную", просто вставляя данные поочередно в 2 таблицы, Вам все равно помешать никто не может.
Если Вам важен контроль на уровне БД отсутствия дублей - Вы можете реализовать его либо с помощью триггера, либо составным ключом и ограничением check. В любом случае с контролем целостности данных в EAV все гораздо хуже.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227165
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0 В таблице props2goods, часто будут повторяться название характеристики, так и должно быть ?Ну там может быть не только название, а например код или айди.
hwt0 понял модель EAV часто используется в рабочих проектахиз-за недостаточного знания предметной области свойства объектов часто добавляются и удаляются. При этом данных в таких таблицах немного.
В эксплуатации, однако, это выходит боком.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227220
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинВ любом случае с контролем целостности данных в EAV все гораздо хуже.Проблемы есть, но они легко решаемы.
Вполне достаточно при сохранении/удалении вызывать некую ф-цию, кот. проверит соответствие данных бизнес-правилам и разрешит или отклонит действие.
Ставить триггеры/констрайнты глупо. Они ничего не решают. Только мешают. :)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227236
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVКот МатроскинВ любом случае с контролем целостности данных в EAV все гораздо хуже.Проблемы есть, но они легко решаемы.
Вполне достаточно при сохранении/удалении вызывать некую ф-цию, кот. проверит соответствие данных бизнес-правилам и разрешит или отклонит действие.
На уровне БД - нет, при доступе стороннего клиента все полетит к черту.
А функцию можно вызывать хоть при сохранении в текстовые файлы - это не значит что при хранении в текстовых файлах все прекрасно с целостностью данных.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227254
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0,
авторПравильно ли я понял, что это либо EAV либо как я написал в первом посте (где в таблице будет много NULL) ?


нет неправильно, таблица в первом посте это нопасаран. без вариантов.
про EAV ничего сказать не могу, т.к. не совсем понимаю, что это такое
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227260
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab
про EAV ничего сказать не могу, т.к. не совсем понимаю, что это такое

19114706 - это и есть EAV, самый "классический", на 4х таблицах.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227275
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,
спасибо!
учитывая, что мои знания про EAV ограничиваются расшифровкой аббревиатуры, рада, что у меня получилось :)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227323
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинLSVпропущено...
Проблемы есть, но они легко решаемы.
Вполне достаточно при сохранении/удалении вызывать некую ф-цию, кот. проверит соответствие данных бизнес-правилам и разрешит или отклонит действие.
На уровне БД - нет, при доступе стороннего клиента все полетит к черту.
А функцию можно вызывать хоть при сохранении в текстовые файлы - это не значит что при хранении в текстовых файлах все прекрасно с целостностью данных.Дык дайте клиенту ХП, кот. делает нужную операцию: редактирует/удаляет и пр.
ХП всегда отработает одинаково.
Ниодну БД невозможно защитить от порчи данных сторонним ПО, имеющим доступ на запись.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227366
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSVКот Матроскинпропущено...

На уровне БД - нет, при доступе стороннего клиента все полетит к черту.
А функцию можно вызывать хоть при сохранении в текстовые файлы - это не значит что при хранении в текстовых файлах все прекрасно с целостностью данных.Дык дайте клиенту ХП, кот. делает нужную операцию: редактирует/удаляет и пр.

Это и называется "с целостностью данных все очень плохо".
"В нашей гостинице нет проблем с удобствами - биотуалет и тазик можно привезти с собой, а воду набрать на колонке в соседнем квартале!".
Если так рассуждать - то да, проблем с целостностью у EAV нет :)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227416
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЕсли так рассуждать - то да, проблем с целостностью у EAV нет :)
что за проблемы то, можете пример привести?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227419
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0Если сделать как говорит tip78 (как понял это модель EAV), то , что в таблице props2goods, будет содержаться по 10, 20 …. 1000 записей такое типа:

1 1 2 red
2 1 3 red
3 1 5 red
4 1 7 red
5 1 9 red

Это нормально? В таблице props2goods, часто будут повторяться название характеристики, так и должно быть ?
есессно, у них ведь разные родители
если одного родителя удалят, он заберёт с собой свою запись, а не чужую
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227452
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Кот МатроскинЕсли так рассуждать - то да, проблем с целостностью у EAV нет :)
что за проблемы то, можете пример привести?

Например, реализация ограничения not null для атрибута.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227462
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинtip78пропущено...

что за проблемы то, можете пример привести?

Например, реализация ограничения not null для атрибута.
это валидация формы при сабмите, делается в самом PHP
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227477
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,
задание ограничения NOT NULL в базе не подойдет?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227501
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabКот Матроскин,
задание ограничения NOT NULL в базе не подойдет?Не пойдет т.к. речь про конкретный атрибут.
Вообще говоря хранить EAV-запись с NULL - бред. Достаточно просто ее удалить. Не ? :)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227509
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Кот Матроскинпропущено...


Например, реализация ограничения not null для атрибута.
это валидация формы при сабмите, делается в самом PHP
Я про это и говорю - декларативными ограничениями в базе при EAV этого сделать нельзя.
(и даже программными - непросто)
Мы тут все-таки на PHP обсуждаем :)

mini.weblab задание ограничения NOT NULL в базе не подойдет?
Нет, конечно - работать не будет. Для какого поля в Вашей структуре надо задать NOT NULL, чтобы любой продукт обязательно имел заполненный атрибут "Цвет"?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227510
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LSV,
если я задам ограничение в базе, вы просто туда не сможете внести записи с пустым значением атрибута
стирать ничего не придется
не?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227526
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,
я говорила о таблице PRODUCTS_PROPERTIES и буду прописывать ограничение NOT NULL на property_value

PRODUCTS_PROPERTIES
-----------------------------------
product_id (FK, PK1)
property_id (FK, PK1)
property_value


авторНет, конечно - работать не будет. Для какого поля в Вашей структуре надо задать NOT NULL, чтобы любой продукт обязательно имел заполненный атрибут "Цвет"?

в моей структуре просто оговаривается множество свойств для продуктов группы
структура не обязывает прописывать каждое свойство для каждого продукта
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227533
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabКот Матроскин,
я говорила о таблице PRODUCTS_PROPERTIES и буду прописывать ограничение NOT NULL на property_value

PRODUCTS_PROPERTIES
-----------------------------------
product_id (FK, PK1)
property_id (FK, PK1)
property_value


авторНет, конечно - работать не будет. Для какого поля в Вашей структуре надо задать NOT NULL, чтобы любой продукт обязательно имел заполненный атрибут "Цвет"?

в моей структуре просто оговаривается множество свойств для продуктов группы
структура не обязывает прописывать каждое свойство для каждого продукта
Еще раз - я хочу прописать в базе, что нельзя создать продукт без заполненного свойства "цвет".
В традиционной структуре мне для этого нужен один щелчок мышки. Что мне делать в Вашей структуре?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227538
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Довольно часто встречаются приложения, построенные с использованием универсальных моделей данных для максимальной гибкости, и приложения, построенные так, что они мешают работе. Например, хорошо известно, что можно представить любой объект в базе данных используя только четыре таблицы:

create table objects (oid int pimary key, name varchar2(255));
create table attributes (attrid int primary key, attrname varchar2(255),
datatype varchar2(25));
create table object_attributes (oid int, attrid int, value varchar2(4000),
primary key (oid,attrid));
create table links (oid1 int, oid2 int, primary key (oid1, oid2));

Но как такая модель работает ? Простой запрос select first_name, last_name from person трансформируется в соединение трех таблиц с аггрегированием, более того, если имеются атрибуты NULLABLE - в таком случае может не быть строки в таблице object_attributes для некоторых атрибутов, - возможно, возникнет необходимость использовать внешнее соединение, которое может исключить оптимальные планы запросов из рассмотрения.

Мой совет всем: будьте более специализированы м менее универсальными. Несомненно, общий подход более гибкий, но менее производительный, более сложный, с точки зрения формирования запросов и сопровождения. Не используется словарь данных и метаданные. Те, кто применяет универсальный подход, загоняют себя в угол."

(с) Том Кайт "Эффективное проектирование приложений Oracle"
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227539
LSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabLSV,
если я задам ограничение в базе, вы просто туда не сможете внести записи с пустым значением атрибута
стирать ничего не придется
не?Этого не достаточно. Пустота - сложное понятие.
Один пробел это пустота ?
А ноль (для чисел) пустота ?
Комплексная проверка ввода - непростое понятие. Пустота - самый простой случай.

Самое интересное - запрет ввода недопустимых значений. Во где все приколы. :)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227548
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,
кстати, работала с EAV данными: и то, что
авторлюбой продукт НЕ обязательно имеЕТ заполненный атрибут "Цвет"?
достоинство структуры, а не недостаток
все дело в том, какую задачу вы хотите решаете
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39227551
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинЕще раз - я хочу прописать в базе, что нельзя создать продукт без заполненного свойства "цвет".
В традиционной структуре мне для этого нужен один щелчок мышки. Что мне делать в Вашей структуре?
очевидно, не использовать мою структуру :)
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Товары с разными характеристиками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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