Заметки программера Чему равно дважды два равно четыре?
Revert
Переводим ASDF в ФЫВА и наоборот.
Хорошо!!
Радикальный улучшатель настроения.
Грамота
Покажи всем, насколько ты крут - выпиши себе мега-грамоту!
30.03.2011, 08:51   Статьи » Как не надо делать

Хранение данных

Представим себе банальную задачу: в базе данных необходимо хранить акты приема товара. Если более подробно - то необходимо следующее:

  • Реквизиты самого акта:
    • Номер акта
    • Номер счета-фактуры
    • Дата акта
  • Собственно, содержимое:
    • Тип принятого оборудования
    • Марка оборудования
    • Серийный номер
  • Ну, и еще чуть по мелочи, например - ID сотрудника, создавшего акт, или поясняющие примечания к акту.

Как такая задача решается вменяемыми людьми? Обычно - примерно следующим образом. Создается таблица документов, в которой пишутся реквизиты акта (см. выше). Далее - создается еще одна таблица, в которую пишется информация об оборудовании, а так же - прописывается ссылка (foreign key) на таблицу актов.

Но так делают вменяемые люди, в данной же заметке речь идет о гражданах, которых зовут Служенко Константин Викторович и Сергиенко Валерий Вячеславович. Эти милые человечки не ищут легких путей. У них есть свой неповторимый путь: всё надо сложить в одну таблицу и не забивать себе мозг. Да-да, и реквизиты акта, и его содержимое содержаться в одной таблице.

Как выглядит таблица:

Последние три поля - это я добавил, в процессе работы.

Как можно увидеть, названия полей отличаются крайней степенью информативности, комментарии - это для лохов, foreign keys - мешающие излишества, primary key - на хер не нужно, достаточно сказать, что это - столбец идентификаторов, а то, что FK на него не создашь - так и хуй бы с ним, см. выше про foreign keys.

Но мы отвлеклись.

Итак, вся инфа о приеме оборудования хранится в одной таблице. Ладно, предположим, что можно хранить данные в одной таблице. Можно, пусть так (блядь, это уже попахивает легкой стадией дебилизма). Например - в поле iTypOper записать одно значение для реквизитов акта, и другое - для содержимого (железки). Например, так.

Но это - не так эротично, как сделали вышеуказанные граждане Служенко Константин Викторович и Сергиенко Валерий Вячеславович. Итак, рассказываю принцип:

Сначала создается акт, в котором юзер указывает

  • номер счета-фактуры;
  • Пояснения (обязательно!);
  • Получатель (организация);
  • Фирма-поставщик;
  • Через (физическое лицо);
  • Форма расчета.

Далее производится внесение оборудования. Это - самое занятное. Итак, приготовьтесь. Спектакль "Один день в отделении клинической психиатрии", часть первая:

В таблицу LOGBASIS вносится указанная информация, в поле iTypOper пишется волшебное число 15 (как я понял из обзора кода - это признак того, что здесь прописан прием товара).

Далее. Оборудование вносится в отдельную таблицу, а в таблицу LOGBASIS, которую вы видели выше, вносится запись со ссылкой на оборудование и с номером полученного ранее акта. В поле iTypOper... правильно!, пишется то же самое волшебное число 15!!!

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

Воспользуемся методом, которым пользуются сами разработчики - ну, всегда ведь можно подсмотреть в исходниках, как же они заполняют список этих ёбаных актов? Итак, "Один день в отделении клинической психиатрии", часть вторая:

Помните, чуть выше было сказано про обязательное поле "Пояснение"? Для получения списка актов проверяется флаг iTypeOper и то, что sNotes <> ''!!!

Пиздец. Извините. Занавес.

Комментарии

Татьяна 30.03.2011, 12:43 #1
Как называется эта программа?
Del 30.03.2011, 15:24 #2
Кому: Татьяна, #1

Это у нас используется, в отделе АСУ. Широкого распространения (надеюсь) не получила. Но вообще зовется Clientter
boriss 02.04.2011, 16:50 #3
Упрощенная система образования: как слышим (в данном случае - видим), так и пишем...

Добавлние комментов отключено на время переезда

Картинки

Прекрасная игра

Егор и разработка

Когда нет домкрата
Ссылки