特にWebアプリケーション用に、データベース/データモデル/スキーマを最初から設計したことはありません。最近の就職の面接で、ショッピングカートアプリケーションのデータベースを「設計」するように依頼されました。現在、製品と注文の情報を保存および処理する必要があるバックエンドを備えたモバイルショッピングアプリケーション(小売、phonegapを使用)に取り組んでいます。この問題の規模は非常に大きいので、どこから始めればよいのかわかりません。私はいくつかのアドバイスを期待していました-
私もそれを明確にする必要があります-
データベースには5つのテーブルがあります。
[〜#〜] category [〜#〜]このテーブルには、ストアの商品カテゴリとカテゴリ階層に関する情報が格納されます。
このテーブルの親フィールドには、親カテゴリのIDが格納されます。
[〜#〜] product [〜#〜]ストアのすべての商品がこのテーブルに保存されます。このテーブルには、製品が属するカテゴリのIDを識別する外部キーcategoryIDがあります。
[〜#〜] order [〜#〜]このテーブルには、ストアの訪問者によるすべての注文に関する情報が格納されます。
ORDERED_SHOPPING_CARTテーブルはPRODUCTテーブルおよびORDERテーブルと緊密に接続されています。顧客の注文内容に関する情報を保存します。
SPECIAL_OFFERテーブルには、ホームページに特別オファーとして表示される製品のリストが含まれています
簡単な答えは、私がこの問題に取り組む方法です。まず、オープンソースまたは無料のWebベースのショッピングカートがたくさんあります。これは、データベースを取得してデータベースを設定し、それらが何をしたかをよく調べることができることを意味します。
なぜ彼らはそれをしたのかなどの質問を自問してください。なんでいいの?どのような欠点がありますか?どうすれば違うのですか?どうして?
データベースを視覚化できるデータベース設計ツールを調達しようと思います。 (ビジュアルスタジオのデータベースデザイナーのように、またはpgsqlデータベースを実行するMicroOlapのデータベースデザイナーがいます)
次に、データベースに何が必要かを考える必要があります。お客様は何をするつもりですか?製品を購入する!したがって、製品テーブルが必要です。ルート全体を下ることなく、ポイントを見ることができます。何が必要か想像して、基本的にそのためのテーブルを作成します。
テーブル内のフィールドに複数のオプションがある場合は、リレーションを含む別のテーブルを作成します。したがって、製品テーブルがあり、ステータスフィールドがある場合。複数のステータスを持つことができます。 (在庫切れ、数に限りがある、大きなアイテム、高価ななど)これらのフィールドをハードコーディングする代わりに、テーブルを作成して、ユーザーがテーブルにアイテムを追加できるようにします。次に、製品テーブルにフィールドstatus_idを追加し、それをステータステーブルにリンクします
多く-多くの関係は知っておくと便利なことです。 (私はこれに自分で足りませんでした。)コンポーネントと製品のテーブルがあると言います。製品は多くのコンポーネントで構成でき、コンポーネントは多くの製品に割り当てることができます。メディエーターテーブルを作成します。 prodcompのようなもの(そしてこれにはid、prod_id、comp_id、qtyneededのようなフィールドがあります)。
学ぶ 正しくインデックスを付ける 。
データベースがどのように機能するかをしっかりと理解するまで、データベースを作成しないでください。これにより、後で再作成する時間を節約できます。
これにはもっと多くのことがあるかもしれませんが、私はあなたに良いスタートを切ったことを願っています。