1

みなさん、良い一日を。私は一日中自分の質問に対する答えを探していましたが、残念ながら私は探している答えを探していませんでした。

PHPとMySQLデータベースでWebアプリケーションを作成することにより、現在使用しているいくつかのプロセスを自動化しようとしています。

Excelでスタッフのスケジュールを作成し、phpを使用してMySQLにアップロードしたいと思います。ほとんどのデータベースフィールドは単純です。INTの従業員ID、DATE形式の日付です。

私が直面している問題はその時です。従業員が働いているときは、シフトの開始時刻と終了時刻をTIMEにアップロードしたいのですが、働いていない場合は、データベースにステータスを文字で保存したいと思います。休日はOFF、年次はALです。休暇、医療休暇のML、緊急休暇のELなど。

どのデータ型がこれをサポートするかわかりません。つまり、時間または結果コードの特定のリストからのエントリのいずれかを受け入れます。

任意の支援をいただければ幸いです。

モハメド。

補足: コーディングの方法を学び始めたときにこの質問をしました。回避することを学んだ間違いの1つは、ビジネスロジックとアプリケーションロジックの混合です。この質問は将来誰かに役立つかもしれません、そして私のアドバイスはどんな新しい開発者にもビジネスモデルロジックがあなたのアプリケーションロジックと密接に関係しないことを確認することですが、作る方法は常にありますそれは動作します。

モハメド。

4

3 に答える 3

2

これがアイデアです。ステータスに別の列を配置します。ステータスの1つは作業ステータスになり、他のすべてのステータスは説明どおりになります。「開始時刻」列と「終了時刻」列にデータがあるのは、作業ステータスのみです。私の意見では、これが最良のソリューションであり、より優れた検索機能、よりクリーンなデータベース、およびより包括的な読みやすさを可能にします。

ただし、どうしても必要な場合、および/または追加の列を作成できない理由がある場合は、いつでも時間をテキストとして保存できます。

PS:データベースのもう1つのヒントは、日付列を削除して両方の時間をDATETIME形式で保存することです。データベースに保存しているジョブシフトによっては、ありそうもないことからほぼ不可能なことまでさまざまですが、シフトを開始することは可能です。ある日、次の日に終了します。必要がないと思ったとしても、それは良い習慣であり、データベースの復元力を高めます。将来変更する必要がある場合は、変更するのが面倒です。

于 2012-11-03T21:56:31.043 に答える
1

MySQLにはそのようなデータ型はありません。

フィールドは日付とカスタムコードのVARCHAR両方を受け入れますが、クエリを作成するのが面倒な場合は、レポートなどの時間に変換する前に常にデータを確認する必要があります。

3つのnull許容フィールドを作成します:startTimeと、endTime両方absenceReasonabsenceReason時間が。の場合にのみ入力しますNULL

于 2012-11-03T21:39:47.553 に答える
1

VarCharまたはCharフィールドを使用して、時間値またはテキスト値を格納できます。ただし、さまざまな目的でさまざまなフィールドを使用することをお勧めします。データ型時刻の開始時刻や終了時刻など。また、VarCharまたはCharタイプの休暇などのタイプ用の別のフィールド。

于 2012-11-03T21:40:43.630 に答える