この投稿は xlrtx によって最終編集されました: 2013-03-11 20:23:40
異なる長さの文字列 (空の文字列の可能性があります) はデータベースまたはテキスト ファイルとして保存されていますか?
私が構築しているのは、各ユーザーにショッピング カート
があるオンライン ショッピング ウェブサイトです。
ショッピング カートには、入れたアイテムとアイテムの構成が保存されます。
このショッピングカートに格納されているデータ構造は配列です(json形式で保存しました)
ただし、商品を入れたユーザーと入れていないユーザーがいる為、各ユーザーのショッピングカートデータの長さは異なります
ショッピングカートの内容(Jsonデータ)はデータベースに保存するべきでしょうか、それともファイルとして保存すべきでしょうか?
データベースとして保存する場合、user.cart または cart.items に置くべきですか?
1) cart.items に配置された場合、システムはユーザーが商品をカートに追加するまで待機し、その後データをカートに追加し、ユーザーの user.cart_id を cart.id
に割り当てます。
ユーザーがcart.item、user.cart_id=0をクリアし、対応するcartrow
を削除すると
2) user.cart に保存すると、各ユーザーに非常に長いカートが割り当てられます。リソースの無駄でしょうか? (データベースの保存形式がわかりません。)
3) ファイルとして保存する場合は、各ユーザーが正常に登録した後に $userid.json を生成し、サーバーのみがアクセスできるようにし、中身は空になる可能性があります。
データベース
json
-----解決策--------------------------------一般的なウェブサイトのショッピングカートは、セッションまたは Cookie を保存することによって作成されます。
性能が少し良くなったからです。
------解決策---------1. セッションをデフォルトのファイルモードから変更します。データベースモードへ
2. json
を使わずに $_SESSION を直接操作する
3. 「登録ユーザーは前回ログイン時にショッピング カートにアクセスできる必要がある」という要件を満たすために、ユーザー名 (ユーザー ID) フィールドをセッション テーブルに追加し、セッション コールバック関数を使用できます。適切に調整してください
つまり:
未確認の情報を保存するためにデータベースの使用を検討している場合、セッション テーブルはすでに作成されています。もう一度行う必要はありません
未チェックの情報を保存するためにファイルを使用することを検討する場合、単一のレイヤーでは膨大なアクセス数が遅すぎるため、複数のレイヤーのディレクトリ ファイルを管理するのは困難になります。
-----解決策---------------------ドンプログラムのためだけにやってはいけません プログラムを書くのは自分自身を向上させるために行うものです
実際の業務を行う際、ビジネスプロセスを明確にせずに技術的なプロセスを考慮するのは間違いです
あなたの考え方のいくつかの間違いについてお話します
1. ショッピング カートのデータを保持する必要がある理由がわかりません。保持するために保持しているだけです
実際、切断されたときに再ログインする/ショッピング カートを空にするという事実は、ほとんどの人がすでに受け入れており、このために苦情を言う顧客はほとんどいません
2. 「もし誰かがユーザーのアカウントとパスワードを入手したら...」アカウントとパスワードはショッピングカートのデータよりもはるかに重要であり、本末転倒です
アカウントのパスワードを紛失した場合、ショッピング カートにコンドームやペン、インク、紙、硯が入っているかどうかを他人に見られるのは心配ありませんが、配送先住所と荷受人の情報が他人に見られるのは心配です
3. すべての問題はプログラムを通じて解決する必要があります
ビジネスロジックで解決すべきことがテクニカルロジックで処理されてしまうのは、完全にビジネスが成り立たなくなっている証拠です
ショッピングカートのデータは、買い物が完了した後(再選択が完了したものとみなされます)、一時的なデータです。または、注文データに変換されます。
現時点での最大の違いは時間、つまり「プロセスを完了する」のにかかる時間と、複数の閲覧の問題です。ところで、ショッピング カート内のデータは数か月後に役に立ちますか?
テクノロジーが限られている場合は、問題を複雑にしすぎないでください。できる場合は、それを実行して、解決のためにビジネス ロジック層に正直にフィードバックしてください。
あまり深入りしたくない場合は、別のビジネス ロジックの問題を提示します:
私の家族と私 (おそらく 3 人以上) はショッピング アカウントのパスワードを共有し、
と
は複数のポイントで同時にログインし、異なる場所または同じ場所 (異なる注文) で買い物と発送を行っています。 、技術的な問題を解決するにはどうすればよいですか?注: セカンダリ ログインの拒否は、技術レベルのロジックではなく、ビジネス レベルのロジックです。つまり、複数のログインを許可する方法についてです。
時間をかけてニーズを分析することをお勧めします。最も重要なことは、事業部門とコミュニケーションをとることです
-----解決策-------------- ----
素晴らしい人たちがたくさんいます。
私も同じようなサイトを作りたいと思っています。
マークを付けて後で確認してください。
私はまだ「PHP および MySQL Web 開発」という本を勉強中で、途中までです。