【发布时间】:2019-05-22 13:16:15
【问题描述】:
问题:存储带有日期的 start_price。价格可以多次更改,并且还应该存储价格更改的原因。
除了制作价格变化表之外,我想不出其他方法吗?
CREATE TABLE price (
start_price decimal(4,2) NOT NULL,
price_date timestamp,
PRIMARY KEY (start_price, price_date)
);
CREATE TABLE pricechange (
start_price decimal(4,2) NOT NULL,
new_price decimal(4,2) NOT NULL,
price_date date NOT NULL,
reason varchar(100),
FOREIGN KEY (start_price, price_date)
REFERENCES price(start_price, price_date)
);
我在 pricechange 表中收到错误,我也不知道如何实际使用 sql 将价格从 price 存储到 pricechange 并将新价格存储为价格。
例如 price = 100。newprice = 50 原因:太贵了。应该是这样的:
价格表: 当前价格:50 price_date:价格创建的时间戳
价格变化: 起始价格:100 新价格:50 日期:价格变化的时间戳 原因:太贵了
【问题讨论】:
-
您需要在
pricechange中为更改日期设置一个单独的列,您不能为此使用price_date,因为它是 FK 的一部分 -
次要点...您的价格列使用
decimal(4,2),其范围为-99.99 到+99.99,即您的示例中100 的价格对于定义的列来说太大而无法存储!跨度>
标签: mysql sql database-design