0

毎日部屋のタイプに応じて複数の値 (コスト) を記録する必要があるホテル料金システムがあります。さらに、各セットの費用はその代理店によって異なります。すべての代理店には独自の価格レートがあります。例えば、

代理店 A には、2012 年 12 月 1 日から 2012 年 12 月 1 日から 2012 年 12 月 20 日まで、タイプ A=1000、タイプ B=2000、タイプ C=3000 の部屋があります。 2012年12月

また、今後お部屋タイプが増減する可能性がございます。

代理店 A の部屋はタイプ A=1000、タイプ B=2000、タイプ C=3000、2012 年 12 月 1 日から 2012 年 12 月 20 日までの間、代理店 C の部屋はタイプ A=1200、タイプ B=2200、タイプ C=3200、タイプ D=3500、 2012 年 12 月 1 日から 2012 年 12 月 20 日までは E=3700 を入力してください

だから私はHTMLフォームを持っています:

<form method="post" action="submit.php">
Agency : 
<select name="agency">
<option value="a">Agency A</option>
<option value="b">Agency B</option>
<option value="c">Agency C</option>
</select>

From : <input type="text" name="date1" />
To : <input type="text" name="date2" />
<?
$sql_roomType="select * from roomtype_db order by id asc";
...
while($rec_roomType=mysql_fetch_array($result_roomType)){
$_roomTypeID=$rec_roomType['id'];
$_roomTypeCost=$rec_roomType['cost'];
$_roomTypeName=$rec_roomType['name'];
echo "$_roomTypeName : <input type=\text\" name=\"cost\" /><br />";//display stack of input
}
?>
<input type="submit" value="submit" />    
</form>

submit.php

<?
$_agency=$_POST['agency'];
$_date1=$_POST['date1'];
$_date2=$_POST['date2'];
$_cost=$_POST['cost'];
$sql_addRate="insert into rate_db values('','$_agency','$_cost','$_date1','$_date2'";
$result_addRate=mysql_query($sql_addRate);    
?>

問題は、これらのような mysql メソッドに従って、将来問題が発生する可能性があるかどうかわからないことです。たとえば、レートは将来の日付で変更される可能性があります。ルームタイプは、追加または削除される場合があります。などですので、正規化されたテーブルを使用して mySQL にレコードを挿入する作業スクリプトを教えてください。

4

1 に答える 1

0

1 つのテーブル (列フィールドはidagencyroom_typeratestart_dateおよび) で実現できますが、正規化された適切な構造を得るには、 、 、およびend_dateの 3 つのテーブルが必要です。s を新しいテーブルに移動することで、部屋タイプの追加を処理しやすくなります。agencyroom_typeratesroom_type

agencytable は fieldsidを持つことができ、 etc は再び, nameetcroom_typeを持つことになります。には、、、、およびのフィールドがあります。idnameratesidagency_idroom_type_idratestart_dateend_date

SELECT2 つの内部結合を使用して、すべての必須フィールドを作成できます。INSERT問題は、これらのテーブルに新しい room_type とエージェンシーを取り込もうとしている場合です。このような場合、3 つの個別の挿入を行う必要がありますが、それでも全体としてより優れた設計です。

注: 挿入に room_type (id または name) が含まれていないと思います。

于 2012-11-12T05:06:25.023 に答える