所以我在设计数据库时遇到了问题。 我创建了具有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运算符 - 这对运行时来说并不好。
所以我真的需要你的帮助......希望你能帮助我。 谢谢!!
答案 0 :(得分:0)
我要说,要求部分缺乏明确性。 但无论如何,让我们继续吧。
让我们从这个混乱的领域中提取实体。 每个实体通常意味着一个表。
从帐户开始。
帐户有订阅。目前尚不清楚这里的关系是什么:如果它是1:1(“帐户只能有一个订阅”) - 那么对它的引用是Account实体的一部分,如果它是1:n - 那么你需要一个特殊的账户 - 订阅关系表。
现在订阅 - 它由SubscriptionType或Package定义,因此必须有一个包含这些记录的表(这些限制以及您想要的任何其他内容)。帐户或帐户订阅表将引用它来定义帐户具有哪些订阅。
然后是提供商 - 它们由SubscriptionType / Packages引用。如果每个Package / SubscriptionType可能有多个Provider,那么您需要额外的Package-Provider实现表。
最后,Overrides。由于对它的要求很弱,这是一个棘手的部分,但只要它们覆盖了包装参数,我建议保持实体结构与包装相同。
您甚至可以将它放在相同的Package表中,按日期排序,或者为它们分配权重,始终保持具有最低权重的默认Package记录。 然后,当您创建覆盖时,复制除被覆盖的字段之外的整个默认记录,并为其分配下一个权重(或当前日期),并在查询时 - 将其分组并获取MAX()。
本身没有电子邮件实体 - 但您没有在您的要求部分中提及它。
所以,这几乎就是它:帐户,订阅,(可选)帐户订阅,包,提供商,(可选)包提供商,(可选,可以合并到包中)覆盖。
适合你吗?