2014-06-17 69 views
0

您好,我在設計一個Web應用程序數據庫模式的問題。針對網絡應用程序的數據庫設計

假設我有10家商店,每家商店都在週日的星期日等提供優惠,在有限的時間段內,有些商店會在下午4點到下午5點左右,8點到10點,4點到10點進行交易。

除此之外我有幾類在其商店將給優惠等啤酒酒食品等

例如

假設類別1 2 3 4 5

商店A上給出交易1日和2日星期日從下午4點到6點A店在週一從7點到8點給予週一和週三的優惠。A店在週三7點到8點給予1和5的優惠

B店給予1星期日4點至6點2點。B店給予2點和2點優惠星期一至星期五晚上7點至晚上8點B店在星期四從7點到8點提供1日和4點優惠

C店在週日5點至6點提供1日和3日優惠.C店給出3日和5日優惠週五下午5點至8點商店C於4日至8日在週五提供2日和4日優惠

任何商店都有可能每天提供相同類型的交易,或者可能是3天,4天或5天一週和休息日不同,像

D店在星期日,星期一,星期二,星期五,下午5點到下午6點給予1和3的優惠。

e店在週日,週一,週二,週五的5日至6日提供1日和5日的優惠。商店e在星期四和星期六下午2點和4點交易。

在這種情況下會有冗餘,相同類型的數據,我也想停下來

現在我完全糊塗了,我應該如何設計這個問題的數據庫的口是心非。

我使用postgress

幫助將不勝感激

感謝

+4

這個問題似乎是脫離主題,因爲它是一個需求描述。 –

+1

我認爲尋求幫助確定數據庫地圖的範圍是非常合理的。海報提供了大量的例子和細節。他們不只是說「爲我映射我的關係」。他們說「幫我想辦法」。 – Chiperific

+0

@MitchWheat爲什麼這個問題脫離主題時,這種類型的問題有一個很大的先例。看到這裏:http://stackoverflow.com/questions/2617711/should-this-database-table-be-normalized?rq=1在這裏:http://stackoverflow.com/questions/2397916/what-is-the -best-database-design-for-this-table-when-you-have-two-type-of-recor?rq = 1這裏:http://stackoverflow.com/questions/8302054/database-schema-pattern -for-grouping-records?rq = 1實際上可以看到相關部分中的幾乎所有問題 - >>。 – Chiperific

回答

1

我想到的第一件事:由 「記錄」 表連接

三個靜態表:

店鋪:

| id | Name | 
~~~~~~~~~~~~~ 
| 1 | A | 
------------- 
| 2 | B | 
------------- 
| 3 | C | 
------------- 
...and so on... 

時限(日/時限連擊):

| id | Day | StartTime | EndTime| 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
| 1 | Mon | 2:00pm | 3:00pm | 
--------------------------------- 
| 2 | Mon | 7:00pm | 8:00pm | 
--------------------------------- 
| 3 | Sun | 2:00pm | 3:00pm | 
--------------------------------- 
... and so on... 

分類:

然後是你的記錄表:

| id | Shops_ids | Timeframe_ids | Category_ids | 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 

在這個表格裏面,你存儲arrays (possible in PostreSLQ)。這使你避免擁有這麼多幾乎重複的行。

例如:「商店A和B是上週一和週日類別2和3,從下午2時至下午3時這兩個產品的交易」可以存儲爲:

| id | Shops_ids | Timeframe_ids | Category_ids | 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
| 1 | [1,2]  | [2,3]   | [1,3]  | 
------------------------------------------------- 

然而,一個點關係數據庫是後端的數據可能很複雜,而且計算機能夠很快找到數據。因此,如果我是你,我將創建帶有單個值的表,你可以爲最有可能搜索的列編制索引,這對於數組值是很難做到的。 記錄表將會很大且雜亂,但更容易查詢。


1)商店A至週五給出了關於從下午4點至在星期一下午5點的類別1和3的協議

2.)B鋪給出類別1和3的協議星期四和星期六從下午1點到6點

鑑於:商店和類別已在各自的表格中。

讓我們調整我們的 '天' 的定義,以適應以下幾點:

M =週一

T =週二

W =週三

H =週四

一=星期六

U =星期日

(此字符串可以從一系列的複選框來生成表單上,以保持格式化)

時限

| id | Day | StartTime | EndTime| 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
| 1 | M | 2:00pm | 3:00pm | 
---------------------------------- 
| 2 | M | 7:00pm | 8:00pm | 
---------------------------------- 
| 3 | FAU | 2:00pm | 3:00pm | *(Friday, Sat, Sunday) 
---------------------------------- 
| 4 | MTWHF| 4:00pm | 5:00pm | *Shop A's sale. 
---------------------------------- 
| 5 | HA | 1:00pm | 6:00pm | *Shop B's sale. 
---------------------------------- 

記錄

| id | Shops_ids | Timeframe_ids | Category_ids | 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
| 1 | [1,2]  | [2,3]   | [1,3]  | 
------------------------------------------------- 
| 2 | 1   | 4    | [1,3]  | *Shop A's sale 
------------------------------------------------- 
| 3 | 2   | 5    | [1,3]  | *Shop B's sale 
------------------------------------------------- 

希望有所幫助。

+0

Hello Chiperific感謝您的幫助,我對時間表有點懷疑,因爲時間價值是可變的,取決於商店在什麼時間交易。所以你認爲我應該使用這張表。 –

+0

該表格也有許多非常相似的行,但如果有一個唯一的字段,則該行是唯一的。同樣,數據庫旨在快速排序這些事情,所以即使您在週一有20行,時間框架略有不同,也不會導致明顯的減速。 – Chiperific

+0

我可以讓你的谷歌環聊ID或skype ID –

相關問題