1

SOに関する他の質問を見てきましたが、これがどのように機能するかについて頭を悩ませているようには見えません。銃器と関連アイテムをカタログ化する銃器のオンライン ストアを構築しています。私が抱えている2つの問題があります -

問題1

この問題では、製品が 2 つの部分に分割されている製品追加フォームがあります。1 つ目は PRIMARY ATTRIBUTES で、2 つ目は SECONDARY ATTRIBUTES です。テスト形式の SS は次のとおりです。

ここに画像の説明を入力

例として、一部の銃器にはそのモデルの 8 つの異なるバリエーションがあります。バレルの長さ、ストック スタイル、弾丸の口径サイズ、およびその他の機能が異なる場合があります。そこで、ページの一番上に PRIMARY ATTRIBUTES を表示し、グラフに SECONDARY ATTRIBUTES をリストするすべてのサブモデルをリストします。

PRIMARY ATTRIBUTES は、そのカテゴリのすべての製品が確実に持つ属性です。SECONDARY ATTRIBUTES は、一部の製品が持つ属性です。そのため、フォームに入力して送信すると、データをすべてのテーブルに一度に挿入したいと考えています。ここに私のテーブルがあります:

ここに画像の説明を入力

問題2

SECONDARY ATTRIBUTES テーブルの作成方法では、一度に 1 つの属性を追加できます。上のスクリーンショットには 8 つの SECONDARY ATTRIBUTES がありますが、毎回データを挿入して 8 回ループするループを作成できますか? うまくいけば、それは理にかなっていますが、そうでない場合は、より詳細に説明します.

注、私はPHP/MySQLを使用しています。

編集

私は皆のアドバイスを受けて、提案を使用してデータベースを設計しようとしました。私が行ったことが効率的に機能するかどうかを見てください。私は、1->1、1->多、多->多などの単純な概念を学んでいます... 1->1 になる可能性があると私が見た唯一のものは、製造元への製品です。それは正しいと思いますか?私はこれを最高のものにするために多くの時間を費やしてきました。皆さんのフィードバック/批評に感謝します. 以下は私の新しいスキーマです:

ここに画像の説明を入力

ありがとう、

4

2 に答える 2

3
  1. 「一度に」複数のテーブルに挿入することはできませんが、次善の策を講じることはできます。挿入を単一のトランザクションの一部として扱うことで、何か問題が発生した場合でも、作業のどの部分が行われたとしても、バックアウト。

  2. 単一のステートメントで複数のレコードを挿入することは可能です: http://www.electrictoolbox.com/mysql-insert-multiple-records/

于 2012-09-27T19:16:00.377 に答える
2

MySQL は複数行の挿入をサポートしています。

INSERT INTO table
( col1, col2 )
VALUES
( 1, 'blah'),
( 2, 'foo'),
( 3, 'foobar')

また、MySQLi または PDO を使用し、パラメーター バインディングを使用し、挿入を準備してから複数回実行することもできます (http://us3.php.net/manual/en/mysqli.prepare.php)。

于 2012-09-27T19:16:01.067 に答える