|
|
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, помогите понять, как правильно сделать схему базы данных. Суть в том, что есть разные типы товара с разными характеристиками, если сделать как у меня на схеме , то всегда будут оставаться поля со значение NULL того или иного типа товара( как я понимаю так делать не нужно ) или все-таки это не так критично ? Алгоритм работы простой, человек оформляет заявку , выбирает из базы соответствующий товар(принтер, мобильник и так далее) . П.С. схема никакая не дипломная\курсавая , просто разобраться хочу. Схема нарисована для примера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 17:55 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
hwt0если сделать как у меня на схеме , то всегда будут оставаться поля со значение NULL того или иного типа товара( как я понимаю так делать не нужно ) или все-таки это не так критично ? Пока все атрибуты умещаются по количеству в одну таблицу - не так критично. Можно делать наследование - т.е. таблицу "товары" и несколько дочерних таблиц "мобильники", "принтеры" и т.п. с ссылкой на главную таблицу "товары". В "товарах" у Вас будет IDНазвание1 Мобильник IPHONE2 Принтер Canon, а в дочерних - по одной записи с соответствующими характеристиками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 18:20 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
hwt0всегда будут оставаться поля со значение NULL того или иного типа товара( как я понимаю так делать не нужно ) Дейта начитался? Тогда тебе прямая дорога к EAV. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 19:05 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 20:07 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, EAV это то же, что и BCNF? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2016, 20:10 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Поддержу Матроскина, а для разобраться поищите на этом форуме реализацию наследования с одной, двумя и тремя таблицами. А также в каких условиях та или иная реализация будет выгодной. mini.weblab EAV это то же, что и BCNF?Совсем разные вещи https://en.wikipedia.org/wiki/Boyce–Codd_normal_form https://en.wikipedia.org/wiki/Entity–attribute–value_model ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 00:09 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
hwt0Здравствуйте, помогите понять, как правильно сделать схему базы данных. это всю жизнь было так: таблица товаров (goods) + таблица названий свойств (prop_name) + таблица свойств товаров (props2goods) вы просто в товар набираете нужные свойства + их кол-во ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 01:44 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
hwt0, тебе надо изучать подкатегории, оно же Наследование. найди что типа "subcategory relationship" достаточно хорошо всё это очень в документации на hibernate, Там можно почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 06:15 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Всем спасибо за ответы! Таблица 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 ). Правильно ли я понял идею с наследованием ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2016, 21:21 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
hwt0Правильно ли я понял идею с наследованием ? нет Printers, Mobile и Televisor это 1 таблица, таблица названий свойств - `prop_name` она содержит вообще все возможные св-ва в магазине содержимое этих свойств в каждом товаре это другая таблица - `props2goods` ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2016, 17:29 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
tip78hwt0Правильно ли я понял идею с наследованием ? нет Printers, Mobile и Televisor это 1 таблица, таблица названий свойств - `prop_name` она содержит вообще все возможные св-ва в магазине содержимое этих свойств в каждом товаре это другая таблица - `props2goods` Не надо путать человека - паттерн "наследование" он понял совершенно правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2016, 17:45 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинtip78пропущено... нет Printers, Mobile и Televisor это 1 таблица, таблица названий свойств - `prop_name` она содержит вообще все возможные св-ва в магазине содержимое этих свойств в каждом товаре это другая таблица - `props2goods` Не надо путать человека - паттерн "наследование" он понял совершенно правильно. не знаю, что вы там поняли, но лично я читаю его таблицы и вижу, что они неправильные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2016, 21:11 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
tip78 лично я читаю его таблицы и вижу, что они неправильные Да мы уже поняли что ты фанат EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.04.2016, 21:26 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
tip78Кот Матроскинпропущено... Не надо путать человека - паттерн "наследование" он понял совершенно правильно. не знаю, что вы там поняли, но лично я читаю его таблицы и вижу, что они неправильные Расскажите, что в них неправильного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 00:28 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинtip78пропущено... не знаю, что вы там поняли, но лично я читаю его таблицы и вижу, что они неправильные Расскажите, что в них неправильного? неправильно разбивать каждую группу товаров по отдельным таблицам свойств у него принтеры это одна таблица свойств, мобильники - другая, итд не видите чтоли или по-вашему это норма? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 02:18 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, отношения между таблицами по-моему неверны ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 09:31 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
mini.weblabотношения между таблицами по-моему неверны Отношения на схеме - да, отношения между goods и printers/mobiles/... должны быть 1:0..1, а не 1:n. Но это, видимо, просто ошибка в схеме, написал-то ТС правильно Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи. tip78 неправильно разбивать каждую группу товаров по отдельным таблицам свойств у него принтеры это одна таблица свойств, мобильники - другая, итд Еще раз - это называется "наследование типов". Погуглите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 10:33 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи. вообще-то, idgoods это FK (в общем должно быть весело) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 10:42 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
mini.weblab, В какой таблице idgoods - FK? я говорил про goods и printers/mobiles/... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 10:46 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, я думала, что idgoods в таблице goods будет FK по отношению к соотв. id в таблицах printers, mobile, televisor хотя авторотношения между goods и printers/mobiles/... должны быть 1:0..1 по-вашему получается, что свойства вы будете хранить не для всех товаров... в любом случае, без foreign key не обойтись (обеспечение целостности данных) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 11:13 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
mini.weblabКот Матроскин, я думала, что idgoods в таблице goods будет FK по отношению к соотв. id в таблицах printers, mobile, televisor Наоборот - IDPrinter будет FK к IDGoods. Сперва создается запись в goods, потом - в printers Иначе Вам будет сложно сделать "сквозную" нумерацию товаров. mini.weblabхотя авторотношения между goods и printers/mobiles/... должны быть 1:0..1 по-вашему получается, что свойства вы будете хранить не для всех товаров... Почему - для всех. Но не все товары являются принтерами, поэтому не для каждой записи в goods есть соответствующая запись в printers. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 11:32 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, надеюсь, что делать сквозную нумерацию мне не придется я поддержу tip78 и проголосую за old school и стандартные структуры :) в любом случае, работать с базой будет непросто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 11:48 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
Кот Матроскинmini.weblabотношения между таблицами по-моему неверны Отношения на схеме - да, отношения между goods и printers/mobiles/... должны быть 1:0..1, а не 1:n. Но это, видимо, просто ошибка в схеме, написал-то ТС правильно Таблица goods имеет отношения с таблицей printers (idgoods - idprinters) оба они первичные ключи. tip78 неправильно разбивать каждую группу товаров по отдельным таблицам свойств у него принтеры это одна таблица свойств, мобильники - другая, итд Еще раз - это называется "наследование типов". Погуглите. ну вообще-то называется "наследование таблиц" и... вы сами то вникали? именно это я и называю "неправильно" вы выбрали чуть меньший размер БД в ущерб скорости хотя у ТС магазин и для таких задач важнее скорость (строго говоря, скорость важнее практически для любых задач, разве что бэкапам пофиг, а размер там дело десятое) вы бы, на досуге, редис для себя открыли (ваша очередь гуглить), подивились бы, как там дела обстоят с соотношением размер/скорость но там сжатие например есть, оно чуть спасает хотя и не особо надо зато 100к запросов в секунду расскажите им про наследования... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 13:53 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
кстати, вот ссылка от 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 13:56 |
|
||
|
Товары с разными характеристиками
|
|||
|---|---|---|---|
|
#18+
tip78Кот Матроскинпропущено... Отношения на схеме - да, отношения между goods и printers/mobiles/... должны быть 1:0..1, а не 1:n. Но это, видимо, просто ошибка в схеме, написал-то ТС правильно пропущено... пропущено... Еще раз - это называется "наследование типов". Погуглите. ну вообще-то называется "наследование таблиц" и... вы сами то вникали? именно это я и называю "неправильно" вы выбрали чуть меньший размер БД в ущерб скорости Лолшто? EAV выигрывает по скорости запросов у классических таблиц? Ну давайте померяем, где будет быстрее работать фильтр, к примеру, по трем атрибутам. tip78читаем про минусы (disadvantages) Минусы по сравнению с чем ? Там в качестве альтернатив рассматриваются подходы "все держать в одной таблице" (то с чего начал ТС) и "сделать по одной таблице на каждый тип, дублируя одинаковые атрибуты". Никакого Вашего таблица товаров (goods) + таблица названий свойств (prop_name) + таблица свойств товаров (props2goods) нет в помине. А по сравнению с этими двумя способами - наследование, конечно, медленнее (хотя и на копейки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2016, 14:29 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39225450&tid=1540349]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 503ms |

| 0 / 0 |

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