|
|
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Добрый день форумчане. Возник вопрос по реализации корзины элементов в БД, предметная область - библиотека вуза. Принцип такой студент приходит в библиотеку просит либо одну либо больше одной книги (3 например) в БД заносятся данные о взятых книгах на какой срок взяты, когда взяты и т.д. Вот до чего дошёл: Никак не могу догнать как сделать так чтоб в БД заносились данные сразу нескольких книг в корзине. Работа с БД будет через web приложение созданное на YII2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 07:55:18 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Вы сначала проведите всё-таки анализ предметной области. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 08:39:58 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Akina, таки провёл, а в чём собственно проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 08:55:20 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Ну, к примеру, мне непонятно, как "Выдача" (а это явно бизнес-процесс) стала самостоятельной сущностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 08:57:36 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Akina, предлагаете "Выдача" сделать представлением? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 09:04:59 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Akina, у меня мало опыта в проектировании БД, если подскажите как будет лучше или покидаете тематичных ссылок, буду благодарен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 09:08:23 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Я предлагаю провести полноценный анализ, а не прикидывать одну сущность к другой сущности. Навскидку (могу и ошибаться) выделятся следующие сущности: Читатель (Студент), Библиотекарь (Сотрудник), Книга, Заказ (Корзина). Выдача будет просто блоком атрибутов сущности Заказ. Ну и возможно дополнительное усложнение схемы (или обработки), если необходимо хранение истории. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 10:07:42 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
ABariy, Вам правильно говорят насчет изучения предметной области. БД - это модель предметной области. И не зная второго, невозможно спроектировать первое. Насколько я себе представляю работу библиотеки, не нужна таблица "корзина книг", а вместо таблицы "выдача" либо должна быть таблица "операции" с отдельными записями на выдачу/сдачу книг, либо должен быть двойной комплект ряда полей, т.к. выдать и получить обратно книгу могут разные сотрудники, в разные даты и т.п. Вплоть до отдельных комментариев. Возможно, имеет смысл добавить информацию вида "состояние книги" и/или "потеряна/уничтожена студентом" (в том смысле, что он ее не вернет уже никогда). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 10:16:45 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
основные сущности книга студент движение (выдача-возврат) библиотекарь - это дополнительно. можно больше ничего не городить. какие книги на руках - определяем по движению, какие, когда, кому выданы этого достаточно, все остальное - огород... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 10:20:09 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
ABariy, вы тут на сильных профессионалов нарвались и они, к сожалению, не дадут вам "скосить углы", то есть сделать по-быстрому и пойти пить пиво. ))) Да, изучение предметной области и т.п. - это все замечательно, но ради создания конкретной вашей софтины изучение предметной области это совершенно ни к чему. Если бы вы писали софтину для агропромышленного холдинга, то да... Короче, я как боец с многолетним опытом советую вас следующее: - - - - - - - - - - - - 1) группы книг и факультет таблицами не делать вообще, а ведите эти списки просто в файле. Если речь идет о php, то достаточно просто вести этот список в виде массива и хранить его через var_export() массив - это комплект описание / метка, например Код: php 1. 2. 3. 4. 5. 6. 7. В таблице код группы сделайте char(8) и храните там буквенные идентификаторы. То же самое с факультетами - - - - - - - - - - - - 2) корзина книг и выдача сделайте одной таблицей и назовите её операции 3) выкиньте колонку возврат и добавьте колонку state char(4), а в которой бы будете хранить идентификатор типа операции Код: php 1. 2. 3. 4. 5. 6. 7. 8. - - - - - - - - - - - - 4) объедините таблицу сотрудник и студент в одну и назовите её юзер 5) введите поле who char(4) Код: php 1. 2. 3. 4. 5. 6. 7. 8. 6) не бойтесь, что под какой-то статус какие-то поля будут лишние и пустые например, для сотрудника есть поле "дата увольнения" и она лишняя для студентов, а для студентов есть поле "факультет" и оно лишнее для сотрудников, а для преподов есть поле "уч.степень" и оно лишнее для кого-то ещё. Ну и хрен с ним. Базе от этого пофиг, а вы на крайняк, если будет не лень просто будете скрывать эти поля в форме в зависимости от выбранного переключателя типа пользователя системы. Хотя если лень, то можно и не скрывать, потому что у сотрудника тоже может быть ученая степень и факультет, а у препода может быть дата увольнения. - - - - - - - - - - - - Итого всего 3 таблицы: товар, операции, юзеры С этим комплектом можно за полдня замутить такую учетную систему, что все будут просто писаться от счастья, а с отладкой этой системы справится даже обезъяна, на случай, если разработку и обслуживание этой системы вам предстоит передать другому разрабу. Удачи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:04:03 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
LumixЕсли речь идет о php, то достаточно просто вести этот список в виде массива и хранить его через var_export()Хардкодить данные???!!! Святотатство!!! Если уж мы уже используем СУБД, то накой эти вспомогательные списки? (это риторический вопрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:16:56 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
miksoftLumixЕсли речь идет о php, то достаточно просто вести этот список в виде массива и хранить его через var_export()Хардкодить данные???!!! Святотатство!!! Если уж мы уже используем СУБД, то накой эти вспомогательные списки? (это риторический вопрос) неее, var_export() это не хардкод это хранение данных в файле скорость доступа к этим данным по сравнению мускулом на порядки выше а изменять эти списки можно как обычно через форму справочника просто они хранятся не в базе, а в файле подобное решение всегда выгодно, когда 1) элементов в списке меньше 666 2) они меняются редко 3) функционально эти списки носят носят меточный характер, то есть используются как метки (классика жанра - это различные статусы, ну а на втором месте стоят различные группировочные признаки) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:26:42 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
жесть какая часть данных в БД, часть в файлах... ещё одна часть под фвмас, наверное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:32:19 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Lumixскорость доступа к этим данным по сравнению мускулом на порядки вышеНу да, миллисекунда от микросекунды отличается аж на три порядка. Вот только пользователь этой разницы не заметит. Lumixподобное решение всегда выгодно, когдаКогда разработчик всего один и не планируется, что его детище переживет его в пределах конкретной организации. А также когда не планируется использовать сторонних средств построения отчетов, экспорта и т.п. Впрочем, конкретно эта задача очень примитивная и я ни на чем не настаиваю. Как бы ни было сделано - скорее всего и так сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:33:10 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
tanglirжесть какая часть данных в БД, часть в файлах... ещё одна часть под фвмас, наверное? ой, а фвмас - это шо це токке? miksoftLumixскорость доступа к этим данным по сравнению мускулом на порядки вышеНу да, миллисекунда от микросекунды отличается аж на три порядка. Вот только пользователь этой разницы не заметит. ну разумеется, здесь в этом конкретном случае со студенческой библиотекой самая главная мотивация не в погоне за скоростью, а в погоне за отстрелом лишних таблиц и заменой номерков групп на идентификаторы, по которым можно глядя на запись в базе данных тут же понять что она значит самая главная мотивация - это максимальное упрощение отладки, а значит и dramaticcaly снижение требования к минимальной квалификации кодера, способного сие софтзверьё обслуживать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:38:50 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Lumixtanglirжесть какая часть данных в БД, часть в файлах... ещё одна часть под фвмас, наверное?ой, а фвмас - это шо це токке?Это не к ночи будь помянуто. А для данного слова любое время - "к ночи". Lumixсамая главная мотивация - это максимальное упрощение отладкиСтранное упрощение, когда вместо объекта уже известного, понятного и используемого типа вводится новый, неизвестный тип. Как по мне, так это усложнение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 11:46:04 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
ABariyAkina, таки провёл, а в чём собственно проблема? Ну, хотя бы в том, что книги без ISBN -- это какой-то нонсенс... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 12:45:21 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
ABariyAkina, таки провёл, а в чём собственно проблема? Далее. авторов у книги может быть много. У автора может быть много книг. сотрудник может быть одновременно студентом. Самостоятельная ли сущность "выдача" -- дело 20-е, хотя я бы тоже не делал самостоятельной -- не за чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 12:48:03 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Lumixскорость доступа к этим данным по сравнению мускулом на порядки выше а изменять эти списки можно как обычно через форму справочника Ещё одна твоя ошибка. Скорость работы -- далеко не самый важный критерий при оценке качества ПО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 12:51:26 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
MasterZivСкорость работы -- далеко не самый важный критерий при оценке качества ПО. Я понимаю, что сейчас будет жесткий оффтоп, но какие нынче критерии окромя скорости работы частовызываемых операций считаются более важными при оценке качества ПО? Чисто из любопытства хочется узнать, чтобы быть в тренде... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.09.2015, 13:06:47 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
Спасибо вам, сильные форума сего, была переработана структура под ваши советы: Вопрос с корзиной остался открыт p.s. белая пелена - мозилла крашнулась, в принципе итак все различимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 21:50:20 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
miksoft, Насколько целесообразно вводить 2 записи на путешествие книги? В итоге придётся 2 раза вводить одни и те же данные: студент, библиотекарь (не всегда), книга и т.п. Шанс ошибки растёт ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 21:53:26 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
ABariymiksoft, Насколько целесообразно вводить 2 записи на путешествие книги? В итоге придётся 2 раза вводить одни и те же данные: студент, библиотекарь (не всегда), книга и т.п. Шанс ошибки растётНет, шанс ошибки не растет. Две отдельных записи могут понадобиться для случаев, когда потенциально возможно добавление новых типов операций. Например, продление книги. В некоторых библиотеках жестко лимитируется срок возврата книг, но при необходимости читатель может обратиться к библиотекарю и попросить продлить этот срок. Тогда в таблицу может быть внесена запись "продление срока" и новый срок будет исчислять уже с даты этой записи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.09.2015, 23:02:25 |
|
||
|
Корзина или коллекция элементов в MySQL
|
|||
|---|---|---|---|
|
#18+
miksoftABariymiksoft, Насколько целесообразно вводить 2 записи на путешествие книги? В итоге придётся 2 раза вводить одни и те же данные: студент, библиотекарь (не всегда), книга и т.п. Шанс ошибки растётНет, шанс ошибки не растет. Две отдельных записи могут понадобиться для случаев, когда потенциально возможно добавление новых типов операций. Например, продление книги. В некоторых библиотеках жестко лимитируется срок возврата книг, но при необходимости читатель может обратиться к библиотекарю и попросить продлить этот срок. Тогда в таблицу может быть внесена запись "продление срока" и новый срок будет исчислять уже с даты этой записи. Ага, хорошо. Что посоветуете с корзиной книг по типу человек приходит и берет несколько книг, чтоб они как-то были объединены, кроме как костылей со стороны клиента ничего в голову не лезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2015, 22:10:01 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39060943&tid=1832672]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 303ms |

| 0 / 0 |
