English 中文(简体)
储存用户环境的数据库设计
原标题:Database design for storing user settings
public interface IPlugin
{
    void Execute();
}

public class FirstPlugin : IPlugin
{
    public string SomeSetting1 { get; set; }

    public void Execute() { }
}

public class SecondPlugin : IPlugin
{
    public string SomeSettingA { get; set; }
    public string SomeSettingB { get; set; }
    public string SomeSettingC { get; set; }

    public void Execute() { }
}

我有一个允许使用者选择一个或多个原始产品的制度。 在以上编码中,我有一个<代码>IPlugin接口,由许多班子实施。 每个班级都有自己的一套财产,每个用户可以对这些财产进行组合。

例如,用户A只选择了第一个“ABC”的价值。

用户B选择了两种微粒,但配置了第一个微粒,即“XYC”的价值。

public class User
{
    public User(IPlugin[] plugins)
    {
    }
}

当我对用户进行问答时,我希望得到一份用户配置的原始数据清单,这些原始数据应与用户配置的相联。

然而,Im在如何设计数据库以便能够以这种格式储存信息方面打上空白。 我可以有一个表:

User  |  Plugin
----------------
A     |  ...
B     |  ...
B     |  ...

......如果原始一栏是我可以重新注入的原始金星的序号。 然而,这似乎是一种可怕/反感。 是否有更好的办法这样做?

问题回答

如果你不必问一下Plugin一栏中的一些财产,我就不认为数据库是可怕的。 而且......青年可能考虑使用诸如mongodb等一些非锡马数据库。 无论如何,我会这样做,涉及序列化(也许有色人反对的话,如果我后来会消费黑手法所产生的结果,或者如果这更适合你的环境的话,一些XML)。

如果你想保持更紧密的关系,......那么,你将有一个带有原始特性的表格,其栏目为:UserId, Plugin Id, PropertyName, PropertyValue.then, table with Plugins: Plugin 缩略语 (这只是设计它的一种方式) 问题在于,如果你拥有一些复杂的物体的原始财产......在这种情况下,你必须将其编为财产类别......

User
-----
UserID
Name

Plugin
------
PluginID
PluginName

PlugInProperty   
------------------
PlugInPropertyId
PluginID

UserPlugin
------------
UserPluginId
UserId
PluginId

UserPlugInProperty
------------------
UserPluginId
PlugInPropertyId
Value




相关问题
Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

NSArray s, Primitive types and Boxing Oh My!

I m pretty new to the Objective-C world and I have a long history with .net/C# so naturally I m inclined to use my C# wits. Now here s the question: I feel really inclined to create some type of ...

C# Marshal / Pinvoke CBitmap?

I cannot figure out how to marshal a C++ CBitmap to a C# Bitmap or Image class. My import looks like this: [DllImport(@"test.dll", CharSet = CharSet.Unicode)] public static extern IntPtr ...

How to Use Ghostscript DLL to convert PDF to PDF/A

How to user GhostScript DLL to convert PDF to PDF/A. I know I kind of have to call the exported function of gsdll32.dll whose name is gsapi_init_with_args, but how do i pass the right arguments? BTW, ...

Linqy no matchy

Maybe it s something I m doing wrong. I m just learning Linq because I m bored. And so far so good. I made a little program and it basically just outputs all matches (foreach) into a label control. ...