2016-05-10 7 views
1

私は現在、簡単な予約システムを開発中で、いくつかの範囲を選択してmysqlデータベースに保存する必要があります。MySql:日付範囲を保存して1日を保存する

問題私が直面しているのは、範囲を保存したり、毎日別々に保存する方が良いかどうかを判断することです。

約500のプロパティがあり、それぞれ2〜5カ月間の予約があります。

クライアントは自分のプロパティを挿入し、利用できない日付を選択します。誰かが財産を帳簿に入れたときも同じことが起こります。

私は利用できない日付のために別のテーブルを持つことを考えていたので、1つのレコードを持つ代わりにプロパティが10から20まで予約されている場合、(2016-06-10 => 2016-06-20)は予約された日ごとに1つずつ、

これは、日付間で検索するときには使いやすいと思いますが、わかりません。

パフォーマンスが著しく悪化しますか?

範囲または1日を保存する必要がありますか?

は、私はすべての「イベント」がひとつのテーブルに行くと、彼らはすべての開始と終了の日時を持っていることを助言するあなた

答えて

2

ありがとうございます。もちろん、これらのフィールドにインデックスを使用することをお勧めします。

理由は、予約と利用可能なイベントを探しているときに、2つの異なるテーブルから選択したり、参加したりしないという理由があります。また、SQLクエリー内で簡単にチェックを行うことができ、イベントを処理するすべてのPHPコードが両方の標準として機能するので、コード全体を保存するほうがはるかに優れています。あるイベントタイプを別のイベントタイプだけに保存​​する場合は、コード内に「if」があり、SQLを書き込むのがより難しくなります。

私は現在多くの予約システムを運用しており、この分野で間違いを犯しているので、これは良いアドバイスであり、良い質問でもあります。

+0

ありがとうございます。私の主な問題は、私が探していると思います。誰かが2つの日付を選択すると、各プロパティはすでに予約されている複数の範囲を持つため、クエリはかなり大きく複雑なものになります。 –

+0

私は同じフォーマットの同じテーブルで両方をお勧めする理由を理解しています。はい、クエリが多分大きいかもしれませんが、言及された他のオプションよりも管理が速くて簡単です。 – Barry

+0

私は日付範囲を持つ別のテーブルに行きます、もう一度ありがとうございます。 –

1

これはコメントのために多すぎる、だから私はので、テーブルの主キーはPROPERTY_IDと特定の月の日だろう答え

としてこれを残します。 私はそれをお勧めしません。このロジックを5年または10年のシステムに適用するシナリオを考えてみると、パフォーマンスは悪くなります。約30 * 12 * 1 = 360 raws 1年間 。予約の期間を計算し、それをユーザーに対してテーブルに追加するロジックを実装します。

関連する問題