2017-09-05 9 views
-2

私が求めていることは、私が保存するユーザーデータを持っていて、各ユーザーに関連するアイテムのリストがあると言う行に沿ったものです。任意のSQLテーブルを作成することは悪い習慣ですか?

私の最初の考えは、$userid$_listのような別のテーブルを列ごとに各ユーザーごとに作成することです。それは悪い習慣のように思えるので、私の考えはusersテーブルの別の列にjson形式のリストを格納することでした。最初の悪い習慣は私が不和のためのボット(discord.gg)を作ってるんだと私が今やっていることは作っている、それは不必要だった考え出したが、ここで私が何をしようとしている。具体的だ


です多数のテーブルを持つ各サーバ用の新しいデータベースファイル。別にデータの破損がある場合、私はというよりも、このようななどwarnsbanskickscustom_commands、としてテーブルを持っていることが許容可能である場合、私は思っていた、私はserverid_warnsと1つのデータベースを持っているでしょう行われてより多くのダメージから

serverid_bans,serverid_kicksおよびserverid_custom_commandsである。

+0

何をしようとしているのかの例を示してください。 – nicomp

答えて

2

ユーザーの項目のように聞こえます。あなたはmany-to-many関係を持っていbridging table(または連想エンティティ)として知られており、探しているものをそのために

、。 usersのテーブルと、itemsのテーブルがあります。次に、他の2つのテーブルのそれぞれのIDフィールドのforeign keysを使用して、各テーブルのIDを相互に関連付けるブリッジングテーブルとして3番目のテーブルを作成します。例えば

、これは表usersです:

ID | User 
==== | ====== 
    1 | Bob 
    2 | Jim 

そして、これがitemsテーブルです:私の例の目的のために

ID | Item 
==== | ======== 
    1 | Sword 
    2 | Shield 

、ボブは剣を所有しており、ジムは両方所有しています剣と盾。

そのため、ブリッジングテーブルは次のようになります。

ID | UserID | ItemID 
==== | ======== | ====== 
    1 | 1  | 1 
    2 | 2  | 1 
    2 | 2  | 2 

は、この情報がお役に立てば幸い! :)

+0

私はこれを考えていましたが、私はちょうど並べ替えを考えていました。そして、1人のユーザーのためにすべての項目を1つのテーブルにまとめて取得するのは時間がかかりますが、おそらくあまりにも悪くないでしょう。 –

+1

行には**注文はありません**。必要なデータを抽出し、抽出したデータを並べ替えるだけです。理論的には、各ユーザーの表を作成する際の行数と同じになりますが、1つのブリッジング表の作成には実際には数行あります。これは、よりクリーンなアプローチであり、複数のユーザー間の簡単な関連付けも可能にします。 –

+0

また、これで問題が解決した場合は、[**回答を受け入れる**](https:// stackoverflow。投票ボタンの下にある灰色のチェックをクリックすると、「未回答の質問」キューから削除され、質問者と質問回答者の両方に評判が与えられます。質問をして15分後にそれをすることができます。もちろん、あなたが解決したように質問をマークすることで、物事が円滑に流れ続けるのに役立ちますが、私の答え(または誰かのもの)を正しいものとしてマークする義務はありません:) –

関連する問題