目次
返信内容:
ホームページ バックエンド開発 PHPチュートリアル ニーズに応じて mysql テーブルを設計する

ニーズに応じて mysql テーブルを設計する

Jul 06, 2016 pm 01:53 PM
mysql php 連載 検索 テーブルデザイン

みなさんこんにちは、まず最初に、この質問を閲覧していただきありがとうございます
要件について話させてください: モール プロジェクトの商品の属性。たとえば:
服には色とサイズの 2 つの属性があります。私のアイデアは記録することです。別の表にあります さまざまな属性の価格と在庫
例:
黒 - サイズ M - 70 元 - 35 個
黒 - サイズ L - 73 元 - 32 個
白 - サイズ L - 73 元 - 30 個
これテーブルはこのように設計されていますが、ここで問題が発生します。たとえば、携帯電話には、色、メモリ、通信事業者 (未契約、チャイナモバイル、チャイナユニコム、テレコム) などのいくつかの属性があります。
それでも次の方法に従う場合。上の服を見ると、余分な列があることが明らかです。それは
白 - 32G - 携帯電話契約 - 20 元 - 10 台
白 - 32G - チャイナユニコム契約電話 - 30 元 - 50 台
ゴールド - 32G -通信契約電話 - 10元 - 40台

これらの属性情報をすべてシリアル化して保存するのは良いのですが、Huawei 32G携帯契約の携帯電話を検索したいときに面倒なようです。何か良いアイデアがあれば提供していただきたいのですが、ありがとうございます。とても感謝しています
PS: ECSHOP のデザインを見たところ、商品には基本価格があり、その価格は基本価格に加算または減算されますが、私はこのアプローチにはあまり乗り気ではないようです。商品を追加するときに少し面倒

返信内容:

みなさんこんにちは、まず最初に、この質問を閲覧していただきありがとうございます
要件について話させてください: モール プロジェクトの商品の属性。たとえば:
服には色とサイズの 2 つの属性があります。私のアイデアは記録することです。別の表にあります さまざまな属性の価格と在庫
例:
黒 - サイズ M - 70 元 - 35 個
黒 - サイズ L - 73 元 - 32 個
白 - サイズ L - 73 元 - 30 個
これテーブルはこのように設計されていますが、ここで問題が発生します。たとえば、携帯電話には、色、メモリ、オペレータ (未契約、チャイナモバイル、チャイナユニコム、テレコム) などのいくつかの属性があります
それでも次の方法に従う場合上の服を見ると、もう 1 つの列が必要であることは明らかです。それは
白 - 32G - 携帯契約電話 - 20 元 - 10 台
白 - 32G - チャイナユニコム契約電話 - 30 元 - 50 台
ゴールド - 32G -通信契約電話 - 10元 - 40台

これらの属性情報がすべてシリアル化されて保存されていれば問題ありませんが、Huawei 32G 携帯契約の携帯電話を検索するときに面倒なようです。何か良いアイデアがあれば提供していただきたいのですが、ありがとうございます。とても感謝しています
PS: ECSHOP のデザインを見たところ、商品には基本価格があり、その価格は基本価格に加算または減算されますが、私はこのアプローチにはあまり乗り気ではないようです。商品を追加するときに少し面倒

現在の質問は他の人が尋ねたものであると言えます。あなたの質問について、私の回答をパラメータ化できます。
https://segmentfault.com/q/1010000005347571/a-1020000005347916
次のようにテーブルを設計できます。 :

商品一覧

製品ID 商品名
1 iPhone
2 キュウリ

製品属性テーブル

製品ID 仕様 カラー 価格
1 16g ホワイト 4999
1 32g ホワイト 5499
2 なし なし 1

現在の練習プロジェクトには、このデザインが最適です
ただし、このデザインは、属性が多数ある場合、属性フィールドを追加する必要があり、一部の属性は商品で使用できない場合があります。この属性は無駄を引き起こし、属性テーブルが変更されずに展開されます。たとえば、製品 2 のキュウリは次のデザインに変更できます。 属性テーブル

属性ID属性名1仕様2カラー3価格商品カテゴリ一覧

IDを入力してください製品IDあ1b1c2製品属性テーブル

製品タイプID属性ID属性値あ116gあ2ホワイトあ34999b132gb2ホワイトb34999c4上海

デザインは上記の通りで、製品キュウリの属性は1つのデータのみを生成します。

個人的には、あなたの質問は 2 つの質問に分けられるべきだと思います。1 つ目は、製品テーブルの適切なデータ構造を設計する方法であり、2 つ目は、製品をより適切に検索する方法です。まず最初の質問は、商品リストの設計です。まず、モール ビジネスにどのような商品があるかを分析する必要があります。商品マスター テーブルと商品属性テーブルには 1 対多の関係があり、商品ごとに異なる関係構造を設計する必要がある場合があります。単純なアイデアは ecshop に似ています。ecshop も属性を別のテーブルにリストしますが、属性を 1 つのテーブルにリストするとデータの冗長性が生じます。
1. 属性テーブルでさらに多くのフィールドを設計できます。
1) 製品リストを設計します。アイテムを保存するための共通フィールド。
2). 属性テーブルのフィールドには仕様と色が含まれますが、一部のフィールドには冗長性があり、デフォルト値が配置される場合があります。
2. 商品をより効率的に検索する方法。
例えば、「Huawei 32G 携帯契約電話」と検索した場合、ユーザーが「Huawei 32G 携帯契約電話」と入力すると、商品を検索できます。 Huawei 32G 携帯契約電話が製品名ではない場合、システムは最初にそれをセグメント化し、次に検索して比較する必要があります。 Huawei 32Gモバイル契約機なら製品名そのままで直接検索できます。

属性テーブルを追加
product_id キー値
複数の属性のレコードをさらに数行追加するだけです

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MySQL:初心者向けのデータ管理の容易さ MySQL:初心者向けのデータ管理の容易さ Apr 09, 2025 am 12:07 AM

MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

Navicatプレミアムの作成方法 Navicatプレミアムの作成方法 Apr 09, 2025 am 07:09 AM

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQL:簡単な学習のためのシンプルな概念 MySQL:簡単な学習のためのシンプルな概念 Apr 10, 2025 am 09:29 AM

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

NavicatでMySQLへの新しい接続を作成する方法 NavicatでMySQLへの新しい接続を作成する方法 Apr 09, 2025 am 07:21 AM

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

PHPの未来:適応と革新 PHPの未来:適応と革新 Apr 11, 2025 am 12:01 AM

PHPの将来は、新しいテクノロジーの傾向に適応し、革新的な機能を導入することで達成されます。1)クラウドコンピューティング、コンテナ化、マイクロサービスアーキテクチャに適応し、DockerとKubernetesをサポートします。 2)パフォーマンスとデータ処理の効率を改善するために、JITコンパイラと列挙タイプを導入します。 3)パフォーマンスを継続的に最適化し、ベストプラクティスを促進します。

NAVICATでSQLを実行する方法 NAVICATでSQLを実行する方法 Apr 08, 2025 pm 11:42 PM

NAVICATでSQLを実行する手順:データベースに接続します。 SQLエディターウィンドウを作成します。 SQLクエリまたはスクリプトを書きます。 [実行]ボタンをクリックして、クエリまたはスクリプトを実行します。結果を表示します(クエリが実行された場合)。

NAVICATは、MySQL/Mariadb/PostgreSQLおよびその他のデータベースに接続できません NAVICATは、MySQL/Mariadb/PostgreSQLおよびその他のデータベースに接続できません Apr 08, 2025 pm 11:00 PM

NAVICATがデータベースとそのソリューションに接続できない一般的な理由:1。サーバーの実行ステータスを確認します。 2。接続情報を確認します。 3.ファイアウォール設定を調整します。 4.リモートアクセスを構成します。 5.ネットワークの問題のトラブルシューティング。 6.許可を確認します。 7.バージョンの互換性を確保します。 8。他の可能性のトラブルシューティング。

Navicatは、データベースエラーコードとソリューションに接続します Navicatは、データベースエラーコードとソリューションに接続します Apr 08, 2025 pm 11:06 PM

データベースに接続するときの一般的なエラーとソリューション:ユーザー名またはパスワード(エラー1045)ファイアウォールブロック接続(エラー2003)接続タイムアウト(エラー10060)ソケット接続を使用できません(エラー1042)SSL接続エラー(エラー10055)接続の試みが多すぎると、ホストがブロックされます(エラー1129)データベースは存在しません(エラー1049)

See all articles