powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Товары с разными характеристиками
25 сообщений из 66, страница 1 из 3
Товары с разными характеристиками
    #39223111
hwt0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте, помогите понять, как правильно сделать схему базы данных.
Суть в том, что есть разные типы товара с разными характеристиками, если сделать как у меня на схеме , то всегда будут оставаться поля со значение NULL того или иного типа товара( как я понимаю так делать не нужно ) или все-таки это не так критично ?
Алгоритм работы простой, человек оформляет заявку , выбирает из базы соответствующий товар(принтер, мобильник и так далее) .
П.С. схема никакая не дипломная\курсавая , просто разобраться хочу. Схема нарисована для примера.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223125
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0если сделать как у меня на схеме , то всегда будут оставаться поля со значение NULL того или иного типа товара( как я понимаю так делать не нужно ) или все-таки это не так критично ?
Пока все атрибуты умещаются по количеству в одну таблицу - не так критично.
Можно делать наследование - т.е. таблицу "товары" и несколько дочерних таблиц "мобильники", "принтеры" и т.п. с ссылкой на главную таблицу "товары".
В "товарах" у Вас будет
IDНазвание1 Мобильник IPHONE2 Принтер Canon, а в дочерних - по одной записи с соответствующими характеристиками
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223152
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0всегда будут оставаться поля со значение NULL того или иного типа товара( как я
понимаю так делать не нужно )
Дейта начитался? Тогда тебе прямая дорога к EAV.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223176
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0,
я сделала бы так:

ORDERS:
-------------
order_id
product_id (FK)
date
product_name

PRODUCTS
-------------
product_id
product_name
product_description

комментарий: в поле product_description помещаем свойства продукта
допустим нас это по каким-то причинам не устраивает, тогда можно перейти к 4НФ, схема следующая:

ORDERS:
-------------
order_id
product_id (FK)
date
product_name

PRODUCTS
-------------
product_id
product_name

PROPERTIES
-------------
property_id
product_id (FK)
property_name
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223177
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,
EAV это то же, что и BCNF?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223257
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддержу Матроскина, а для разобраться поищите на этом форуме реализацию наследования с одной, двумя и тремя таблицами.
А также в каких условиях та или иная реализация будет выгодной.
mini.weblab EAV это то же, что и BCNF?Совсем разные вещи
https://en.wikipedia.org/wiki/Boyce–Codd_normal_form
https://en.wikipedia.org/wiki/Entity–attribute–value_model
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223264
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0Здравствуйте, помогите понять, как правильно сделать схему базы данных.
это всю жизнь было так:
таблица товаров (goods) + таблица названий свойств (prop_name) + таблица свойств товаров (props2goods)
вы просто в товар набираете нужные свойства + их кол-во
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223278
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0,
тебе надо изучать подкатегории, оно же Наследование.
найди что типа "subcategory relationship"

достаточно хорошо всё это очень в документации на hibernate, Там можно почитать
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39223444
hwt0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за ответы!

Таблица goods имеет отношения с таблицей mobile (idgoods - idmobile) оба они первичные ключи.
Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи.
Ну и так далее….
Размещаться данные будут так.

Category
Id | name
1 | принтеры
2 | мобильники
3 | телики

Goods

Id | name | id category
1 | Laserjet Pro 232 | 1
2 | Laserjet Pro 282 | 1
3 | Iphone 5s | 2
4 | Laserjet Pro 112 | 1
5 | UE22H5600 | 3

Printers
Id | Interface
1 | 1
2 | 1
4 | 2

Mobile
Id | colorId
3 | 1

Televisor

Id | diagonal
5 | 2

Записать характеристику в таблице mobile, televisor, printers можно только только тогда, когда в таблице goods есть не при присвоенная запись к одной из записи 3-х этих таблиц (mobile, televisor, printers ).

Правильно ли я понял идею с наследованием ?
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39224996
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hwt0Правильно ли я понял идею с наследованием ?

нет
Printers, Mobile и Televisor это 1 таблица, таблица названий свойств - `prop_name`
она содержит вообще все возможные св-ва в магазине
содержимое этих свойств в каждом товаре это другая таблица - `props2goods`
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225005
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78hwt0Правильно ли я понял идею с наследованием ?

нет
Printers, Mobile и Televisor это 1 таблица, таблица названий свойств - `prop_name`
она содержит вообще все возможные св-ва в магазине
содержимое этих свойств в каждом товаре это другая таблица - `props2goods`

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


нет
Printers, Mobile и Televisor это 1 таблица, таблица названий свойств - `prop_name`
она содержит вообще все возможные св-ва в магазине
содержимое этих свойств в каждом товаре это другая таблица - `props2goods`

Не надо путать человека - паттерн "наследование" он понял совершенно правильно.
не знаю, что вы там поняли, но лично я читаю его таблицы и вижу, что они неправильные
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225169
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78 лично я читаю его таблицы и вижу, что они неправильные Да мы уже поняли что ты фанат EAV
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225208
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Кот Матроскинпропущено...


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

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

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

Отношения на схеме - да, отношения между goods и printers/mobiles/... должны быть 1:0..1, а не 1:n. Но это, видимо, просто ошибка в схеме, написал-то ТС правильно
Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи.

tip78 неправильно разбивать каждую группу товаров по отдельным таблицам свойств
у него принтеры это одна таблица свойств, мобильники - другая, итд
Еще раз - это называется "наследование типов". Погуглите.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225347
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,
Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи.

вообще-то, idgoods это FK
(в общем должно быть весело)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225353
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblab,

В какой таблице idgoods - FK? я говорил про goods и printers/mobiles/...
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225393
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,
я думала, что
idgoods в таблице goods будет FK по отношению к соотв. id в таблицах printers, mobile, televisor

хотя
авторотношения между goods и printers/mobiles/... должны быть 1:0..1
по-вашему получается, что свойства вы будете хранить не для всех товаров...
в любом случае, без foreign key не обойтись (обеспечение целостности данных)
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225429
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mini.weblabКот Матроскин,
я думала, что
idgoods в таблице goods будет FK по отношению к соотв. id в таблицах printers, mobile, televisor

Наоборот - IDPrinter будет FK к IDGoods. Сперва создается запись в goods, потом - в printers
Иначе Вам будет сложно сделать "сквозную" нумерацию товаров.

mini.weblabхотя
авторотношения между goods и printers/mobiles/... должны быть 1:0..1
по-вашему получается, что свойства вы будете хранить не для всех товаров...

Почему - для всех. Но не все товары являются принтерами, поэтому не для каждой записи в goods есть соответствующая запись в printers.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225450
mini.weblab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин,
надеюсь, что делать сквозную нумерацию мне не придется
я поддержу tip78 и проголосую за old school и стандартные структуры :)
в любом случае, работать с базой будет непросто
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225600
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскинmini.weblabотношения между таблицами по-моему неверны

Отношения на схеме - да, отношения между goods и printers/mobiles/... должны быть 1:0..1, а не 1:n. Но это, видимо, просто ошибка в схеме, написал-то ТС правильно
Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи.

tip78 неправильно разбивать каждую группу товаров по отдельным таблицам свойств
у него принтеры это одна таблица свойств, мобильники - другая, итд
Еще раз - это называется "наследование типов". Погуглите.
ну вообще-то называется "наследование таблиц" и... вы сами то вникали?
именно это я и называю "неправильно"
вы выбрали чуть меньший размер БД в ущерб скорости
хотя у ТС магазин и для таких задач важнее скорость
(строго говоря, скорость важнее практически для любых задач, разве что бэкапам пофиг, а размер там дело десятое)
вы бы, на досуге, редис для себя открыли (ваша очередь гуглить), подивились бы, как там дела обстоят с соотношением размер/скорость
но там сжатие например есть, оно чуть спасает
хотя и не особо надо
зато 100к запросов в секунду
расскажите им про наследования...
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225608
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, вот ссылка от IBM
авторFigure 4. Mapping each class to its own data entity
The main advantage of this approach is that it conforms best to object-oriented concepts. It supports polymorphism very well as you merely have records in the appropriate tables for each role that an object might have. It is also very easy to modify superclasses and add new subclasses because you merely need to modify or add one table. There are several disadvantages to this approach. First, there are many tables in the database -- one for every class, in fact (plus tables to maintain relationships). Second, it takes longer to read and write data using this technique because you have to access multiple tables. This problem can be alleviated if you organize your database intelligently by putting each table within a class hierarchy on different physical disk-drive platters (this assumes that each of the disk-drive heads operate independently). Third, ad hoc reporting on your database is difficult, unless you add views to simulate the desired tables.
блабла полиморфизм, нафиг не нужный
читаем про минусы (disadvantages)
автор Second, it takes longer to read and write data using this technique because you have to access multiple tables.
...
Рейтинг: 0 / 0
Товары с разными характеристиками
    #39225678
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Кот Матроскинпропущено...


Отношения на схеме - да, отношения между goods и printers/mobiles/... должны быть 1:0..1, а не 1:n. Но это, видимо, просто ошибка в схеме, написал-то ТС правильно
пропущено...


пропущено...

Еще раз - это называется "наследование типов". Погуглите.
ну вообще-то называется "наследование таблиц" и... вы сами то вникали?
именно это я и называю "неправильно"
вы выбрали чуть меньший размер БД в ущерб скорости

Лолшто? EAV выигрывает по скорости запросов у классических таблиц?
Ну давайте померяем, где будет быстрее работать фильтр, к примеру, по трем атрибутам.

tip78читаем про минусы (disadvantages)
Минусы по сравнению с чем ?
Там в качестве альтернатив рассматриваются подходы "все держать в одной таблице" (то с чего начал ТС) и "сделать по одной таблице на каждый тип, дублируя одинаковые атрибуты". Никакого Вашего
таблица товаров (goods) + таблица названий свойств (prop_name) + таблица свойств товаров (props2goods)
нет в помине.
А по сравнению с этими двумя способами - наследование, конечно, медленнее (хотя и на копейки)
...
Рейтинг: 0 / 0
25 сообщений из 66, страница 1 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Товары с разными характеристиками
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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