需要MySQL表模式帮助吗

需要MySQL表模式帮助吗,mysql,database-design,Mysql,Database Design,我在决定数据库中某个表字段的位置时遇到问题。 该数据库用于分类广告网站。 我希望注册和未注册的用户都能发布广告。如果未注册的用户发布广告,网站应该向他索要联系电话,如果用户已经注册,那么应该使用存储在用户表中的联系电话 现在我的问题是,是否可以将注册用户和未注册用户的联系电话存储在同一个表字段中? 如果是,该字段应该放在哪里,在分类广告表中,还是在用户表中(注意表中的每个用户都有一个唯一的Id,因此,用未注册的用户填充用户表只是为了获得他们的联系电话,只会用无用的数据填充表) 提前谢谢 你可以把

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

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


提前谢谢

你可以把phone字段放在ads表中,里面有一个is_registed字段。然后通过php检查是否注册,然后知道在哪里搜索电话号码


关于

我希望您的设计具有灵活性,但如果您的逻辑主要独立于用户是否已注册而处理用户,我将使用相同的表,只需为已注册的用户完成用户的其余数据。我不会将用户数据存储在ads表上,即使只是为了数据组织的清晰性

我猜你的注册用户都会有用户名和密码,所以你可以只检查这些用户名和密码的存在,以知道他们是否已注册。如果你不想在将来改变你的逻辑,你当然应该仔细选择这种区别

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


我会要求您发送一封电子邮件,这样您就可以发送密码,也许还可以要求进行帐户验证(现在或将来)。

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

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

你说

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

如果它没用,就不要储存。如果你需要储存它,它不是无用的

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


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

谢谢你的回答我所说的“无用信息”是指注册用户的个人资料中的信息要比未注册用户多得多(姓名、电子邮件、用户名、密码等)因此,创建一整行表格只是为了插入一个未注册用户的电话号码对我来说似乎是个坏主意,因为整行只是为了在其中插入一个字段,而剩下大约8个字段是空的。关于在一个位置填充所有信息,您确实有一个观点,我将等待更多的答案来决定:)创建一个包含8个值的行与一个包含1个值和7个空值的行之间的成本差异是可以忽略的。但您必须使用户名为空或自动分配。(StackOverflow自动为未注册的用户分配用户名。我认为这是个好主意。)感谢您的回答。注册很容易,但我觉得许多互联网用户在不得不注册一项简单的服务时感到恼火,因为许多竞争对手已经向未注册的用户提供了服务。此外,电话号码字段只是为了简化,我实际上有3个字段,未注册用户每次发布广告时都必须填写。我正在考虑创建一个“来宾”表,除了广告id之外,还包含这3个字段。同时在广告表中放置一个is_注册字段,以确定哪个用户表(来宾或用户)从中提取信息。有道理吗?我很喜欢这个答案,我可能会那样做!非常感谢你的帮助,亚历克斯!