1

私はMySQLとデータベースにかなり慣れていませんが、学ぼうとしています:)

現在、2つのテーブルを持つデータベースをセットアップしました。最初のuser_infoには、オンラインアプリのユーザーのリストと、次のようなアカウント情報が含まれています。ユーザー名、パスワード、姓名。また、別のテーブルの「list_access」というラベルの付いた列もあります。

2番目のテーブルword_listsは、行/レコードのセットです。各列には1つの単語が含まれます(最初の列が主キー/ ID列である場合を除く)。このアイデアは、アプリがアカウント情報内のユーザーのデータをチェックし、ユーザーがアクセスできる単語レコードを確認してから、単語リストをアプリの配列にプルするというものです。

これはこれを設定するための効果的な方法ですか?user_infoテーブルのlist_access列の列はどのタイプのデータである必要がありますか?どのリストにアクセスできるかをリストし、どのリストからプルするかを確認する方法を見つけるのに苦労しています。それは通常、アプリまたはphpスクリプトによって処理されるものでしょうか?

これまでに学んだことすべてをつなぎ合わせるのは遅いプロセスだったので、助けてくれて本当に感謝しています。

4

1 に答える 1

0

list_accessのuser_infoテーブルに1つの列がある場合は、その列に何を格納するかを考えてください。

  1. 単一のword_listID
  2. 「1,2,3,4」などのword_listIDのリスト。

アイテム#1は、使用する「どの単語レコード」をチェックするという要件に反するため、悪い結果になります。

アイテム#2は、そのリストを常に結合/分割/マージする必要があり、参照整合性を持つことができないため、悪い結果になります。

本当に必要なのは、次のように、ユーザーを単語リストに結合する相互参照テーブルです。

 CREATE TABLE user_word_lists (
     user_id int unsigned not null,
     word_list_id int unsigned not null
 )

このテーブルには、ユーザーごとに複数の行があります。2つのソーステーブルへの外部キーを設定し、必要なインデックス(確かにuser_id)を入力します。

お役に立てば幸いです。

于 2012-10-13T21:11:15.587 に答える