2017-10-14 124 views
0

我想爲日曆應用程序設置PostgreSQL數據庫,並想知道設置其中一個表的首選方式是什麼。數據庫表設計/設置

如果我想必須有多個用戶,將設置的最佳方式表:

用戶名|開始時間|結束時間|活動|

或者這將是更好的事:

用戶ID |活動| 8am |上午8:30 |上午9點| ... | 12am | ... |上午7:30 |

時間粒度可能是15分鐘或5分鐘,如果這將是更好的選擇。

第一種方式可能會更乾淨,但理想情況下我不想讓事情重疊,但第二種方式可能更難以使用?

+1

第一種選擇更好。但是,也許你應該實施第二種選擇,以便了解爲什麼這是一個糟糕的設計。所以...如果你真的想要製作一個工作的應用程序,那就去#1。如果你想學習一個負面的教訓,去#2。祝你好運。 –

+0

*「理想情況下,我不想讓事情重疊......」*要做到這一點,第一種方法,你可能需要實現StartTime,EndTime作爲[範圍數據類型](https://www.postgresql .org/docs/current/static/rangetypes.html),並使用排除約束(相同的鏈接)來保證沒有重疊。您可能也需要btree_gist擴展名(同一鏈接)。 –

回答

1

你的第一個例子更好。但是,至少有3張桌子。

  1. 用戶 - 您定義它。
  2. 時刻表:RowID |用戶ID |開始時間(日期時間)|結束時間(日期時間)|活動ID
  3. 活動 - 您可以定義活動詳細信息。