2013-03-15 45 views
0

我正在做一些预订系统,并且我已经提出了几个表格,其中包括以下三个表格及其关系。如何创建一个视图,以获得从另一个表中计算出的列值

ROOM_PRICES 
    ROOM_TYPE VARCHAR (10), # e.g Suite 
    ROOM_CAPACITY INTEGER, # e.g 3 
    ROOM_PRICE INTEGER,  # e.g 50 
    Primary Key (ROOM_TYPE, ROOM_CAPACITY); 

ROOMS 
    ROOM_NUMBER VARCHAR (3) PRIMARY KEY, # e.g A10, B21 
    ROOM_TYPE VARCHAR (10), 
    ROOM_CAPACITY INTEGER, 
    IS_RESERVED BOOLEAN DEFAULT FALSE, 

RESERVATIONS 
    RESERVATION_CODE INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY 
                (START WITH 1, INCREMENT BY 1), 
    ROOM_NUMBER VARCHAR (3) NOT NULL, 
    RESERVATION_TIMESTAMP TIMESTAMP NOT NULL, 
    START_DATE DATE NOT NULL, 
    END_DATE DATE NOT NULL, 
    TOTAL_PRICE INTEGER NOT NULL, # the value I'm looking for 
    CONSTRAINT RESERVATION_UNQ_TIMESTAMP UNIQUE (RESERVATION_TIMESTAMP), 
    CONSTRAINT RESERVATION_ROOM_FK FOREIGN KEY (ROOM_NUMBER) REFERENCES ROOMS 
                    (ROOM_NUMBER) 

假如您有房间号码,我将如何获得预订总价。我也读过,我不应该有total_price列存储在数据库中,但在视图或作为计算列获得。我在不了解太多SQL的情况下进行了数据建模以了解程序和功能。

所以有人可以帮助我什么来获取总价格最好的办法并询问是否保存与否,还是我不得不改变莫名其妙模型...

我使用的德比。目前没有任何优惠券,但价格可能在未来发生变化,但不应因报告制作而改变已保存的预订。我只是想根据房间类型,容量和住宿时间计算一次预订的总价。价格是每晚。

+1

哪个DBMS是? DB2?德比? – 2013-03-15 17:34:55

+0

答案与“数据库问题”几乎总是一样,是“取决于”。这是功课吗?你应该定义什么总价*意味着*。预订期间的房价总计是多少?在不同的日子,房间的价格是不同的如果用户有优惠券怎么办?等等... – 2013-03-15 17:36:01

+0

你的房间表没有IsSmoking_YN,它不会是一个好的预订系统。 LOL 总的来说,您的预订系统的数据模型有点太简单了,我不确定您只是想为实践或实际产品编写代码。 – ljh 2013-03-15 18:20:57

回答

0

这不是一个真正的答案,但是这个link扩大了我的想法。感谢您的建议

相关问题