2011-03-03 19 views
1

こんにちはすべて、 アカウントのサブドメインを使用するPHP Webアプリケーションを設定しています。私は、次のフィールドでMySQLのテーブルにサブドメインを格納しています:MySQLテーブルの設定

subdomain_id | owner_id | name | date_created 

OWNER_IDマップは、ユーザテーブルには、次のフィールドを持つユーザーテーブルにuser_idをするために戻っ:

user_id | email_address | etc... 

今、私が把握しようとしていますどのユーザーがどのサブドメインにアクセスできるかを保存する最も良い方法は何ですか。次のフィールドを持つ別のテーブルを設定するのがベストですか?

id | subdomain_id | user_id 
ようなデータを含むであろう

下記(ユーザ#6は、サブドメイン4 & 7へのアクセスを有する示す):

id | sudomain_id | user_id 
1 | 4   | 6 
2 | 4   | 23 
3 | 7   | 6 

は、より効率的な方法はありますか?

答えて

2

これは多対多の関係をモデル化する正しい方法ですが、id列は完全には不要です。すべてのテーブルに人為的な識別子を付ける必要はありません。そのテーブルの主キーは、単に(subdomain_id, user_id)です。

+0

私はDanとある程度同意します。代理キーはしばしば必要ではありませんが、悪い習慣ではありません。特に、そのテーブルの役割が今後の関係テーブル以上に拡大する場合は特にそうです。おそらく、サブドメインへのユーザーのアクセスにアクセス許可が添付されている可能性があります。この場合、この表は許可表と1対多の関係を持つ必要があります。もし私があなただったら、私は代理キーをテーブルに残します。 – Zoidberg

+0

パーフェクト、確認していただきありがとうございます! @ゾイドバーグは同意した。 – Hutch

+0

私は代理キーを残そうと思っていますが、ダンが何を得ているのか理解しています。 – Hutch

関連する問題