Помогите исправить SQL код

программирование базы данных sql

На всякий случай привожу полный код. В таблице "товары магазинов" необходима колонка стоимость (выделена вопросами), рассчитываемая, но так как написано не работает (очевидно так брать значение из другой таблицы нельзя), как правильно? Помогите!
А да, в SQL шарю чуть более чем никак.

CREATE TABLE Magazini (
Nomer_magazina INTEGER NOT NULL,
Ulica CHAR(25),
Nomer_doma SMALLINT,
Ploshad DECIMAL(6,2),
Familiya_upr CHAR(20),
Imya_upr CHAR(20),
Otchestvo_upr CHAR(20),
Nazvanie_magazina CHAR(20),
PRIMARY KEY (Nomer_magazina)
);

CREATE UNIQUE INDEX XPKMagazini ON Magazini
(
Nomer_magazina
);


CREATE TABLE Tovari (
Kod_tovara INTEGER NOT NULL,
Nazvanie_tovara CHAR(20),
Edenici_izmereniya CHAR(5),
Kolvo DECIMAL(10,2) DEFAULT 0,
Cena DECIMAL(10,2) DEFAULT 0,
PRIMARY KEY (Kod_tovara),
CHECK (Kolvo>=0),
CHECK (Cena>=0)

);

CREATE UNIQUE INDEX XPKTovari ON Tovari
(
Kod_tovara
);


CREATE TABLE Tovari_magazinov (
Nomer_magazina INTEGER NOT NULL,
Kod_tovara INTEGER NOT NULL,
Kolvo_vmagazine DECIMAL(10,2) DEFAULT 0,
?????????????????????????????????????????????????????????????????????????????
Stoim COMPUTED BY (Tovari.Cena * Kolvo_vmagazine),
?????????????????????????????????????????????????????????????????????????????
CHECK (Kolvo_vmagazine>=0),
PRIMARY KEY (Nomer_magazina, Kod_tovara),
FOREIGN KEY (Kod_tovara)
REFERENCES Tovari
ON DELETE CASCADE
ON UPDATE CASCADE,

FOREIGN KEY (Nomer_magazina)
REFERENCES Magazini
ON DELETE CASCADE
ON UPDATE CASCADE

);

CREATE UNIQUE INDEX XPKTovari_magazinov ON Tovari_magazinov
(
Nomer_magazina,
Kod_tovara
);

Примечание:
Это как раз лаба.
Ответы:
1. Так нельзя с точки зрения SQL: вычисляемое поле основывается только на данных текущей записи в этой таблице
2. Так нельзя с точки зрения бизнес-логики: цена и количество товара вещи не постоянные. Более того, если эта разработка предназначена для практического применения (а не что-то вроде лабораторной работы), то нужно хранить историю того и другого.
3. Отсюда два выхода:
* не хранить нужный показатель, а вычислять его при запросе - это правильное решение
* обновлять таблицу на триггерах на изменение таблиц Tovari и Tovari_magazinov


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.