|
5 / 4 / 0
Регистрация: 18.09.2011
Сообщений: 71
|
|
справочная таблица25.10.2011, 13:16. Показов 1837. Ответов 15
Метки нет (Все метки)
Добрый день. Подскажите как лучше быть в такой ситуации. Имеются справочная таблица с сотрудниками и основная, типа журнала. В журнале хранится инфа и сотрудники определяются по их id из справочной таблицы. Как быть в такой ситуации, когда сотруднику необходимо будет, например, сменить фамилию или отдел, но в журнале изменений не должно происходить?
0
|
|
| 25.10.2011, 13:16 | |
|
Ответы с готовыми решениями:
15
справочная система Справочная служба аэропорта Информационно справочная система |
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
|
| 25.10.2011, 13:26 | |
|
Ну так если Id сотрудника не изменится, с какой стати будет изменение в журнале?
А для сохранения истории (скажем, изменение атрибутов сотрудника, например, фамилии) обычно заводится отдельная историческая таблица, куда при изменении атрибутов заносится предыдущая версия записи (например, с пом. триггера). PS Вопрос по общей теории БД (или проектированию БД) и к Delphi никакого отношения не имеет
0
|
|
|
5 / 4 / 0
Регистрация: 18.09.2011
Сообщений: 71
|
|
| 25.10.2011, 13:59 [ТС] | |
|
я имею ввиду фамилия сотрудника в журнале не должна меняться (при смене фамилии в справочнике).
0
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 25.10.2011, 15:05 | ||
Тогда я не понял, что такое журнал, и зачем там дублируется фамилия, которая уже есть в справочнике
0
|
||
|
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
|
|
| 25.10.2011, 15:29 | |
|
Если не ошибаюсь, автор уже подымал тему по структуре БД. И опять-же, если я не ошибаюсь, то там уже говорилось, что приведенную автором структуру надо переделывать т.к. она нерабочая.
0
|
|
|
1 / 1 / 1
Регистрация: 15.10.2009
Сообщений: 105
|
|
| 25.10.2011, 15:38 | |
|
https://www.cyberforum.ru/delp... 72009.html
может помочь кто-нибуть по этой теме?
0
|
|
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 25.10.2011, 15:45 | |
|
Кому нужна старая фамилия ?
Добавлено через 1 минуту Отдел, кстати, тут вообще никаким боком не стоит ибо принадлжность сотрудника к подразделению должна храниться вовсе не в справочнике сотрудников, а в штатном расписании к примеру
0
|
|
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
||
| 25.10.2011, 15:53 | ||
|
0
|
||
|
5 / 4 / 0
Регистрация: 18.09.2011
Сообщений: 71
|
|||||
| 25.10.2011, 16:04 [ТС] | |||||
|
id | id_sotr | data | info ------------------------------ 1 | 18 |28.09.2011 | AABBBB 2 | 9 |14.10.2011 | CCaaaaa 3 | 4 |16.10.2011 | FFFFggg 5 | 29 |22.10.2011 | DDDDSS Запросом в грид выводится не id сотрудника, а его фамилия. Когда она в справочнике изменится, то изменится и когда будем просматривать журнал. А мне этого не нужно. Или например если его вообще удалить из справочника, то журнал осиротеет. Ну про удаление ладно, запретим. А с изменением что делать? Или лучше не id, а сразу name сотрудника в журнал кидать? Как вообще в таких ситуациях поступают?
0
|
|||||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 25.10.2011, 16:16 | |
|
Вот в деле пусть и хранится, а причем тут справочник текущих фамилий ?
1
|
|
|
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
|
||
| 25.10.2011, 16:42 | ||
А удаление - однозначно запретить, иначе получишь так называемые висящие ссылки
1
|
||
|
5 / 4 / 0
Регистрация: 18.09.2011
Сообщений: 71
|
|
| 25.10.2011, 23:05 [ТС] | |
|
т.е. мне нужно создать доп. таблицу, в которую будут записываться значения из справочника, после события редактирования так? А из какой тогда таблицы делать выборку для журнала?
Как же всё-таки оптимальнее будет, записывать в журнал сразу фамилию или же id, но с созданием таблицы истории?
0
|
|
|
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
|
||
| 26.10.2011, 11:51 | ||
|
1
|
||
|
5 / 4 / 0
Регистрация: 18.09.2011
Сообщений: 71
|
||
| 26.10.2011, 12:28 [ТС] | ||
|
Спасибо большое всем за советы.
0
|
||
|
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
|
|
| 26.10.2011, 15:09 | |
|
Не зная предметной области и не имея понятия о Вашей модели БД, никто Вам тут ничего конкретного не подскажет, а вот просто совет дат смогут и уже давали. Я просто добавлю из собственного опыта.
В предметных областях существует несколько способов идентификации людей: - по некоторому реально существующему внутреннему номеру (Например, табельному номеру), - по суррогатному номеру (уник.идентификатору) - по некоторому реально существующему внешнему номеру (Например, инд.налоговому номеру ИНН), - по совокупности реальных сущностных реквизитов: Фимилия, Имя, Отчество, год рождения, место рождения и т.д. Ни один из перечисленных способов не является абсолютно лучшим, каждый имеет недостатки и достоинства. Выбор поэтому зависит от конкретной предметной области. Если решаемая задача из области "глобальных", т.е. нет и не может быть единого хранилища всех данных, т.е. данные собираются по мере надобности с разных мест (сетей, баз данных, ПК и т.д.) для получения некоторой сводной аналитичесчкой информации (по типу OLAP например), то конечно, лучше для идентификации следует выбирать реально существующий внешний номер. Если данные в одном месте и их целостность обеспечивается аппаратно-программными средствами (например СУБД), то часто подходит один из "внутренних" вариантов. Это "человеческий" аспект. Далее. В любой уважающей себя БД есть средства отслеживания изменений в БД, как в части метаданных, так и в части информации. Чаще всего скл-сервера используют для этого технологию журнального типа, куда автоматически заносят ЛЮБЫЕ изменения, вносимые в БД. А если таких средств нет (например в интербэйзе, ЕМНИП), то проектировщик "базовик" может таки заставить сервер выполнять подобную работу, создав "ручками" соотв. таблицы-журналы и задействовав триггеры или другие подручные тулзы. В принципе можно, имея такие журналы, вытащить на свет божий все изменения в любых таблицах и обработав их таким оразом, чтобы предоставить пользователю некоторый доп.сервис, приложив, конечно некоторые усилия (иногда неимоверные, например в мсскл) А можно самому спроектировать собственную схему журналирования, куда более экоиномную, прозрачную и "годную к употреблению" нежели "лог" скл сервера. Но это, естественно, приведет к "накладным" (т.е. непосредственно не относящимся собственно к решениею поставленной задачи и, след-но, не финансируемым) расходам мозгов и рук, зачастую весьма немалым. И, наконец, последний аспект - резервные копии. Все нормальные базы данных периодически сохраняются в архивах (бэкапах), а также очищаются от устаревшей информации (переодичность "чисток" определяется требованиям в временнОму диапазону актуальности данных и может варьировать от суток (системы видеонаблюдения, тест-регулировочные программы), до нескольких лет (системы управления предприятием, логистика, торговля..) и даже десятилетий (архивное дело). Имея архивы можно поиметь (написать, заказать профи) и систему поиска в архивах нужной информации. Либо же просто методом последовательного восстановления (Restore) и просмотра старых данных с поиском интересующий инф-ции. Резюмируя все вышенаписанное, делайте выводы и определяйте способ решения - хранение изменений как сущностей реальных объектов, журналирование либо работа с архивами БД. Либо их комбинацию
1
|
|
|
5 / 4 / 0
Регистрация: 18.09.2011
Сообщений: 71
|
|
| 26.10.2011, 15:42 [ТС] | |
|
спасибо. Очень полезная инфа.
0
|
|
| 26.10.2011, 15:42 | |
|
Помогаю со студенческими работами здесь
16
Файл Справочная Аэропорта
Справочная система Справочная информационная система
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
|
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога
Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
|
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|