1

DBに2つの言語でデータを挿入する必要があり、少しジレンマがあります(データは両方の言語で存在する必要があります)。ユーザーが両方の言語で同時にデータを挿入するようにするのが良いですか、それともユーザーが最初に1つの言語で挿入し、次に2番目の言語で挿入するのが良いですか?そして、後者の方が優れている場合、これを行うための最も効率的な方法はどのようになっていますか?両方の言語で挿入されていないすべての記事を表示するにはどうすればよいですか?

記事のDB構造:

すべての記事に共通の表(同じデータ):

**article -> id_article | image | date_created | category_id | subcategory_id**

データが異なるテーブル:

article_info -> article_id | name | text | lang_id

4

1 に答える 1

2

データが両方の言語で存在する必要がある場合(つまり、アプリケーションは、アイテムが一方の言語で存在する場合、もう一方の言語で存在する必要があると想定する場合)、ユーザーが両方を同時に追加する必要があるようにアプリケーションを設計する必要があります。

データベースの書き込みを実行するときは、トランザクションも使用する必要があります。これにより、すべての書き込みが成功するか、いずれも成功しないことが保証されます。これにより、データベースが不確定な状態になり、一方の言語のレコードが残り、もう一方の言語のレコードがなくなるのを防ぎます。

トランザクションに関するこのCodeIgniterのマニュアルページを参照して、トランザクションがどのように機能するかを理解してください。

insert_batchデータベースクラスのメソッドを使用して、両方のレコードを一度に挿入することもできます。すべてのデータベースドライバーでどのように機能するかはわかりませんが、mysqliドライバーを使用すると単一のクエリが生成されるinsert_batchため、トランザクションの場合と同様に、挿入全体が成功するか、挿入全体が失敗します。insert_batchとはいえ、少し偏執的で将来性を確保するために、への呼び出しをトランザクションブロックでラップします。

于 2013-01-17T23:43:03.320 に答える