Во время стажировки в университете мне было поручено создать веб-приложение для управления обслуживанием на заводе, на котором я работаю. Я инженер-технолог, обладающий лишь небольшими знаниями в области программирования баз данных, поэтому, возможно, этот вопрос поможет звучит легко для вас, я прошу прощения.
Такова ситуация: деталь представляет собой форму, которая нуждается в обычном обслуживании после ряда операций (огромное количество, я говорю о производстве плитки, и частота обслуживания может быть принята как среднее значение один раз в год) , Я настроил базу данных и подключенное к ней веб-приложение и создал представление со списком пресс-форм и соответствующей кумулятивной работой, чтобы ответственный отдел мог быстро оценить ситуацию и увидеть, какие пресс-формы нуждаются в обслуживании, и это прекрасно работает.
Проблема в том, что они «пометили» формы, и я использовал это число в качестве идентификатора строки в базе данных. Когда обслуживание выполняется, накопительная работа должна быть сброшена, но он хочет сохранить исторические данные о рабочих операциях.
Таким образом, теперь мне нужно «сообщить системе», когда элемент обслуживается, затем ему необходимо сбросить совокупное значение, сохранив исторические данные.
Значения для созданного мною представления взяты из 2 разных таблиц: Molds и UnmountingOperations. В последней есть информация о том, на каком прессе была установлена пресс-форма, и об общей работе, выполненной во время этой операции. Я думаю, что решение заключается в использовании триггеров, но я хотел бы спросить:
Какая лучшая практика для этого?
вот сценарии, созданные управляющей студией SqlServer. Извините, но названия записей на итальянском.
стол прессформы:
CREATE TABLE [dbo].[Stampo](
[ID] [int] NOT NULL,
[Formato] [nchar](10) NOT NULL,
[n∞ uscite] [int] NULL,
[Spessore] [nchar](10) NULL,
[Descrizione] [nvarchar](max) NULL,
[Fornitore] [nvarchar](50) NULL,
CONSTRAINT [PK_Stampo] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
пресс стол:
CREATE TABLE [dbo].[Pressa](
[Numero] [int] NOT NULL,
[Modello] [nchar](10) NULL,
CONSTRAINT [PK_Pressa] PRIMARY KEY CLUSTERED
(
[Numero] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ассоциативный пресс-форма для операций размонтирования (mq_pressati) - драйвер объема работы, используется для прессованных квадратных метров:
CREATE TABLE [dbo].[SmontaggioStampi](
[NumeroPressa] [int] NOT NULL,
[IDStampo] [int] NOT NULL,
[DataSmontaggio] [datetime] NOT NULL,
[mq_pressati] [int] NOT NULL,
[Descrizione] [nvarchar](max) NULL,
CONSTRAINT [PK_Produzione presse] PRIMARY KEY CLUSTERED
(
[NumeroPressa] ASC,
[IDStampo] ASC,
[DataSmontaggio] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[SmontaggioStampi] WITH CHECK ADD CONSTRAINT [FK_SmontaggioStampi_Pressa] FOREIGN KEY([NumeroPressa])
REFERENCES [dbo].[Pressa] ([Numero])
GO
ALTER TABLE [dbo].[SmontaggioStampi] CHECK CONSTRAINT [FK_SmontaggioStampi_Pressa]
GO
ALTER TABLE [dbo].[SmontaggioStampi] WITH CHECK ADD CONSTRAINT [FK_SmontaggioStampi_Stampo] FOREIGN KEY([IDStampo])
REFERENCES [dbo].[Stampo] ([ID])
GO
ALTER TABLE [dbo].[SmontaggioStampi] CHECK CONSTRAINT [FK_SmontaggioStampi_Stampo]
GO