powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Корзина или коллекция элементов в MySQL
38 сообщений из 38, показаны все 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
Корзина или коллекция элементов в MySQL
    #39062714
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftABariyчтоб они как-то были объединеныЗачем?
Приходит студент, набирает стопочку в 5 книг (курсовая мол, да да интернет, но всё же), тем временем библиотекарь создаёт 5 записей в БД по выдаче этих 5-и книг, когда студент будет возвращать книги, обратно библиотекарь проклиная меня будет создавать 5 записей на сдачу 5-и книг.

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

Да и вряд ли студенты будут возвращать книги точно теми же порциями, которыми брали.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062717
ABariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,
Спасибо за советы
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062740
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariy,

реально нужно отталкиваться от тех действий, которые нужны будут от этого приложения.
Но что вы говорите корзина - это что-то типа "Документ на выдачу". Я думаю в жизни такого документа нет.
Но, насколько я помню. в каждой книге лежит карточка, в которой делается пометка о выдаче, остается в библиотеке, а книга выдается. Ваш "документ"-корзина может быть получен из таблицы опреации-джижения. Т.е. какого числа кто брал какие книги.
Зачем вам "корзина" как "сущность"...
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39062742
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чуть сложнее реализация, если вам нужен еще и количественный учет книг. Т.е. чтобы при обращении за книгой "Три мушкетера", которых в библиотеке всего 5, библиотекарь сразу видел по базе что все они "на руках".
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39063009
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ABariyКак это всё упростить?

Вот-вот. Все эти советы с отдельными операциями - это все путь к смерти софта.

1) Не стоит делать отдельными таблицами Библиотекаря и Студента. Это одна и та же таблица. Кроме того, создавая отдельную таблицу студент вы запрещаете брать книги Преподавателям и людям, которые вообще не имеют отношения к вашему вузу.

Сначала я думал, что вам элементарно смелости не хватает их объединить в одну,
но потом я понял, что вы элементарно "обрезали себе крылья" использованием этого визуального инструмента, который не позволяет вам в одной таблице Операции создать два разные поля userIdStudent, userIdManager, которые ссылаются на одно и то же поле userId в другой таблице

Ну что про это можно сказать?
Вы сами себе злой буратино...

PS. Это ещё раз доказывает преимущество прототипирования живым кодом вместо всяких заумных визуальных конструкторов...

2) В таблице Операции поле называется не Выдача/Сдача, а Тип операции или Статус и не text а char(4)
3) В таблице Операции нет поля дата операции, там много дат: cdate, bdate, edate

PS. если вы работаете на PHP, то тип поля дата лучше делать int, чтобы проще было работать с юниксовыми таймстемпами

ABariyЧто посоветуете с корзиной книг по типу человек приходит и берет несколько книг, чтоб они как-то были объединены, кроме как костылей со стороны клиента ничего в голову не лезет.

1) Если следовать классическим канонам, то создаете дополнительное группировочное поле cartId и прописываете туда номер, взятый из глобального счетчика

2) Если следовать ремесленной смелкалке, которая формируется в результате многолетнего практического кодописания, то легко увидеть, что функцию группировочного признака играет пара (номер студента, дата начала операции)

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

система может дать сбой лишь в том, случае, если в течение одной даты может быть несколько выдач на одно лицо, то есть несколько "сессий" (сессия в данном случае - это айтишный термин, а не сессия как период экзаменов в вузе)

но насколько мне известно в библиотеках, если например, я утром взял 3 книги, а вечером ещё одну, то мне эту четвертую запишут к тем трем, а не будут создавать отдельную вторую выдачу за сегодня, потому что сроки все равно считаются в полных днях, без учета времени

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

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

Если задача не учебная, а реальная боевая (в чем я сильно сомневаюсь), то еще может понадобиться интеграция с другими учетными системами вуза, в частности, синхронизация списков студентов/сотрудников и т.п.

Разумеется, я не настаиваю ни на каком из вариантов, и окончательно решение принимать топикстартеру.

Lumixcdate, bdate, edateЭто что за слова такие?
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39063700
Фотография Lumix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftLumixКроме того, создавая отдельную таблицу студент вы запрещаете брать книги Преподавателям и людям, которые вообще не имеют отношения к вашему вузу.Вот поэтому и говорилось выше про изучение предметной области.

Существуют классические уравнения.
x + 3 = 1
ответ: x = -2

А существуют уравнения с параметром.
x + a = 1
ответ: x = 1 - a

Так вот когда вы всей тусовкой стали топикстартера грузить за изучение предметной области, то вы как бы клонили тему к "классическим уравнениям", а у нас многолетний опыт работы с заказчиками "с другой планеты" выработал у нас привычку постоянно решать "уравнения с параметром".

В вашей работе ответ всегда выглядит как x = 5
А в нашей работе ответы чаще всего выглядят вот так x = pow(c) - sqrt (a / b)

Проще говоря, мы в своей компании изначально считаем всех заказчиков как бы обкуренными и изначально готовимся к тому, что завтра может быть объявлен "полет на Марс".

То решение, которое я предложил, это решение на основе моей интуиции, которое покрывает туеву кучу возможных ТЗ.
И поэтому в моем решении на основе трех таблиц и статусных полей знание предметной области в данном случае не требуется вообще.


miksoftВ том институте, где я учился, посторонние люди не могли взять книгу. Да и преподаватели брали книги как-то иначе, потому как я ни разу в библиотеке их не видел.

В решении на трех таблицах - это неважно.
Потому что эта и другие варианты логики свободно покрываются этой конфигурацией базы.
Мы просто привыкли, что с момента начала проекта до момента его сдачи, ТЗ может поменяться 5 раз на 100%.
Поэтому мы уже физически перестали мыслить о какой-то предметной области и научились создавать максимально абстрактные архитектуры.

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

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

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

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

miksoftЕсли задача не учебная, а реальная боевая (в чем я сильно сомневаюсь), то еще может понадобиться интеграция с другими учетными системами вуза, в частности, синхронизация списков студентов/сотрудников и т.п.

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

miksoftLumixcdate, bdate, edateЭто что за слова такие?

Это стандартные обозначения полей, в которых хранятся даты в виде юниксовых таймстемпов, которые по типу являются обычным интом.

cdate - create date
bdate - begin date
edate - end date
udate - update date
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39063846
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixЧто касается каких-то отдельных параметров, то нет ничего страшного, что для одного состояния записи будут существовать какие-то поля, которые этой сущности в этом состоянии не требуются. Оно просто будет пустым полем.Забавно. Помнится, не так давно был другой топик, где тоже речь шла о проектировании БД. Так в нем я был как раз на Вашей позиции - соединить сущности в одну таблицу, а ненужные для конкретной записи поля не использовать

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

Затрудняюсь понять смысл этого тезиса.
Мой тезис был, что нет смысла городить огород с таблицами там, где сущности отличаются только статусом.
Тем более когда это касается такой сущности как пользователи.
Уже много лет система ролей себя зарекомендовала как наиболее гибкая.
Если понадобится добавить преподавателей, то по вашей логике придется создавать ещё одну таблицу.
Если добавить каких-то левых людей, то придется создавать ещё одну таблицу.
Тогда как на самом деле - всего лишь достаточно добавить новый идентификатор статуса.

Кстати, то же самое касается таблицы товары.
В ней тоже есть смысл добавить поле статуса.
Зачем?
Да, потому что библиотека может начать выдавать диски.
Или грампластинки.
Или карты.
Или что-то ещё.
По вашей логике на каждую такую товарную группу придется создавать отдельную таблицу.
А зачем, если можно просто ограничиться идентификатором статуса?
При этом мы же понимаем, что состав полей у DVD-диска и у книги сильно различается.
Тем не менее, с опытом приходит понимание, что это одна сущность.

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

LumixЕсли понадобится добавить преподавателей, то по вашей логике придется создавать ещё одну таблицу.Если преподаватели просто берут книги, то не понадобится. Они вольются в общую таблицу абонентов.
В каких-то более экзотических случаях - не уверен.

LumixПо вашей логике на каждую такую товарную группу придется создавать отдельную таблицу.Нет, такого в моей логике нет. Диски и книги движутся одинаковыми путями, одинаковыми операциями и т.п. Достаточно будет добавить поле для указания типа предмета.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39063975
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lumixпусть каждый делает как хочет.Пожалуй, на этом и остановимся :)
А то мы превратимся в остро- и тупоконечников.
...
Рейтинг: 0 / 0
Корзина или коллекция элементов в MySQL
    #39064004
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LumixMasterZivСкорость работы -- далеко не самый важный критерий при оценке качества ПО.

Я понимаю, что сейчас будет жесткий оффтоп, но какие нынче критерии окромя скорости работы частовызываемых операций считаются более важными при оценке качества ПО? Чисто из любопытства хочется узнать, чтобы быть в тренде...

в данном случае - правильность реализации структуры бд, потому что правильную структуру можно заставить работать быстро, а неверная бд даже быстрая не будет нужна никому.
...
Рейтинг: 0 / 0
38 сообщений из 38, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Корзина или коллекция элементов в MySQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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