質問するログイン新規登録

回答編集履歴

6

ベンチマーク→タイムスタンプ

2020/01/13 02:19

投稿

FKM
FKM

スコア3675

answer CHANGED
@@ -3,7 +3,7 @@
3
3
  バリデーション:特定の値に対し、入力条件に一定の制限をかける処理
4
4
  例外処理:特定のメソッドや関数実行に対し、処理外の論理上エラーが発生した場合に例外エラーを発生させる処理
5
5
 
6
- 今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意した方が確実ですよ。start_timeやend_timeはチマーク(時刻)をとるのにはいいですが、不特定多数が絡んでくるタイムライン(時間)をとるのに使ったりすると、色々と困った問題が発生しますし、SQLの検索条件がかなりえぐいことになります。
6
+ 今回は要件定義に基づき、start_timeに対してelse ifの対応をさせるだけですが、こういう時間指定の場合のダブルブッキングを防ぐ方法として、1日ごとのタイムスケジュールを設定する、あるいは利用者と使用時間を主キーとして施設利用スケジュール用のトランザクションを用意した方が確実ですよ。start_timeやend_timeはタイムスタ(時刻)をとるのにはいいですが、不特定多数が絡んでくるタイムライン(時間)をとるのに使ったりすると、色々と困った問題が発生しますし、SQLの検索条件がかなりえぐいことになります。
7
7
 
8
8
  小学生の算数に顧みて、時刻と時間の概念から見直してみましょう。
9
9
 

5

微調整

2020/01/13 02:19

投稿

FKM
FKM

スコア3675

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

時刻と時間の概念

2020/01/13 02:14

投稿

FKM
FKM

スコア3675

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

逆になっていたので修正

2020/01/13 02:12

投稿

FKM
FKM

スコア3675

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

要件定義について

2020/01/13 01:25

投稿

FKM
FKM

スコア3675

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

テーブル設計のこと

2020/01/13 01:23

投稿

FKM
FKM

スコア3675

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に落とし込むだけです。