昨年自身で作成したECサイトのようなシステムの,DB設計に関する質問です.
前提
Web系の開発(HTML,JS,PHP,MySQL)は半年ほど,Laravelは触り始めて3か月ほど経ちます.
知識も経験も足りませんので,お力をお貸しいただければと思います.
このシステムはHTML,jQuery(JS),MySQL(操作はPDO),PHPとその拡張機能(メール送受信,PDF作成)で作られています.
このシステムをメンテナンスしやすいようにLaravelに移行しようと設計から見直していたのですが,元の機能を維持した移行が難しそうだったので設計が間違っているか,若しくはコーディング技術が足りないか,ご教示いただきたいです.
移行後もDBは変わらずMySQLの予定です.
今までの設計
このシステムにユーザ登録を行うと,ユーザに個別のユニークidが割り当てられ, user_list テーブルに保存されます.
また,同時にユーザ個別の注文テーブルも作成されます.
user_list
user_id | user_name | user_address | password(hashed) |
---|---|---|---|
1 | hoge太郎 | hoge@example.com | ${hogeHashed} |
2 | fuga次郎 | fuga@example.com | ${fugaHashed} |
⁝ | ⁝ | ⁝ | ⁝ |
ユーザの注文内容等は,ユーザのidを名前に含んだテーブル order_{$user_id} に記録されます.
一度の注文ごとに注文のidが割り当てられ管理されます.
order_2 (fuga次郎の注文内容)
order_id | order_name | order_date | status | … |
---|---|---|---|---|
1 | おだんご | 20XX_01_01 | delivered | ⁝ |
1 | おまんじゅう | 20XX_01_01 | delivered | ⁝ |
2 | きんつば | 20XX_02_11 | cancelled | ⁝ |
3 | ようかん | - | in_cart | ⁝ |
⁝ | ⁝ | ⁝ | ⁝ | ⁝ |
今回質問したいこと
ユーザごとの処理を軽くする,ユーザごとに注文を管理しやすいなどの観点からメリットがあると考え,このような設計を行いました.
しかしながら,この挙動がLaravelらしいのか(後々にチームでのメンテナンスがシームレスにしやすいか),前述したメリットは実は大きくないのか,Laravel以前にそもそもこのような設計はしてはいけないのか(脆弱性を孕みやすいか) などが質問内容です.
設計案
今のところ思いつく設計としましては,
- このままLaravelに移行する
- 注文テーブルを一つにまとめ,その中でユーザidを持ちユーザを区別する
※2 order_table
order_id | user_id | order_name | order_date | status | … |
---|---|---|---|---|---|
1 | 1 | おだんご | 20XX_01_01 | delivered | ⁝ |
1 | 1 | おまんじゅう | 20XX_01_01 | delivered | ⁝ |
2 | 1 | きんつば | 20XX_02_11 | cancelled | ⁝ |
3 | 1 | ようかん | - | in_cart | ⁝ |
4 | 2 | おだんご | 20XX_03_21 | delivered | ⁝ |
4 | 2 | おまんじゅう | 20XX_03_21 | delivered | ⁝ |
5 | 2 | きんつば | 20XX_04_30 | cancelled | ⁝ |
6 | 2 | ようかん | - | in_cart | ⁝ |
⁝ | ⁝ | ⁝ | ⁝ | ⁝ | ⁝ |
のどちらかですが,メリット/デメリット/その他 ご教示いただけますでしょうか.
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2022/04/08 09:02
2022/04/08 13:49