このディレクトリの索引
http://toro.2ch.net/test/read.cgi/db/1343899481/754
#  会議室予約のようなシステムを作っています。 
#   
#  前提として、 
#  Username,Email,Passwordなどのカラムを持つUserテーブルがあり、 
#   
#  さらに、それぞれのユーザーが 
#   
#  Aさん 
#   
#  10日月曜日 13:00-14:00 
#  13日木曜日 15:00-16:00 
#  14日金曜日 20:00-21:00 
#  。 
#  。 
#   
#  などのように時間の枠をいくつか指定して予約できるようにしたいです。 
#   
#  この場合、こうやった時間のデータをどのように保持するのが理想でしょうか 
#   
#  使用しているデータベースはmysqlです。 
# 
# 

:- dynamic(['User'/3,会議室予約/3]).

'会議室予約のようなシステムを作っています。

前提として、
Username,Email,Passwordなどのカラムを持つUserテーブルがあり、

さらに、それぞれのユーザーが

Aさん

10日月曜日 13:00-14:00
13日木曜日 15:00-16:00
14日金曜日 20:00-21:00
。
。

などのように時間の枠をいくつか指定して予約できるようにしたいです。'(_Username,_Password,_利用開始時刻,_利用終了時刻) :-
        会議室予約の照会(_Username,_Password,_利用開始時刻,_利用終了時刻).

会議室予約の照会(_Username,_Password,_利用開始時刻,_利用終了時刻) :-
        '_Username,_Passwordは存在する'(_Username,_Password),
        会議室を予約する(_Username,_利用開始時刻,_利用終了時刻).

'_Username,_Passwordは存在する'(_Username,_Password) :-
        'User'(_Username,_Email,_Password),!.
'_Username,_Passwordは存在する'(_Username,_Password) :-
        format('Username,Passwordが正しくありません。訂正して照会してください\n',[_Username,_Password]),
        fail.

会議室を予約する(_Username,_利用開始時刻,_利用終了時刻) :-
        会議室予約(_Username_1,_利用開始時刻_1,_利用終了時刻_1),
        予約期間の会議室は既に予約済みである(_Username,_利用開始時刻,_利用終了時刻,_Username_1,_利用開始時刻_1,_利用終了時刻_1),
        writef('%tから%tまでの期間は既に予約済みです\n',[_利用開始時刻,_利用終了時刻]),!.
会議室を予約する(_Username,_利用開始時刻,_利用終了時刻) :-
        assertz(会議室予約(_Username,_利用開始時刻,_利用終了時刻)),
        writef('%tから%tまでの期間の予約を完了しました。\n',[_利用開始時刻,_利用終了時刻]).

予約期間の会議室は既に予約済みである(_Username,_利用開始時刻,_利用終了時刻,_Username_1,_利用開始時刻_1,_利用終了時刻_1) :-
        _利用開始時刻_1 @=< _利用開始時刻,
        _利用終了時刻_1 @>= _利用終了時刻,!.
予約期間の会議室は既に予約済みである(_Username,_利用開始時刻,_利用終了時刻,_Username_1,_利用開始時刻_1,_利用終了時刻_1) :-
        _利用開始時刻_1 @=< _利用開始時刻,
        _利用終了時刻_1 @>  _利用開始時刻,!.
予約期間の会議室は既に予約済みである(_Username,_利用開始時刻,_利用終了時刻,_Username_1,_利用開始時刻_1,_利用終了時刻_1) :-
        _利用開始時刻_1 @<  _利用終了時刻,
        _利用終了時刻_1 @>  _利用開始時刻,!.