SQL базы данных и таблицы переходов - PullRequest
0 голосов
/ 03 декабря 2018

Я работаю над академическим заданием по SQL, и мне нужна помощь в организации таблиц переходов из более крупной схемы таблиц.Мне было поручено создание таблиц переходов для следующей схемы: Схема продаж

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

Я не уверен, как приблизиться к таблицам переходов для более крупной схемы.До сих пор я придумал:

TransTable1(ReceiptNumber, Prod_ID, SalesCode)
Primary Key: SalesCode
Foreign Key: ReceiptNumber

TransTable2(Invoice_Number, Item_Number, Prod_ID)
Primary Key: SalesCode
Foreign Key: ReceiptNumber

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Существуют OLD и NEW переменные записи для FOR EACH ROW триггеров?Таблицы переходов являются FOR EACH STATEMENT эквивалентами.Это таблицы со старым и новым кортежами, поэтому ваши триггеры могут видеть, что изменилось. Они доступны только для AFTER триггеров. Подробнее о таблицах переходов

Схемы должны формироваться таким образом, чтобы мы сохраняли определенные зависимости, поскольку это повышает эффективность работы базы данных.Я хотел бы создать схему, в которой Invoice и Invoice_Item находятся в одной таблице, поскольку они зависят друг от друга и имеют Invoice_Number в качестве первичного ключа.Далее я бы сделал Inventory_Item и Inventory_Product как одну таблицу, имеющую Item_Number в качестве первичного ключа.Доступ к данным в обеих этих новых комбинированных таблицах можно получить с помощью Item_Number.

0 голосов
/ 03 декабря 2018

Таблицу Invoice и Invoice_Item можно превратить в одну таблицу переходов, а Inventory_Item и Inventory_Product - в одну таблицу переходов.Это связано с тем, что оператор триггера, записанный в одной из таблиц, напрямую влияет на другую.Например, триггер на Invoice напрямую влияет на Invoice_Item.Таблицы переходов могут быть сделаны только для чтения.

CREATE TRIGGER Invoice_Trigger AFTER UPDATE OF Quantity_Added ON Invoice_Item REFERENCING Invoice_Item AS N_TABLE NEW AS N_ROW FOR EACH ROW WHEN ((SELECT Item_Number FROM N_TABLE) > (*trigger condition comes here*) BEGIN ATOMIC VALUES(INFORM_SUPERVISOR(N_ROW.Item_Number, N_ROW.Quantity_Added, N_ROW.Invoice_Number)); END

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...