|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
|
советы в задании30.11.2012, 01:28. Показов 837. Ответов 13
Метки нет (Все метки)
Вот такое задание
В корпоративной БД должна хранится информация о некоторых объектах(атрибуты–имя, тип, состояние объекта). Пользователи системы могут менять состояние объекта, есть ограничения на возможность перехода из состояния в состояние. Большинство правил по возможности перехода из состояния в состояние имеют вид "возможен переход состояние X->состояние Y", но в небольшом кол-ве случаев есть более сложные ограничения которые должны быть проверены Delphi кодом(например пользователь входящий в доменную группу X имеет возможность перевести объект в состояние Y). Необходимо смоделировать схему БД(Firebird) и реализовать следующие операции(Delphi 7 или выше): - Перевод объекта из состояния в состояние(хранимой процедурой) с проверкой ограничений(в качестве "сложного" ограничения можно взять "только пользователь работающий на компьютере под управлением WINDOWS7, имеет право переводить объекты в состояние 2"). - Выборка истории переходов объекта из состояния в состояние. - Подсчет времени которое объект находился в некотором состоянии. Я не прошу за меня сделать задание, я прошу совета! Как я планирую сделать задание: 1.Создать 5 таблиц name id_name INTEGER NOT NUL name VARCHAR(50) NOT NUL type id_type INTEGER NOT NUL type VARCHAR(10) NOT NUL id_state INTEGER NOT NUL state VARCHAR(10) NOT NUL object art INTEGER NOT NUL name INTEGER NOT NUL type INTEGER NOT NUL state INTEGER NOT NUL history id_history INTEGER NOT NUL namehistory VARCHAR(50) NOT NUL statehistory VARCHAR(10) NOT NUL timehistory VARCHAR(50) NOT NUL 2.Большинство правил по возможности перехода из состояния в состояние имеют вид "возможен переход состояние X->состояние Y", но в небольшом кол-ве случаев есть более сложные ограничения которые должны быть проверены Delphi кодом(например пользователь входящий в доменную группу X имеет возможность перевести объект в состояние Y). if state = 1 then state = 2 3.Перевод объекта из состояния в состояние(хранимой процедурой) с проверкой ограничений(в качестве "сложного" ограничения можно взять "только пользователь работающий на компьютере под управлением WINDOWS7, имеет право переводить объекты в состояние 2"). Пока непонятно (хранимой процедурой) 4.Выборка истории переходов объекта из состояния в состояние. pFIBDataSet1.Insert; pFIBDataSet1['namehistory'] := - добавление в базу объекта pFIBDataSet1['statehistory'] := - добавление в базу состояния pFIBDataSet1['timehistory'] := - добавление в базу времени pFIBDataSet1.Post 5.Подсчет времени которое объект находился в некотором состоянии. С помощью timeout. Некоторые вещи которые я пишу, на ваш взгляд глупые, не обессудьте, но я только учусь работать с базами данных и delphi! Очень хочется стать квалифицированным программистом!Заранее большое спасибо!Каждому совету буду очень рад!
0
|
|
| 30.11.2012, 01:28 | |
|
Ответы с готовыми решениями:
13
10 задании Непонятки в задании Ошибка в задании? |
|
685 / 241 / 13
Регистрация: 02.04.2009
Сообщений: 692
|
||
| 30.11.2012, 09:15 | ||
|
Объекты (id, name, id_type, id_state) , Типы (id,name) , Состояния (id,name) , Возможные переходы состояний (id, idstate_from, idstate_to) , История (id, datetime_change, id_obj, id_type, id_state).
"Объекты": название и пара внешних ключей на тип и состояние (в данном случае "актуальное на момент запроса"). "Типы", "Состояния": ну тут всё и так понятно. "Возможные переходы состояний": отношение перечисления движений. Пример записи: из состояния 2 возможен переход в состояние 4 - Возможные переходы состояний(1,2,4). "История": ДатаВремя изменения, ключ на объект над которым совершалось изменение, ключ на тип который ранее был у объекта до изменения, ключ на состояние которое было у объекта до изменения. Я бы сделал так)
2) Таблица истории 3) Таблица истории. Например находишь объект и разницу во времени между последним изменением и предпоследним.
1
|
||
|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
|||||||
| 30.11.2012, 12:01 [ТС] | |||||||
|
большое спасибо!
0
|
|||||||
|
685 / 241 / 13
Регистрация: 02.04.2009
Сообщений: 692
|
|||||||
| 30.11.2012, 12:45 | |||||||
|
Добавлено через 5 минут В mssql я бы написал нечто простенькое:
Аккуратнее с такими названиями атрибутов и таблиц, можешь зацепить какие-нибудь зарезервированные Firebird'a
1
|
|||||||
|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
||||||
| 03.12.2012, 13:20 [ТС] | ||||||
|
Я делаю в ibexperi.
Я так понимаю
у меня пишет ошибку "@"
0
|
||||||
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
||
| 03.12.2012, 14:18 | ||
1
|
||
|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
|
| 03.12.2012, 15:59 [ТС] | |
|
А функцию getdate() на что заменить?!
0
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
| 03.12.2012, 16:51 | |
|
current_date
Книжка по SQL для Firebird с примерами в среде IBExpert. http://narod.ru/disk/172091960... K.pdf.html
1
|
|
|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
|
| 03.12.2012, 17:37 [ТС] | |
|
Помогите пожалуйста с этим
Большинство правил по возможности перехода из состояния в состояние имеют вид "возможен переход состояние X->состояние Y", но в небольшом кол-ве случаев есть более сложные ограничения которые должны быть проверены Delphi кодом(например пользователь входящий в доменную группу X имеет возможность перевести объект в состояние Y) я хотел бы сделать: что бы при выборе состояния 1 он оставался на 1 состоянии, но мог перейти на состояние 2, а при выборе состояние 2 он оставался на состояние 2, но мог перейти на состояние 3, но при этом не мог перейти на состояние 1
0
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
||
| 03.12.2012, 17:49 | ||
Если при проверке перехода состояния объекта, условие удовлетворяется, то в историю записываем новое состояние объекта (это уже модифицирующий запрос insert).
1
|
||
|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
|
| 07.12.2012, 00:54 [ТС] | |
|
Пожалуйста можешь написать пример кода?!Очень прошу!!!
0
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
|
| 07.12.2012, 01:32 | |
|
Пример, пожалуйста. Только какого кода?
Если все реализовывать что понаписано словами, то это много, да и долго. Ежели чего конкретно...
0
|
|
|
12 / 12 / 1
Регистрация: 23.10.2012
Сообщений: 112
|
|
| 07.12.2012, 01:44 [ТС] | |
|
что бы при выборе состояния 1 он оставался на 1 состоянии, но мог перейти на состояние 2, а при выборе состояние 2 он оставался на состояние 2, но мог перейти на состояние 3, но при этом не мог перейти на состояние 1, при выборе состояние 3 он оставался на состояние 3, но мог перейти на состояние 4, но при этом не мог перейти на состояние 1 и 2, при выборе состояние 4 он оставался на состояние 4, но мог перейти на состояние 5 и 1, но при этом не мог перейти на состояние 2 и 3.Заранее большое спасибо за помощь и отзывчивость!
0
|
|
|
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
|
||||||
| 07.12.2012, 02:22 | ||||||
|
Вот опять эти слова, которые уже неоднократно приводились. Ну, не знаю, может так, но только не через ХП.
И на структуре БД, которую дал reiteriX - она более правильная. - в комбобоксе на форме вставлено, через свойство Items, пять строк с номерами состояний (1, 2, ... 5). - проверяем состояние объекта и выставляем в комбобоксе строку, которая соответствует состоянию:
ID_O : Integer: - переменная, где сохраняется id проверяемого объекта. Выборка из истории изменений состояний с помощью order by ... desc выбираем самое позднее изменение состояния. Дальше нужно будет обрабатывать выбор состояния. --- Трудно что-то делать при неясной общей картине приложения и БД.
1
|
||||||
| 07.12.2012, 02:22 | |
|
Помогаю со студенческими работами здесь
14
Разметка в задании Помогите разобраться в задании!!!! Премия в 18 задании по Радченко Не могу разобраться в задании Ошибка в 18 задании по Радченко Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
Программный отбор значений справочника
Maks 21.03.2026
Установка программного отбора значений справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит предопределенное значение перечислений.
Процедура. . .
|
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
|
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|