Регистрация результатов ежедневных проверок с изменяющимися требованиями - PullRequest
1 голос
/ 14 декабря 2010

Я прошу прощения за заголовок, но я не мог придумать лучшего способа задать этот вопрос.

По сути, мне нужно создать модель базы данных для регистрации ежедневных проверок и параметров на различных элементах оборудования. Каждый день пользователь будет открывать форму, в которой будет перечисляться ряд задач для проверки, а также запрашивать записываемые рабочие параметры (например, температуру). Затем пользователь вводит параметры и отмечает любой элемент, имеющий проблему.

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

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

Дайте мне знать, если вам нужны какие-либо разъяснения, и спасибо за любую помощь, которую вы можете предоставить.

Редактировать (дополнительная информация)
Прямо сейчас у нас есть чистый лист Excel для каждого устройства, у него есть список проверок ... один говорит "Общая очистка гидравлической жидкости" или "Проверка на ненормальный шум / вибрацию", тогда есть пара, которые хитро говорят " Гидравлическое давление (фунт / кв.дюйм) ", и вы должны ввести давление, которое вы записали ... в среднем около 20 заданий. Затем вы помещаете свое имя на лист, датируете его, распечатываете и подписываете его ... оно заполняется, вероятно, никогда больше не будет ....

Ответы [ 2 ]

1 голос
/ 14 декабря 2010

Cam,

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

Таблица оборудования и контрольные таблицы - это две независимые сущности, имеющие основной список оборудования и проверок соответственно.

Настройка

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

Фактическое ведение журнала

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

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

a) Какие проверки необходимы для этого оборудования на сегодняшний день?

б) Какие проверки были необходимы для оборудования на указанную дату

в) Из необходимых проверок, сколько было выполнено, а сколько - нет (сегодня и в любой день).

d) Из выполненных проверок, сколько пройдено / не выполнено.

alt text

create table equipment(
   equipment_id number primary key,
   equipment_name varchar2(200) not null
   );

create table checks(
   checkid number primary key,
   check_name varchar2(100) not null
  );

create table equipment_check_asc(
   equipment_check_asc_id number primary key,
   equipment_id number not null,
   checkid number not null,
   eff_date date not null,
   end_date date ,
   eff_flag varchar2(1) not null, -- kind of redundant, easier to find the checks effective today.
   constraint fk_equipment_id foreign key (equipment_id) references equipment(equipment_id),
   constraint fk_checkid      foreign key (checkid) references checks(checkid),
   constraint unq_check       unique (equipment_id,checkid,eff_date)
);

create table equipment_check_audit(
    audit_id number primary key,
    equipment_check_asc_id number not null,
    pass_fail_ind varchar2(1) not null,
    audit_date date not null,
    constraint fk_check_id foreign key (equipment_check_asc_id ) references 
       equipment_check_asc (equipment_check_asc_id)
);

Могут быть и другие угловые случаи, которые вам, возможно, придется покрыть и смоделировать для, но это должно дать вам общее представление.

Вот данные, с которыми я тестировал.

insert into equipment values (1, 'Item 1');
insert into equipment values (2, 'Item 2');
commit;

insert into checks values (100, 'Temperature');
insert into checks values (101, 'Robustness' );
insert into checks values (102, 'Stable'     );
commit;

insert into equipment_check_asc values (1000,1,100,sysdate-10, NULL , 'Y');
insert into equipment_check_asc values (1001,1,101,sysdate-10, NULL , 'Y');
insert into equipment_check_asc values (1002,1,102,sysdate-2 , NULL , 'Y');

insert into equipment_check_asc values (1003,2,100,sysdate-30,  sysdate-1 , 'N');
insert into equipment_check_asc values (1004,2,101,sysdate-30,  NULL    , 'Y');

commit;

delete from equipment_check_audit;

/*** Item A ***/

---checks made on 12/09
insert into equipment_check_audit values (10000, 1000, 'Y', sysdate-5);
---insert into equipment_check_audit(10000, 1000, 'Y', sysdate-5); No checks made on robustness even when it was needed.
-- no check done on stability. (as it was not needed).

---checks made today. (all positives case)
insert into equipment_check_audit values (10001, 1000, 'Y', sysdate);
insert into equipment_check_audit values (10002, 1001, 'N', sysdate);
insert into equipment_check_audit values (10003, 1002, 'Y', sysdate);
commit;

/*** Item B ***/
--checks made on 12/9
insert into equipment_check_audit values (10004, 1003, 'Y', sysdate-5);
--checks made today.
insert into equipment_check_audit values (10005, 1004, 'Y', sysdate);
commit;
1 голос
/ 14 декабря 2010

Я хотел бы предложить разбить его на компоненты ... так что у каждого устройства есть список "задач", и затем каждая из этих задач может быть создана и даже повторно использована на нескольких устройствах, если у вас есть общие черты.Таким образом, если требования меняются, вы можете просто создавать новые задачи.Для разработки пользовательского интерфейса, который выглядит неплохо с точки зрения редактирования и отображения конечного результата, может потребоваться немного усилий, но я бы сказал, что для этого стоит пойти.

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

...