【问题标题】:Database architecture of newsletter service (with php)时事通讯服务的数据库架构(带php)
【发布时间】:2011-06-19 19:21:57
【问题描述】:

我正在构建一个为用户提供时事通讯系统的服务。

我的问题是,如何在数据库上组织它?用户开户 -> 数据库中有新闻行 -> 电子邮件将如何存储?我想到了类似的东西:

user@mail.com,HASHCODE|user2@anothermail.com,HASHCODE|someone@mail.com,HASHCODE ..

(将存储在用户行的一个字段中,用于删除电子邮件的 HASHCODE)

然后使用explode() 在数组中排序。但我不知道这是否是订购邮件的最佳方式.. 你觉得呢?

【问题讨论】:

    标签: php mysql sql database database-design


    【解决方案1】:

    为什么不将电子邮件存储在单独的表 UserEmails 中并与用户表建立关系。作为起点,您可以查看this 链接 Useremail 表会有三个字段 UseremailID email UserID

    UseremailID    email         UserID
    1           sss@ss.com        1
    2           asasf@ssf.com     1
    

    我建议您阅读一些关系数据库,以便您对表和关系有所了解

    【讨论】:

    • 电子邮件将如何存储在 UserEmails 表中?每个用户在 UserEmail 表上都有一行,那么该行上的电子邮件将如何存储?
    • 我想过这个想法,但是有效吗?可能是我有一千行的情况..
    • 这将是有效的,就像您按照您的方法一样,您的数据库将不会处于最低要求的第一范式。几乎所有的实际应用都有大量数据 dbms 足以高效处理。如果您遵循基础知识,那么您的代码将是可维护的,例如,如果您想标记主电子邮件地址,您将来会做什么。
    【解决方案2】:

    您应该考虑使用这样的表结构:

    Table 'subscription'
    id int(20) PK auto_increment
    email varchar(100) UNIQUE index
    

    这将导致您必须在表中插入一个新行,其中包含一个 ID 和一个电子邮件地址(它们都是唯一的,因此您不会得到双重记录)

    【讨论】:

    • 但是邮件将如何存储在字段中?
    【解决方案3】:

    我会创建一个表来存储时事通讯,并创建另一个表来创建用户和时事通讯之间的关系,这样您就可以更好地控制自己的信息。

    三个表:User、User_Newsletter、Newsletter

    User_Newsletter 只会存储 user_id 和 newsletter_id

    【讨论】:

    • 那我会做什么,但重要的是它 - 将如何存储在表 Newsletter 上的电子邮件?每个用户都有一行,然后有一个电子邮件字段或类似的东西?在这个字段上,如何存储电子邮件?
    • 您将只在 user 表上拥有电子邮件,其他任何地方都没有,用户和时事通讯 user_newsletter 之间的关系会处理它...
    【解决方案4】:

    数据库服务似乎没有那么灵活(即使它们是被引入的)。普通的 UNIX 文件系统层次结构和纯文本文件是存储信息的最佳方式。你不知道数据库的内部结构。但是你对你的文件系统了如指掌,包括文件权限和加密

    例如,以Croud Mail 为例,这是我提供的免费电子邮件通讯服务。我不使用数据库,但它的编码非常灵活和安全。

    【讨论】:

    • 您的网站已损坏。
    猜你喜欢
    • 2010-09-07
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    • 2019-03-03
    • 2013-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多