【问题标题】:MySQL table schema help needed需要 MySQL 表模式帮助
【发布时间】:2011-04-04 18:26:45
【问题描述】:

我在决定将某个表字段放置在数据库中的什么位置时遇到问题。 该数据库用于分类广告网站。 我希望注册和非注册用户能够发布广告。如果未注册用户发布广告,网站应要求他提供联系电话,如果用户已注册,则应使用存储在用户表中的联系电话。

现在我的问题是,是否可以将注册用户和未注册用户的联系电话存储在同一个表字段中? 如果是这样,该字段应该放在哪里,在分类广告表中,或者在用户表中(注意表中的每个用户都有一个唯一的 ID,因此,用未注册用户填充用户表只是为了获得他们的联系方式手机只会用无用的数据填充表格)

提前致谢!

【问题讨论】:

    标签: mysql database-design


    【解决方案1】:

    好吧,您可以将 phone 字段放在 ads 表中,其中包含一个 is_registered 字段。然后通过 php 你检查 is_registered 然后你就知道在哪里搜索电话号码了。

    问候

    【讨论】:

    • 我非常喜欢这个答案,我可能会这样做!非常感谢亚历克斯的帮助!
    【解决方案2】:

    您可以将未注册用户的电话号码存储在同一张表的同一列中,而且您可能应该这样做。它使从未注册用户到注册用户的转换变得简单——您不必移动或重新输入电话号码。如果任何用户更改电话号码,只需在一个地方进行更新。 (你知道每天有多少人不小心把手机掉在马桶里吗?这太惊人了。)

    如果您现在依靠电话号码来识别注册用户,则需要先解决这个问题。 (我认为您没有这样做,但如果是,请先解决此问题。)

    你说

    用 未注册用户只是为了获得他们的 联系电话只会填满表格 有无用的数据

    如果没用,请不要存放。如果你需要存储它,它不是没用的。

    当分类广告终止时,您始终可以删除未注册用户。但 。 . .

    要求提供联系电话号码而不是让用户选择留下电话号码或电子邮件地址是否有意义?就个人而言,我更喜欢使用一次性电子邮件地址来处理此类事情。

    【讨论】:

    • 感谢您的回答 我所说的“无用信息”是指注册用户的个人资料中的信息比未注册用户多得多(姓名、电子邮件、用户名、密码等... ) 所以创建一个完整的表格行只是为了插入一个未注册用户的电话号码对我来说似乎是个坏主意,因为一整行只是在其中插入一个字段,而其他大约 8 个字段为空。您确实有一点关于在一个地方填写所有信息我会等待更多答案来决定:)
    • 创建包含 8 个值的行与包含 1 个值和 7 个空值的行之间的成本差异可以忽略不计。但是您必须使用户名可以为空或自动分配。 (StackOverflow 会自动为未注册用户分配用户名。我认为这是个好主意。)
    【解决方案3】:

    我会在您的设计中寻求灵活性,但如果您的逻辑主要独立于用户是否注册,我将使用同一张表,并为已注册的用户填写其余数据。我不会将用户数据存储在 ads 表中,即使只是为了数据组织的清晰。

    我猜您的注册用户都会有一个用户名和密码,因此您只需检查这些是否存在就可以知道他们是否已注册。如果你以后不想改变你的逻辑,你当然应该谨慎选择这个区别。

    另一种方法:为什么不让注册变得如此简单,以至于让未注册的用户毫无意义?我在所有情况下都要求提供电话号码,只需添加密码字段或自动生成一个密码字段,您的所有用户都已注册。

    我会要求您提供一封电子邮件,以便您可以发送密码并可能要求进行帐户验证(现在或将来)。

    【讨论】:

    • 感谢您的回答 AJweb。注册很容易,但我觉得许多互联网用户在必须注册一项简单的服务时感到恼火,而许多竞争对手已经向未注册用户提供服务。另外,电话号码字段只是为了简化,我实际上有 3 个字段,未注册用户每次发布广告时都必须填写。除了广告 ID 之外,我正在考虑创建一个包含这 3 个字段的“访客”表。在 ads 表中放置一个 is_registered 字段以确定要从中提取信息的用户表(guest 或 users)。有意义吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-04
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-19
    相关资源
    最近更新 更多