回答編集履歴
6
ベンチマーク→タイムスタンプ
answer
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
バリデーション:特定の値に対し、入力条件に一定の制限をかける処理
|
4
4
|
例外処理:特定のメソッドや関数実行に対し、処理外の論理上エラーが発生した場合に例外エラーを発生させる処理
|
5
5
|
|
6
|
-
今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意した方が確実ですよ。start_timeやend_timeは
|
6
|
+
今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意した方が確実ですよ。start_timeやend_timeはタイムスタンプ(時刻)をとるのにはいいですが、不特定多数が絡んでくるタイムライン(時間)をとるのに使ったりすると、色々と困った問題が発生しますし、SQLの検索条件がかなりえぐいことになります。
|
7
7
|
|
8
8
|
小学生の算数に顧みて、時刻と時間の概念から見直してみましょう。
|
9
9
|
|
5
微調整
answer
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
id1,2019-11-30 12:00:00,施設番号
|
23
23
|
```
|
24
24
|
|
25
|
-
と保持させておいて、新たに11月30日の午前11時から申請しようとしたid5が現れても、その
|
25
|
+
と保持させておいて、新たに11月30日の午前11時からの開始時刻で申請しようとしたid5が現れても、その時間はスケジュールが埋まっているので、あとは選択のプルダウンでその値を候補から外したり、また旅館予約サイトみたいに、明示的に予約済かどうか案内するリストも簡単に作ることができますね。
|
26
26
|
|
27
27
|
それをLaravelに落とし込むだけです。
|
28
28
|
|
4
時刻と時間の概念
answer
CHANGED
@@ -3,8 +3,10 @@
|
|
3
3
|
バリデーション:特定の値に対し、入力条件に一定の制限をかける処理
|
4
4
|
例外処理:特定のメソッドや関数実行に対し、処理外の論理上エラーが発生した場合に例外エラーを発生させる処理
|
5
5
|
|
6
|
-
今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意します
|
6
|
+
今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意した方が確実ですよ。start_timeやend_timeはベンチマーク(時刻)をとるのにはいいですが、不特定多数が絡んでくるタイムライン(時間)をとるのに使ったりすると、色々と困った問題が発生しますし、SQLの検索条件がかなりえぐいことになります。
|
7
7
|
|
8
|
+
小学生の算数に顧みて、時刻と時間の概念から見直してみましょう。
|
9
|
+
|
8
10
|
```
|
9
11
|
#施設利用トランザクション
|
10
12
|
利用者番号(主キー)
|
3
逆になっていたので修正
answer
CHANGED
@@ -7,9 +7,9 @@
|
|
7
7
|
|
8
8
|
```
|
9
9
|
#施設利用トランザクション
|
10
|
-
|
10
|
+
利用者番号(主キー)
|
11
11
|
日付(主キー)
|
12
|
-
|
12
|
+
施設番号
|
13
13
|
```
|
14
14
|
|
15
15
|
たとえば、id1が9時から13時を利用している間は、
|
2
要件定義について
answer
CHANGED
@@ -3,13 +3,13 @@
|
|
3
3
|
バリデーション:特定の値に対し、入力条件に一定の制限をかける処理
|
4
4
|
例外処理:特定のメソッドや関数実行に対し、処理外の論理上エラーが発生した場合に例外エラーを発生させる処理
|
5
5
|
|
6
|
-
今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール
|
6
|
+
今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意します
|
7
7
|
|
8
8
|
```
|
9
9
|
#施設利用トランザクション
|
10
|
-
|
10
|
+
施設番号(主キー)
|
11
11
|
日付(主キー)
|
12
|
-
|
12
|
+
利用者番号
|
13
13
|
```
|
14
14
|
|
15
15
|
たとえば、id1が9時から13時を利用している間は、
|
@@ -22,4 +22,6 @@
|
|
22
22
|
|
23
23
|
と保持させておいて、新たに11月30日の午前11時から申請しようとしたid5が現れても、その開始時間はスケジュールが埋まっているので、あとは選択のプルダウンでその値を候補から外したり、また旅館予約サイトみたいに、明示的に予約済かどうか案内するリストも簡単に作ることができますね。
|
24
24
|
|
25
|
-
それをLaravelに落とし込むだけです。
|
25
|
+
それをLaravelに落とし込むだけです。
|
26
|
+
|
27
|
+
なお、利用トランザクションの場合、利用者を主キーに置くか、施設を主キーに置くかですが、場合によりけりです。もし、会員制施設で非会員などを許可する場合は施設番号を主キーに置きます。逆に会員制で利用者に必ずidが付される場合は利用者を主キーに置いた方がいいでしょう。
|
1
テーブル設計のこと
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
必要な技術はバリデーションでも例外でもな
|
1
|
+
必要な技術はバリデーションでも例外でもなく、テーブル設計の見直しです。
|
2
2
|
|
3
3
|
バリデーション:特定の値に対し、入力条件に一定の制限をかける処理
|
4
4
|
例外処理:特定のメソッドや関数実行に対し、処理外の論理上エラーが発生した場合に例外エラーを発生させる処理
|
@@ -20,6 +20,6 @@
|
|
20
20
|
id1,2019-11-30 12:00:00,施設番号
|
21
21
|
```
|
22
22
|
|
23
|
-
と保持させておいて、新たに申請しようとしたid5が
|
23
|
+
と保持させておいて、新たに11月30日の午前11時から申請しようとしたid5が現れても、その開始時間はスケジュールが埋まっているので、あとは選択のプルダウンでその値を候補から外したり、また旅館予約サイトみたいに、明示的に予約済かどうか案内するリストも簡単に作ることができますね。
|
24
24
|
|
25
25
|
それをLaravelに落とし込むだけです。
|