Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Проектирование БД Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Здравствуйте. Я пишу свой интернет магазин -- продажи автодеталей. Возникла сложность с организацией таблиц представления товара. По большому счету я бы мог организовать все топором, но хотелось бы "эстетично" и правильно с точки зрения архитектуры. Итак что мы имеем по детали:
1. ее оригинальный номер (далее ОН), т.е. от официального производителя. например zp05f7
2. кросс номера (далее КН, неофициальные производители). Деталь по кроссу тоже деталь, а следовательно имеет все перечисленные свойства касательно данного описания. Рекурсия.
3. категория детали, например "детали ходовой"
4. подкатегория (стойка стабилизатора)
5. марка авто, например seat. Может быть несколько
6. модель авто, тоже возможны несколько
... цена, наличие и т.д. подробности
Суть проблемы заключается в том что я впал в ступор и не могу построить таблицы так, чтобы оптимально делать выборки. Мне надо чтобы по запросу либо ОН, либо КН, либо подкатегория + марка + модель получить полный список всех деталей, которые связаны между собой. Для этого я мог бы создать одну таблицу с дублирующимися записями и писать простенький запрос к БД. Это неизбежно приведет к огромному объему данных и замедлит работу по выборке из БД. Я прошу вашей помощи, уважаемые специалисты, в организации множества таблиц и связей между ними, чтобы делать выборки можно было прибегнув к связям. Благодарю за трату времени на лонгрид. Что надо прояснить, пишите.
28 июл 19, 14:19    [21936203]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
отдельные таблицы с категориями, подкатегориями, маркми авто, моделями конечно же есть.
28 июл 19, 15:13    [21936218]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
982183
Member

Откуда: VL
Сообщений: 3104
Посмотрите для начала, как это давно реализовано у других
https://jptrade.ru/
https://www.japancar.ru/
https://www.drom.ru/
http://www.cdmail.ru/business/work/jc-trade.htm
28 июл 19, 16:29    [21936255]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
982183,
Вы, верно, не поняли сути. frontend реализован на 100%, backend на 70%. Не могу завершить backend пока не организую до конца БД. А вот с организацией БД возникли трудности. В чем я и прошу мне помочь. Благодарю за потраченное на меня время.
28 июл 19, 19:07    [21936304]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 681
MrKrapkin
Вы, верно, не поняли сути. frontend реализован на 100%, backend на 70%. Не могу завершить backend пока не организую до конца БД. А вот с организацией БД возникли трудности. В чем я и прошу мне помочь. Благодарю за потраченное на меня время.


вероятно вы не понимаете сути ) если есть готовая база и есть вопрос по этой базе - ну так и покажите таблицы и в чем вопрос и чем помочь. А сейчас вы сказали: доктор, у меня это....
28 июл 19, 23:31    [21936468]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
982183
Member

Откуда: VL
Сообщений: 3104
MrKrapkin
А вот с организацией БД возникли трудности.

Именно принципы организации БД можно посмотреть на готовых проектах.
29 июл 19, 02:35    [21936530]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
KreatorXXI
Member

Откуда: Москва
Сообщений: 783
MrKrapkin,

я пока не вижу необходимости плодить таблицы. Может объясните в чём дублирование записей?
29 июл 19, 10:03    [21936607]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Serguei
вероятно вы не понимаете сути ) если есть готовая база и есть вопрос по этой базе - ну так и покажите таблицы и в чем вопрос и чем помочь. А сейчас вы сказали: доктор, у меня это....

Я пишу сразу все по необходимости. Метод снизу вверх. Как пишут на forth'е, например. Сначала дизайн и верстка, а потом backend с БД "штучно". Сначала опцию на сервер сайд, потом таблицу в БД и привязка к данной опции. Код в БД не хранится, только данные. На данный момент есть несколько таблиц, описанных во втором посте, ну и технические, типа клиент инфо, куки и т.д. Я хочу создать таблицу/таблицы с товаром/деталями. Однако сложность в том что для каждой детали может быть:
1. несколько аналогов;
2. несколько подходящих автопроизводтелей;
3. несколько подходящих моделей как одного, так и разных автопроизводителей.
Для выборки лучше использовать целочисленные значения (id, например) просто потому что это на машинном уровне быстрее чем сравнивать строки. А следовательно связывать деталь с аналогами, автопроизводителями, моделями лучше целочисленными ключами. Поскольку хранить массивы в БД категорически неправильно, то надо как-то исхитриться и организовать, например две таблицы (ОН и КН), связать их друг с другом посредством foreign key, но также тем же методом надо еще связать и с автопроизводителями и моделями авто. Допустим связи с двумя таблицами у меня не вызывают вообще никаких вопросов. Но связать сразу несколько таблиц мне совсем непонятно как, равно как и непонятно как делать из таких связей выборки. Также я не уверен что таблиц для товара должно быть две. Я хорошо набил руку в программировании, освоил веб, но опыт с БД имею только на уровне пользователя.
982183
Именно принципы организации БД можно посмотреть на готовых проектах.

Может быть я что-то не понимаю? Это веб сайты. Они предоставляют доступ к своим БД? Если так, сейчас nmap в руки и посмотрим, но пары логин/пароль я у них на сайтах не заметил.
KreatorXXI
я пока не вижу необходимости плодить таблицы. Может объясните в чём дублирование записей?

См выше.
---
Благодарю всех за внимание к моей проблеме и желание помочь.
29 июл 19, 14:41    [21936892]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Короче, таблицу с переменным количеством столбцов создать нельзя. Типа:
ON1 CN1 CN2

ON2 CN1 CN2 CN3 CN4

Другой вариант -- таблицы с дублирующимися записями, например:
ON1 CN1

ON1 CN2

ON1 CN3

(ON - Original Number, CN - Cross Number)
И это не выход. Почему: например, есть ON1, CN1, CN2, Vendor1, Vendor2, Vendor3. Как видим, вендоров больше, а значит в одной записи будет шлак в кроссах. Пилить костыль по вычленению шлака => архитектурная недоработка. Похоже, пока я тут объясняю то уже начинает вырисовываться общая картина того что надо делать.
29 июл 19, 15:55    [21936957]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
kolobok0
Member

Откуда:
Сообщений: 1951
MrKrapkin,

Судя по тому что Вы написали...
1) есть понимание производителей, явно они имеют больше полей чем название. И явно они имеют тип - официал и не официал.
2) есть категория деталей, есть под категория
3) есть марка авто и модель авто..

где тут рекурсия и динамическое кол-во полей???

Если Вам становится понятней, после изложения тут в письменном виде - это позитивный момент. Негативный - наверное стоит привести тут структуру которые Вы мыслите. Народ к Вам и потянется, когда знакомые сущности = таблицы, поля, типы и т.д..

удачи вам
(круглый)
29 июл 19, 16:58    [21937037]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7834
Как видим, вендоров больше, а значит в одной записи будет шлак


таблица_N:N_намбер _1
суррготатный_Id Original_Number Cross_Number

таблица_N:N_намбер _2
суррготатный_Id Original_Number Vendor
29 июл 19, 17:18    [21937065]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
kolobok0
MrKrapkin, Негативный - наверное стоит привести тут структуру которые Вы мыслите.

Вот именно за структурой я сюда я и обратился. Leonid Kudryavtsev, предложил как раз то что у меня вырисовалось в процессе обсуждения.
Благодарю всех за участие, помощь.
29 июл 19, 21:26    [21937253]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 681
MrKrapkin
Однако сложность в том что для каждой детали может быть:
1. несколько аналогов;
2. несколько подходящих автопроизводтелей;
3. несколько подходящих моделей как одного, так и разных автопроизводителей.
Для выборки лучше использовать целочисленные значения (id, например) просто потому что это на машинном уровне быстрее чем сравнивать строки. А следовательно связывать деталь с аналогами, автопроизводителями, моделями лучше целочисленными ключами. Поскольку хранить массивы в БД категорически неправильно, то надо как-то исхитриться и организовать, например две таблицы (ОН и КН), связать их друг с другом посредством foreign key, но также тем же методом надо еще связать и с автопроизводителями и моделями авто. Допустим связи с двумя таблицами у меня не вызывают вообще никаких вопросов. Но связать сразу несколько таблиц мне совсем непонятно как, равно как и непонятно как делать из таких связей выборки.


делаете таблицу для связи многие-ко-многим и все. В чем конкретно сложность то?

MrKrapkin
Также я не уверен что таблиц для товара должно быть две.


Я скажу больше:таблиц может быть и не 2 и не 2 десятка для хранения одного объекта, а значительно больше. Ограничений по количеству таблиц нет. Нужно грамотно под задачи спроектировать структуру.

Поскольку вы не можете задать вопрос, вы также неготовы услышать на него ответ. Для начала почитайте основы проектирования реляционных БД.
29 июл 19, 22:12    [21937281]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Serguei
Для начала почитайте основы проектирования реляционных БД.

Есть что-то конкретное? English включительно.
29 июл 19, 22:35    [21937297]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 681
MrKrapkin
Есть что-то конкретное? English включительно.

емое! в гугле скорее набирайте! теряете драгоценные минуты. На интуит.ру есть хороший материал
29 июл 19, 23:17    [21937330]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Mr.Fontaine
Member

Откуда: у меня столько мыслей?
Сообщений: 758
MrKrapkin
Здравствуйте. Я пишу свой интернет магазин -- продажи автодеталей. Возникла сложность с организацией таблиц представления товара. По большому счету я бы мог организовать все топором, но хотелось бы "эстетично" и правильно с точки зрения архитектуры. Итак что мы имеем по детали:
1. ее оригинальный номер (далее ОН), т.е. от официального производителя. например zp05f7
2. кросс номера (далее КН, неофициальные производители). Деталь по кроссу тоже деталь, а следовательно имеет все перечисленные свойства касательно данного описания. Рекурсия.

Что такое рекурсия?
У Вас два предмета имеет одни и те же свойства. Это не рекурсия однако. Это просто отдельная сущность
То есть у Вас есть сущности: детали и свойства деталей. И их можно описать:
свойства - имеют ключевое поле id и далее описание всех возможных свойств
детали - имеют ключевое поле id, а также номер детали, id_производителя, id_свойства, признак оригинальности и далее, при необходимости, прочие поля

Всё. Теперь две детали (и оригинал и кросс) могут иметь одинаковые свойства. И по ид свойства можно выбирать соответствие кроссов оригиналам. В чём тут проблемы?
Но, честно говоря, у меня лично нет уверенности, что кроссы обязательно будут иметь те же свойства, что и оригинальные детали. Запросто могут быть отличия.
Например, задние фонари. У оригинальной детали поворотники выполняются жёлтым, а у кросса они могут быть красными.
По покрытиям могут быть отличия (у кого-то хромированное, у кого-то та же деталь может быть никелированная) и так далее
Потому первоначально увиденная структура не верна. Надо изменить структуру таблицы деталей:
свойства - имеют ключевое поле id и далее описание всех возможных свойств
детали - имеют ключевое поле id, а также номер детали, id_производителя, id_свойства, id_original и далее, при необходимости, прочие поля

Вместо признака оригинальности указываем ид оригинала, и поэтому теперь и свойства у оригиналов и кроссов могут быть разными (хотя вовсе необязательно) и видно, какая деталь оригинальная, а какая является кросс деталью.
30 июл 19, 07:13    [21937420]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Serguei
емое! в гугле скорее набирайте! теряете драгоценные минуты. На интуит.ру есть хороший материал

Да ты чертов гений! Как же это я такой идиот не догадался? Вопрос подразумевал отбросить в сторону книги-мусор и обратить внимание на действительно хорошую литературу касательно предмета. Все еще актуален.
30 июл 19, 15:04    [21937944]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 7834
В ERP сталкивался с аналогами, заменами и пр.... IMHO Черт ногу сломит.
30 июл 19, 15:32    [21937969]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 681
MrKrapkin
Да ты чертов гений! Как же это я такой идиот не догадался? Вопрос подразумевал отбросить в сторону книги-мусор и обратить внимание на действительно хорошую литературу касательно предмета. Все еще актуален.


батенька, да вы лентяй! Я же вам написал по каким словам и на каком ресурсе! здесь ссылки по моему нельзя публиковать.
30 июл 19, 16:48    [21938055]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 681
MrKrapkin
Serguei
емое! в гугле скорее набирайте! теряете драгоценные минуты. На интуит.ру есть хороший материал

Да ты чертов гений! Как же это я такой идиот не догадался? Вопрос подразумевал отбросить в сторону книги-мусор и обратить внимание на действительно хорошую литературу касательно предмета. Все еще актуален.

искать в гугле "интуит.ру основы проектирования реляционных БД"

но по моему вам это не поможет ))))
30 июл 19, 16:52    [21938066]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Serguei
но по моему вам это не поможет ))))

Это -- очень ограниченный "юмор" от очень ограниченного homo. Вы сразу не догадались в чем вообще вопрос и решили вести себя со мной как с наглым школьником, требующим решение его задачи. Получив внятное объяснение собственной глупости решили сослаться на курсы интуит. Мне вполне хватило бы ФИО автора, сопоставимого в предметной области с такими именами как Таненбаум, Страуструпп, банда четырех и т.д., но Вам догадаться до этого невдомёк, а скорее всего Вы вообще предложите самоучитель, ведь он содержит чуть более полезной информации, чем курсы интуит. Странно еще что Вы видеоуроки в трубе не предложили. Вообще хоть что-то кроме интуита по предмету лично Вами было проработано?
30 июл 19, 19:41    [21938225]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Serguei
Member

Откуда: Papua New Guinea
Сообщений: 681
MrKrapkin
е что Вы видеоуроки в т

ясно. Ищите хорошего автора ) удачи. Отвечать не утруждайте себя.

P.S. Но если бы вы потрудились зайти туда и посмотреть, увидели бы что там очень хорошее изложение материала - лучше не найти.
30 июл 19, 20:27    [21938260]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Serguei
ясно. Ищите хорошего автора ) удачи. Отвечать не утруждайте себя.

P.S. Но если бы вы потрудились зайти туда и посмотреть, увидели бы что там очень хорошее изложение материала - лучше не найти.

Вообще-то я потрудился и зашел на сайты O'reilly, Williams еще до того как Вы начали менторски меня поучать. Благодарю за внимание. Занавес.
30 июл 19, 20:38    [21938266]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36381
MrKrapkin,

Вы весьма чудной персонаж. Вы смешно надуваете щеки и, в то же время, помощь просите. Так оно не полетит.

Бесплатный совет: если вы не хотите, что с вами общались "как с наглым школьником", не ведите себя как наглый школьник. Ваши критерии качества ожидаемого ответа просто уморительны -- оказывается, сопоставимы они, понимаешь ли, быть должны с какими-то там именами. И президентом заверены быть должны, ага.

Ну и я отмечаю ваши комплименты персоналиям отвечающих. Прям, вижу толпы выстроившихся, которые вам хотят помочь.
31 июл 19, 01:03    [21938437]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2108
MrKrapkin
Serguei
емое! в гугле скорее набирайте! теряете драгоценные минуты. На интуит.ру есть хороший материал

Да ты чертов гений! Как же это я такой идиот не догадался? Вопрос подразумевал отбросить в сторону книги-мусор и обратить внимание на действительно хорошую литературу касательно предмета. Все еще актуален.

Дейт. "Введение в системы баз данных"
31 июл 19, 06:50    [21938469]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
Гавриленко Сергей Алексеевич
MrKrapkin,

Вы весьма чудной персонаж. Вы смешно надуваете щеки и, в то же время, помощь просите. Так оно не полетит.

Бесплатный совет: если вы не хотите, что с вами общались "как с наглым школьником", не ведите себя как наглый школьник. Ваши критерии качества ожидаемого ответа просто уморительны -- оказывается, сопоставимы они, понимаешь ли, быть должны с какими-то там именами. И президентом заверены быть должны, ага.

Ну и я отмечаю ваши комплименты персоналиям отвечающих. Прям, вижу толпы выстроившихся, которые вам хотят помочь.

No comments. Даже вежливость высмеять умудрились.
P.S. Советы хороши тогда, когда они к месту. То есть когда за ними кто-то обратился. Ну этика, да, дело такое. Пафосным чувакам слово незнакомое. А когда их никто не просил, то не удивляйтесь адресу по которому Вас пошлют.
31 июл 19, 12:51    [21938794]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
MrKrapkin
Member

Откуда:
Сообщений: 12
s_ustinov
Дейт. "Введение в системы баз данных"

Благодарю. Автор авторитетный.
31 июл 19, 13:06    [21938817]     Ответить | Цитировать Сообщить модератору
 Re: помощь построить связи многие ко многим  [new]
ViPRos
Member

Откуда:
Сообщений: 9568
MrKrapkin
s_ustinov
Дейт. "Введение в системы баз данных"

Благодарю. Автор авторитетный.

Самозваный Пророк Кодда.
1 авг 19, 20:45    [21940186]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Проектирование БД Ответить