イベント情報のデータベースを作成していますが、
どのように日付情報をデータベースとして持たせたらよいのか悩んでいます。
効率的な方法がありましたら教えていただけると幸いです。
長文になり、失礼いたします。
[目的]
イベント毎に開催日時や主催者などのデータベースを構築し、開催日時で検索を行いたい。
[悩みどころ]
開催日時が、”2008年9月24日”のように1日で終わるものであれば問題ないのですが、”2008年9月24~28日”のような連続した日付や、”2008年9月24日、2008年9月26日”のような連続しない複数日の場合に、どのようなデータベース構造を持たせるべきなのか悩んでいます。
[現状の案]
現状は、イベントテーブルと日付テーブルを分けて管理する方法を考えていますが、これが一般的な方法なのでしょうか。
<EVENT_TABLE>
event_id:(auto increment)
event_name:イベントの名前
<DATE_TABLE>
date_id:(auto increment)
event_id:EVENT_TABLE.event_id を指すID
date:イベント開催日単日
イベントの開催日が1日であれば、一つのevent_idと一つのdate_id。
イベントの開催日が、連続した三日であれば、一つのevent_idと三つのdate_id。
イベントの開催日が、連続しない三日であれば、一つのevent_idと三つのdate_id。
No.2
- 回答日時:
連続しないものもあるなら、現状の案で提示なさっている方法で
十分です。
>イベントの開催日が、連続しない三日であれば、一つのevent_idと三つのdate_id。
これは「一つのevent_idと二つのdate_id」ですね?
ご説明が不足しておりすみませんでした。
「連続しない三日であれば、一つのevent_idと三つのdate_id」についてですが、たとえば、イベントAの開催日が、1月1日、2月2日、3月3日のように連続しない三日だった場合には、ひとつのevent_id=イベントAと、上記の三つの開催日を持つdate_idになるのかなと考えた次第です。
No.3ベストアンサー
- 回答日時:
一般的かどうかはわかりませんが、
複数のテーブルをJOINするのが好みかどうかとか、
データベースの効率を考えるとどうかと言うので決まってくるのでしょう。
私はあまりJOINしたくないと言う気持ちだけの話でANo.1のご回答にあるような感じでしてしまいます。
これに、連続しない開催の場合は、初日のイベントIDを他の開催日のデータに持たせて関連づけておけば、重なるデータ(イベント名など、他詳細情報もこちらに記録されるのだと思っています)は初日の方にだけ記録しておいても、なんとかなるのかなと思います。
と言うのが、私の今までの経験から思いつく事でした。
ANo.2で質問者様の方法で十分との事でしたので、よくよく考えてみると、なるほどその方が拡張性があるのかなと思ったりもしています。
データベース効率はどちらがいいのかわかりませんが、今お考えになられている方法から遠のくと難しくなるかも知れませんので、別の問題が起こらない間はそのまま進めてみられた方がいいのかと思います。
「DATE_TABLE」は、連続していようとしていまいと関係なく、開催している日分のデータがあると言う事と考えてよろしいでしょうか。
日時で検索するのでしたら、「DATE_TABLE」には、その日の開始時刻と終了時刻を記録しておくようになるのかも知れません。
最終日だけ早めに終わったりするようなイベントもあるのでしたら、「EVENT_TABLE」側で時刻を持つよりもいいのかなと思います。
ご回答ありがとうございます。
投入データを分析すると、明らかに1日のイベント、または連続した日のイベントが多くを占めているようで、連続しないイベントはあまりないことに気づきました。
そのため、連続しない日付のイベントについては、イベント投入フォームにコピーなどの機能を用意して、複数のEvent_idとして管理する方向で検討中です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- ライブ・コンサート・クラブ 日産スタジアムで再び大型ライブ開催!? 1 2022/06/08 18:30
- Wi-Fi・無線LAN PCWi-Fiの設定方法がわからなくて困っています。 4 2022/12/28 18:30
- その他(芸能人・有名人) 舵木まぐろ さんは、20代でしょうか?30歳代でしょうか?40歳代でしょうか? 50歳代でしょうか? 1 2023/01/27 15:39
- 英語 イベントの本番開始前の受付開始時間は英語でなんといいますか? 1 2023/03/26 15:15
- 統計学 前回イベントと今回イベントのデータ集計について 質問させてください。 イベント参加者の内アンケートを 3 2022/09/30 22:23
- イベント・祭り 札幌ドームの話 1 2022/11/06 01:13
- イベント・祭り 札幌ドームの話 1 2023/02/01 16:35
- 英語 複数形を含む単語がハイフンで繋がれ形容詞化した表現の文法規則について 2 2022/12/13 12:17
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
同一のユーザー、同一商品のと...
-
マイクラPC版のコマンドで効率...
-
テーブル名を省略して「h.id」...
-
副問合せの書き方について
-
複数テーブルのGROUP BY の使い...
-
select文のwhere句に配列を入れ...
-
SQLで残高計算
-
クエリ表示と、ADOで抽出したレ...
-
php+MySQLでレコードが何行目か...
-
select文で特定のIDを抽出しupdate
-
MySQLでのバイナリデータ削除方法
-
sqlで、600行あるテーブルを100...
-
SQL Left Join で重複を排除す...
-
書籍の内容はまともでしょうか?
-
MySQLのint型で001と表示する方...
-
【MySQL】本当に困っているので...
-
SQLサーバから、項目の属性(型...
-
SELECT/別テーブルのレコード...
-
AUTO_INCREMENTのあるテーブル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで最後の文字だけ置き...
-
SQL Left Join で重複を排除す...
-
副問合せの書き方について
-
SQLサーバから、項目の属性(型...
-
VIEWの元のテーブルのindexって...
-
select文のwhere句に配列を入れ...
-
selectした大量データをinsert...
-
センノシド異性体構造式
-
Unionした最後にGROUP BYを追加...
-
insertを高速化させたい
-
SQLにて特定の文字を除いた検索...
-
マイクラPC版のコマンドで効率...
-
ある条件の最大値+1を初番する...
-
inner joinをすると数がおかし...
-
sqlで、600行あるテーブルを100...
-
エクセルの関数について教えて...
-
Access パラメータクエリをcsv...
-
URL と行番号の指定
-
複数テーブルのGROUP BY の使い...
-
PL/SQLの変数について
おすすめ情報