具有Overriting组设置并允许设置的MySql DB结构

时间:2017-02-07 21:50:53

标签: mysql database

你好吗? 我正在开发一个包含邮件列表帐户的项目。 该帐户有3个可以购买的套餐。每个包都有自己的设置。例如:第一个包裹,用户每天收到1封电子邮件,而在第二个包裹中,他每天收到5封电子邮件。 我想要的另一个功能是覆盖一些包设置的机会。这意味着,对于一个帐户,我将每日电子邮件限制设置为7。 我在这个系统中需要的另一个功能是电子邮件提供商。我希望第一个包只能从第一个提供商处获得电子邮件,第二个包来自2个提供商等等。

所以我在设计数据库时遇到了问题。 我创建了具有EmailID和名称的表emailSubscriptions。 我创建了table accountsGroup,它只包含GroupId和name。 我创建了具有AccountID,GroupID(外键),电子邮件,密码和投资的表帐户。 (根据他的投资,他获得了他的包裹)。 我创建了表accountsSubscriptions,它有SUBSCRIPTION ID,AccountID,EmailID和IsActive。 我创建了包含PackageID,GroupID的表包,从投资到投资,以及所有其他包设置,例如maxEmailsPerDay ....

当然最终用户有。 GUI,他可以看到他的设置,并根据他当前的包编辑他可以。用户的管理员也有GUI。

无论如何,现在我卡住了。 我想添加帐户所有包列,然后当我想发送电子邮件时,我将从组中获取设置,并且它不是0 /空只是覆盖,但问题是当某些设置为0/1时,然后该列默认为0,如果groupSettings为1,我想将其关闭,我不能。所以这是第一个问题 第二个问题是允许的电子邮件订阅......实际上是同样的问题。 我想添加包装allowedEmails,但这意味着当我发送电子邮件时,我需要使用LIKE运算符 - 这对运行时来说并不好。

所以我真的需要你的帮助......希望你能帮助我。 谢谢!!

1 个答案:

答案 0 :(得分:0)

我要说,要求部分缺乏明确性。 但无论如何,让我们继续吧。

让我们从这个混乱的领域中提取实体。 每个实体通常意味着一个表。

从帐户开始。

帐户有订阅。目前尚不清楚这里的关系是什么:如果它是1:1(“帐户只能有一个订阅”) - 那么对它的引用是Account实体的一部分,如果它是1:n - 那么你需要一个特殊的账户 - 订阅关系表。

现在订阅 - 它由SubscriptionType或Package定义,因此必须有一个包含这些记录的表(这些限制以及您想要的任何其他内容)。帐户或帐户订阅表将引用它来定义帐户具有哪些订阅。

然后是提供商 - 它们由SubscriptionType / Packages引用。如果每个Package / SubscriptionType可能有多个Provider,那么您需要额外的Package-Provider实现表。

最后,Overrides。由于对它的要求很弱,这是一个棘手的部分,但只要它们覆盖了包装参数,我建议保持实体结构与包装相同。

您甚至可以将它放在相同的Package表中,按日期排序,或者为它们分配权重,始终保持具有最低权重的默认Package记录。 然后,当您创建覆盖时,复制除被覆盖的字段之外的整个默认记录,并为其分配下一个权重(或当前日期),并在查询时 - 将其分组并获取MAX()。

本身没有电子邮件实体 - 但您没有在您的要求部分中提及它。

所以,这几乎就是它:帐户,订阅,(可选)帐户订阅,包,提供商,(可选)包提供商,(可选,可以合并到包中)覆盖。

适合你吗?