単純なユーザー/ロール情報を格納するためのデータベーステーブルを設計する場合、ロール情報をユーザーテーブルに直接格納することがなぜ悪い考えであるかを誰かに教えてもらえますか(たとえば、[コンマ-ロールで区切る]列)。
考え:
- データベースは、UIのドメインであるロールについて知る必要はありません。
- 特定のユーザーの役割へのアクセスが速いほど良い
- 確かに、将来、特定の役割のすべてのユーザーにアクセスしたい場合は、クエリが
少し遅くなりますが、その時点で誰が気にしますか?
これは意味がありますか?私はロッカーから離れていますか?RolesテーブルとUserRoleテーブルを作成するのはやり過ぎで、不要なSQLとコードのオーバーヘッドを追加しませんか?
アップデート:
私のポイントをさらに説明するために...コードで、ユーザー「Steve」がロール「Administrator」にあるかどうかを知りたいです。
オプション1:UserRoleテーブルで、ユーザー「Steve」のロールのリストを照会します。そのリストをループして、RoleNameが「Administrator」と一致するかどうかを確認します。
オプション2:ユーザーの役割プロパティでcsvを分割し、結果のリストに「管理者」が含まれているかどうかを確認します
更新II:
私の提案は、特にDB設計に関して、あらゆる種類の「ベストプラクティス」タイプの考え方に違反していることに同意します。ただし、この種のシナリオで「ベストプラクティス」がどのように意味をなすのかはわかりません。私は時々ベストプラクティスのボートを揺さぶるのが好きです...私は賢く見える方法でコーディングするのが好きです。つまり、賢くないときを知るためにもっと理解する必要があることを意味します:)