0

質問のタイトルを明確にしましょう。

Web アプリケーションのバックエンドを実装しています。

これは、1つの.htmlファイルで作成したいものです

  • ユーザーは、マップ上にポイント、ライン、またはポリゴンを挿入します。
  • ユーザーがフォームにテキスト データを入力します。このデータは、彼女がマップに挿入したジオメトリに関連しています。
  • ユーザーは、html5 websockets/drag'n'drop 経由で写真とビデオをアップロードします。これらは、彼女がマップに挿入したジオメトリに対しても相対的です。

ページの下部には、データベースにすべてのデータを一度に保存する「すべて保存」という名前のボタンが 1 つだけあります (挿入)。

問題?データベースに 2 つの別々のテーブルがあります。1 つは「pins」という名前で、ジオメトリ データとフォーム データを取得します。

もう1つは「マルチメディア」という名前で、画像/ビデオを取得します。

「マルチメディア」には、「ピン」ID を含む「マルチピン」という名前の列があるので、ピンとマルチメディアを関連付けることができます。

ID を含むすべての列は「SERIAL」です (挿入するたびに、ID は自動的に +1 になります)。

両方の挿入を同時に行うと、新しい「ピン」ID を取得して「マルチメディア」の「マルチピン」列に挿入する方法はないと考えていました。新しい「ピン」ID が作成されるのを待ってから、それを「マルチピン」に挿入する必要があります。

というわけで、2回挿入(?) 思いついた解決策は、3つのhtml ファイルを作成することです。最初に、ユーザーはジオメトリとフォーム データを挿入します。「ここをクリックしてマルチメディアを追加」という名前のボタンを押します。このボタンは、「ピン」に挿入され、新しい ID を取得する別のファイルにデータを送信します。3 番目のファイルにリダイレクトし、新しい「ピン」も送信します。したがって、ユーザーは写真/ビデオを挿入でき、コードは「ピン」IDを認識しているため、「マルチピン」に配置できます。

これでよろしいでしょうか?より良い方法または戦略はありますか?

「一度に保存」バージョンの場合、私はwebsocketsを考えていました...「3ファイルバージョン」の場合は?マルチメディアのためだけに「従来の」ajaxとwebsocketsを使用する必要がありますか?

大きな質問で申し訳ありません。そして私の英語(私の母国語ではありません)

お時間をいただきありがとうございます

スレビン

4

1 に答える 1

0

一度にすべてを保存することは、ユーザーにとってより良い戦略です。

トランザクション リレーショナル データベースを使用していると仮定すると、次の方法ですべてを保存できます。

  • ピン テーブル データを挿入します。

  • 専念

  • ピンのシーケンシャル ID を取得する

  • マルチメディアを挿入する

  • 専念

マルチメディアに問題がある場合は、マルチメディアの挿入をロールバックし、ピン テーブルのデータ行を削除して、データベースの一貫性を維持します。

于 2013-08-10T17:57:23.297 に答える