数据库架构、保存管理员用户、站点成员、时事通讯订阅者.什么是最佳实践?


database architechture, saving admin users,site members,newsletter subscribers.what's the best practices

我相信很多人以前可能问过这类问题,但我认为这里有区别。我有一个网站使用Zend框架+学说。我使用zend_acl和自定义zend_auth学说。我一直使用不同的表管理用户和另一个网站成员。我这样做是因为有太多的领域为网站成员和管理成员不需要填写该表格。此外,成员表中只有少数"可空"字段我正准备增加时事通讯功能,我在想,如果商业规则是允许人们注册而不一定是会员。

我要在哪里存储它们?创建另一个表听起来像是糟糕的设计,因为维护可能是一个问题。

这是我的问题。
问题1:将站点管理员和站点成员分开是最佳实践吗?
问题2:是否应该允许订阅时事通讯的用户不是网站社区的成员。如果是这样,该如何处理?

感谢阅读。

RE问题1:您可以通过添加包含您需要的额外属性的自己的独立表来逻辑地扩展预构建的站点管理表。只需使用fk到已经在您预构建的站点管理表中的pkk。这是任何系统定制的常见做法,其中您有一个预构建的系统,该系统不包含您需要的所有列或表。

RE问题2:这取决于你的网站的目的。如果你正在为企业、慈善机构、服务机构或类似的机构建立一个网站,那么我建议你让尽可能多的人订阅你的时事通讯。如果你正在为一个秘密社会建立一个网站,那么你最好把它锁起来!这是一个业务规则决策,而不是数据库设计决策。

这样做的技术设计是捕获非会员订阅者的电子邮件(或蜗牛邮件-如果这是你的时事通讯的交付方式)。然后构建一个视图,该视图对成员和非成员订阅者执行UNION ALL操作。这个视图将为您提供所有订阅者的列表,而不考虑您对他们的其他了解以及他们如何适合您的网站。