这是布局:
- 我正在开发一个带有 SQL Server 数据库的内部 ASP.NET Web 应用程序(在 VB.NET 中)。
- 由于我的用户完全是内部用户,因此我使用“Windows”方法进行自动身份验证。
- 我有四个用户角色,每个角色都有自己非常独特的动态设置集。
- 奖励:每个用户可能有多个角色,因此有多个配置文件。
根据我的广泛研究,我确定了以下两种存储用户配置文件设置的方法(这两种方法都会提示问题“如何?”),但我不确定哪种方法最好(如果有的话):
- 在数据库中存储配置文件和相关设置(使用什么结构?从初步映射中,我创建了至少四个表,这些表开始变得非常难以管理和维护)
- 使用内置的 ASP.NET Membership & Profile 对象? (我似乎找不到一个很好的教程。这种方法还需要数据库支持吗?再次,使用什么表结构?) -我对这个可能的解决方案最感兴趣
例子:
我最复杂的用户组需要能够存储与用户关联的所有(用户选择的)产品的配置文件。假设我是一名产品经理,我希望我的帐户向我展示我选择的所有我负责的产品。显然,我角色的每个成员都有不同的产品和不同的数量等。也许用户页面设置(例如搜索、排序、订单默认值等)可以存储在通用表中,并参考辅助设置表对于可以通过可以充当某种“外键”的特殊记录链接到的奇怪的东西。
根据要求,我对餐桌计划的一个想法:
Users (ID, Username, RoleID)
Roles (ID, RoleName, Description) --Lookup Table
Settings (ID, Name, Value)
UserSettings (ID, UserID, SettingID) --Junction Table
那么问题就来了:
- 我什么时候应该使用行与列?
- 如果我为每个设置使用一列,我可以定义数据类型,但列数可能会失控。另一方面,如果我对每个设置使用一行,它会更有意义,但我会失去对设置的数据类型的控制。
- 我是否应该省略 UserSettings 表,而只为 Settings 表中的每个设置附加一个名称=值对记录,并使用 UserID 外键代替?
- 等等等等……
我的理想答案:
如您所见,我有很多问题,但似乎没有找到什么帮助。如果有人可以简单地为我分解它,我会喜欢它。请告诉我您的专业建议和一些关于如何实现它的超级简单技巧(即使用哪些 ASP.NET对象,以及所述对象如何提供管理我的复杂配置文件的机制)