powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Корзина или коллекция элементов в MySQL
25 сообщений из 38, страница 1 из 2
Корзина или коллекция элементов в MySQL
    #39060818
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день форумчане. Возник вопрос по реализации корзины элементов в БД, предметная область - библиотека вуза. Принцип такой студент приходит в библиотеку просит либо одну либо больше одной книги (3 например) в БД заносятся данные о взятых книгах на какой срок взяты, когда взяты и т.д. Вот до чего дошёл:

Никак не могу догнать как сделать так чтоб в БД заносились данные сразу нескольких книг в корзине. Работа с БД будет через web приложение созданное на YII2
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060835
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы сначала проведите всё-таки анализ предметной области.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060850
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, таки провёл, а в чём собственно проблема?
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060852
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, к примеру, мне непонятно, как "Выдача" (а это явно бизнес-процесс) стала самостоятельной сущностью.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060859
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, предлагаете "Выдача" сделать представлением?
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060861
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, у меня мало опыта в проектировании БД, если подскажите как будет лучше или покидаете тематичных ссылок, буду благодарен
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060931
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я предлагаю провести полноценный анализ, а не прикидывать одну сущность к другой сущности.

Навскидку (могу и ошибаться) выделятся следующие сущности: Читатель (Студент), Библиотекарь (Сотрудник), Книга, Заказ (Корзина). Выдача будет просто блоком атрибутов сущности Заказ. Ну и возможно дополнительное усложнение схемы (или обработки), если необходимо хранение истории.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060939
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariy,

Вам правильно говорят насчет изучения предметной области. БД - это модель предметной области. И не зная второго, невозможно спроектировать первое.

Насколько я себе представляю работу библиотеки, не нужна таблица "корзина книг", а вместо таблицы "выдача" либо должна быть таблица "операции" с отдельными записями на выдачу/сдачу книг, либо должен быть двойной комплект ряда полей, т.к. выдать и получить обратно книгу могут разные сотрудники, в разные даты и т.п. Вплоть до отдельных комментариев.
Возможно, имеет смысл добавить информацию вида "состояние книги" и/или "потеряна/уничтожена студентом" (в том смысле, что он ее не вернет уже никогда).
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060943
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
основные сущности
книга
студент
движение (выдача-возврат)

библиотекарь - это дополнительно.
можно больше ничего не городить.
какие книги на руках - определяем по движению, какие, когда, кому выданы
этого достаточно, все остальное - огород...
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39060997
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariy,

вы тут на сильных профессионалов нарвались и они, к сожалению, не дадут вам "скосить углы", то есть сделать по-быстрому и пойти пить пиво. )))

Да, изучение предметной области и т.п. - это все замечательно, но ради создания конкретной вашей софтины изучение предметной области это совершенно ни к чему. Если бы вы писали софтину для агропромышленного холдинга, то да...

Короче, я как боец с многолетним опытом советую вас следующее:

- - - - - - - - - - - -

1) группы книг и факультет таблицами не делать вообще, а ведите эти списки просто в файле. Если речь идет о php, то достаточно просто вести этот список в виде массива и хранить его через var_export()

массив - это комплект описание / метка, например

Код: php
1.
2.
3.
4.
5.
6.
7.
array
(
    "Фантастика" => "fant"
    , "Классика" => "clas"
    , "Ужасы" => "uzas"
    , ....
)



В таблице код группы сделайте char(8) и храните там буквенные идентификаторы.
То же самое с факультетами

- - - - - - - - - - - -

2) корзина книг и выдача сделайте одной таблицей и назовите её операции
3) выкиньте колонку возврат и добавьте колонку state char(4), а в которой бы будете хранить идентификатор типа операции

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
array
(
    "Заявка" => "zav"
    , "Выдано" => "on"
    , "Возвращено" => "back"
    , "Утеряно" => "boom"
    , ....
)



- - - - - - - - - - - -

4) объедините таблицу сотрудник и студент в одну и назовите её юзер
5) введите поле who char(4)

Код: php
1.
2.
3.
4.
5.
6.
7.
8.
array
(
    "Сотрудник" => "sot"
    , "Студент" => "stud"
    , "Препод" => "prep"
    , "Чужие" => "alie"
    , ....
)



6) не бойтесь, что под какой-то статус какие-то поля будут лишние и пустые
например, для сотрудника есть поле "дата увольнения" и она лишняя для студентов, а для студентов есть поле "факультет" и оно лишнее для сотрудников, а для преподов есть поле "уч.степень" и оно лишнее для кого-то ещё. Ну и хрен с ним. Базе от этого пофиг, а вы на крайняк, если будет не лень просто будете скрывать эти поля в форме в зависимости от выбранного переключателя типа пользователя системы. Хотя если лень, то можно и не скрывать, потому что у сотрудника тоже может быть ученая степень и факультет, а у препода может быть дата увольнения.

- - - - - - - - - - - -

Итого всего 3 таблицы: товар, операции, юзеры

С этим комплектом можно за полдня замутить такую учетную систему, что все будут просто писаться от счастья, а с отладкой этой системы справится даже обезъяна, на случай, если разработку и обслуживание этой системы вам предстоит передать другому разрабу.

Удачи!
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061024
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixЕсли речь идет о php, то достаточно просто вести этот список в виде массива и хранить его через var_export()Хардкодить данные???!!! Святотатство!!!

Если уж мы уже используем СУБД, то накой эти вспомогательные списки? (это риторический вопрос)
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061049
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftLumixЕсли речь идет о php, то достаточно просто вести этот список в виде массива и хранить его через var_export()Хардкодить данные???!!! Святотатство!!!

Если уж мы уже используем СУБД, то накой эти вспомогательные списки? (это риторический вопрос)

неее, var_export() это не хардкод
это хранение данных в файле
скорость доступа к этим данным по сравнению мускулом на порядки выше
а изменять эти списки можно как обычно через форму справочника
просто они хранятся не в базе, а в файле
подобное решение всегда выгодно, когда
1) элементов в списке меньше 666
2) они меняются редко
3) функционально эти списки носят носят меточный характер, то есть используются как метки
(классика жанра - это различные статусы, ну а на втором месте стоят различные группировочные признаки)
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061065
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жесть какая
часть данных в БД, часть в файлах... ещё одна часть под фвмас, наверное?
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061067
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixскорость доступа к этим данным по сравнению мускулом на порядки вышеНу да, миллисекунда от микросекунды отличается аж на три порядка. Вот только пользователь этой разницы не заметит.
Lumixподобное решение всегда выгодно, когдаКогда разработчик всего один и не планируется, что его детище переживет его в пределах конкретной организации. А также когда не планируется использовать сторонних средств построения отчетов, экспорта и т.п.

Впрочем, конкретно эта задача очень примитивная и я ни на чем не настаиваю. Как бы ни было сделано - скорее всего и так сойдет.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061076
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirжесть какая
часть данных в БД, часть в файлах... ещё одна часть под фвмас, наверное?

ой, а фвмас - это шо це токке?


miksoftLumixскорость доступа к этим данным по сравнению мускулом на порядки вышеНу да, миллисекунда от микросекунды отличается аж на три порядка. Вот только пользователь этой разницы не заметит.

ну разумеется, здесь в этом конкретном случае со студенческой библиотекой самая главная мотивация не в погоне за скоростью, а в погоне за отстрелом лишних таблиц и заменой номерков групп на идентификаторы, по которым можно глядя на запись в базе данных тут же понять что она значит

самая главная мотивация - это максимальное упрощение отладки, а значит и dramaticcaly снижение требования к минимальной квалификации кодера, способного сие софтзверьё обслуживать
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061092
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixtanglirжесть какая
часть данных в БД, часть в файлах... ещё одна часть под фвмас, наверное?ой, а фвмас - это шо це токке?Это не к ночи будь помянуто. А для данного слова любое время - "к ночи".
Lumixсамая главная мотивация - это максимальное упрощение отладкиСтранное упрощение, когда вместо объекта уже известного, понятного и используемого типа вводится новый, неизвестный тип. Как по мне, так это усложнение.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061182
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariyAkina, таки провёл, а в чём собственно проблема?

Ну, хотя бы в том, что книги без ISBN -- это какой-то нонсенс...
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061186
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariyAkina, таки провёл, а в чём собственно проблема?

Далее.
авторов у книги может быть много.

У автора может быть много книг.

сотрудник может быть одновременно студентом.

Самостоятельная ли сущность "выдача" -- дело 20-е, хотя я бы тоже не делал самостоятельной -- не за чем.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061192
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixскорость доступа к этим данным по сравнению мускулом на порядки выше
а изменять эти списки можно как обычно через форму справочника


Ещё одна твоя ошибка.
Скорость работы -- далеко не самый важный критерий при оценке качества ПО.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39061212
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivСкорость работы -- далеко не самый важный критерий при оценке качества ПО.

Я понимаю, что сейчас будет жесткий оффтоп, но какие нынче критерии окромя скорости работы частовызываемых операций считаются более важными при оценке качества ПО? Чисто из любопытства хочется узнать, чтобы быть в тренде...
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062128
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо вам, сильные форума сего, была переработана структура под ваши советы:



Вопрос с корзиной остался открыт

p.s. белая пелена - мозилла крашнулась, в принципе итак все различимо
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062131
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Насколько целесообразно вводить 2 записи на путешествие книги? В итоге придётся 2 раза вводить одни и те же данные: студент, библиотекарь (не всегда), книга и т.п. Шанс ошибки растёт
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062174
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariymiksoft,
Насколько целесообразно вводить 2 записи на путешествие книги? В итоге придётся 2 раза вводить одни и те же данные: студент, библиотекарь (не всегда), книга и т.п. Шанс ошибки растётНет, шанс ошибки не растет.
Две отдельных записи могут понадобиться для случаев, когда потенциально возможно добавление новых типов операций. Например, продление книги. В некоторых библиотеках жестко лимитируется срок возврата книг, но при необходимости читатель может обратиться к библиотекарю и попросить продлить этот срок. Тогда в таблицу может быть внесена запись "продление срока" и новый срок будет исчислять уже с даты этой записи.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062708
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftABariymiksoft,
Насколько целесообразно вводить 2 записи на путешествие книги? В итоге придётся 2 раза вводить одни и те же данные: студент, библиотекарь (не всегда), книга и т.п. Шанс ошибки растётНет, шанс ошибки не растет.
Две отдельных записи могут понадобиться для случаев, когда потенциально возможно добавление новых типов операций. Например, продление книги. В некоторых библиотеках жестко лимитируется срок возврата книг, но при необходимости читатель может обратиться к библиотекарю и попросить продлить этот срок. Тогда в таблицу может быть внесена запись "продление срока" и новый срок будет исчислять уже с даты этой записи.
Ага, хорошо. Что посоветуете с корзиной книг по типу человек приходит и берет несколько книг, чтоб они как-то были объединены, кроме как костылей со стороны клиента ничего в голову не лезет.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062710
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariyчтоб они как-то были объединеныЗачем?
...
Рейтинг: 0 / 0
25 сообщений из 38, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Корзина или коллекция элементов в MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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