鍍金池/ 問(wèn)答/PHP  數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全/ 日期不同而價(jià)格不同的數(shù)據(jù)庫(kù)設(shè)計(jì),是不是不應(yīng)該用開(kāi)始結(jié)束時(shí)間?

日期不同而價(jià)格不同的數(shù)據(jù)庫(kù)設(shè)計(jì),是不是不應(yīng)該用開(kāi)始結(jié)束時(shí)間?

現(xiàn)在做的酒店的價(jià)格,某個(gè)日期會(huì)把價(jià)格變動(dòng)。數(shù)據(jù)庫(kù)結(jié)構(gòu)大長(zhǎng)這個(gè)樣子。忽略大多數(shù)字段,room_type是房型的 id,價(jià)格是對(duì)他進(jìn)行綁定。

+------------+------------------+------+-----+---------+----------------+
| Field      | Type             | Null | Key | Default | Extra          |
+------------+------------------+------+-----+---------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL    | auto_increment |
| hotel_id   | int(11)          | NO   |     | NULL    |                |
| room_type  | int(11)          | NO   |     | NULL    |                |
| price      | decimal(10,2)    | NO   |     | NULL    |                |
| start_date | date             | NO   |     | NULL    |                |
| end_date   | date             | NO   |     | NULL    |                |
+------------+------------------+------+-----+---------+----------------+

這個(gè)是插入時(shí)我認(rèn)為會(huì)出現(xiàn)的情況:

https://i.loli.net/2018/08/29...
這是圖片地址, sf 會(huì)縮小地址
https://i.loli.net/2018/08/29/5b85f4c27ba5e.png

總共有四種可能(圖中的三種 + 查不到記錄,直接插入數(shù)據(jù)),每一個(gè)可能,因?yàn)閰^(qū)間貼合不貼合的問(wèn)題又分出四種(貼合,左貼合右不貼合,右貼合左不貼合,兩邊都不貼合)。總共就是 3*4 + 1


是不是這種問(wèn)題在數(shù)據(jù)庫(kù)就有更好的解決方法?望做過(guò)的朋友指點(diǎn)指點(diǎn)。


重新上傳了圖片,之前會(huì)被模糊掉


如果不在插入時(shí)做處理。

                                          130$   
                                 +-----------------+
                                 |                 |
                                 v                 v
                      150$
     +----------------------------------------------------------+
     |                                                          |
     v      120$                                                v
+-------------------+           
|                   |    
v                   v           
  +--------------------------------------------+
 開(kāi)始日期                                      結(jié)束日期

我要查詢開(kāi)始日期到結(jié)束日期的價(jià)格,實(shí)際上是,有三段分別是 120 ~ 150 ~ 130
如果不在插入的時(shí)候分別讓他們的開(kāi)始到結(jié)束時(shí)間不沖突,你打算怎么做。

回答
編輯回答
懶洋洋
  1. 該表我覺(jué)得沒(méi)有必要加begin_date、end_date字段
  2. 對(duì)于價(jià)格隨時(shí)間變動(dòng)的應(yīng)該吧price、begin_dateend_date和相應(yīng)的房型組成一個(gè)新的表
  3. 查詢的時(shí)候根據(jù)當(dāng)前或者選中的時(shí)間查詢2中的表,命中則使用2表中的價(jià)格,未命中則使用1表中的默認(rèn)價(jià)格。
  4. 這樣一個(gè)房型可以有多個(gè)價(jià)格區(qū)間,可以達(dá)到定制某個(gè)時(shí)間段的價(jià)格,甚至可以疊加,比如7月-10月價(jià)格100,但是七夕價(jià)格10,取最新的值就好了,或者標(biāo)記置頂?shù)闹怠?/li>
2018年4月13日 03:27
編輯回答
款爺

理論問(wèn)題都不大

盡量抽出理論實(shí)體對(duì)象和根據(jù)業(yè)務(wù)形態(tài)做

比如,價(jià)格跟著房型,房型可以根據(jù)日期定價(jià),最終用戶下單的價(jià)格是一條訂單記錄,都可以抽象成一個(gè)具體實(shí)體表!

訂單記錄完整記錄信息:
用戶信息,房型,房間號(hào),下單日期,優(yōu)惠等等

具體查詢相關(guān)的,我就不就具體了,因?yàn)椴涣私饽愕膶?shí)際業(yè)務(wù)

2018年7月6日 20:31