質問: ユーザー、製品、およびサブ製品のデータベーススキーマを設計する方法 システムには2種類のユーザーがあります。管理者と通常のユーザー管理者は製品にのみアクセスできます。管理者が製品Aにアクセスできる場合、管理者はそのすべてのサブ製品にもアクセスできることを意味します。 通常のユーザーは、1つまたは複数のサブプロダクトのみにアクセスできます。 管理ユーザーを追加する画面には製品のドロップダウンが表示され、ユーザーを追加する画面にはサブ製品のドロップダウンが表示されます。 製品管理者は製品サブユーザーを追加します。 AdminユーザーとNormalユーザーの両方に1つのテーブルが存在するため、他のユーザーはすべて同じです。 助けてください。
回答: あなたは基本的にこれを見ています: ``` SystemUser: Id, AccountName SystemRole: Id, RoleName UserRole: SystemUserId, SystemRoleId Product: Id, ParentId, Name ``` `Product` will have a self-reference on `ParentId`. If it's not a sub-category then `ParentId` should be `NULL`. You'll want anyone who doesn't have a `SystemRole` of `"Admin"` defined to be unable to access any `Product` that has a `NULL` `ParentId`. `UserRole` is an association table that provides the `M:N` relationship of `SystemUser` to `SystemRole`. Even if each user will have a single role it's a good idea to set up the structure this way for now so your application is easier to expand in the future.