gpt4 book ai didi

mysql - 将电子邮件存储为三个属性与一个属性(用于统计目的)

转载 作者:行者123 更新时间:2023-11-29 08:51:36 25 4
gpt4 key购买 nike

我有一个数据库,其中有一个表 email_eml,该表存储 3 个属性 name_eml、host_eml 和 domain_eml。哪个存储电子邮件名称、网站名称和域名(如 .com .net 等) 它不存储 @ 或 .在任何变量中。这给了我一些灵 active (例如检查平均名称长度(@符号之前)会更快)。我可以收集一些有关电子邮件名称的统计信息,我还可以从 name_eml 属性创建用户名。然而,当人们提交电子邮件或者我必须比较整封电子邮件时,这也是一个负担。这将使我存储额外的 @ 和 .符号,让我在想要收集统计数据时通过脚本分隔名称。

我想知道将电子邮件存储在单列中而不是 3 列中是否更好。其中一种方式更合适还是更规范?

我希望答案包括两种存储电子邮件地址的方法的优缺点。 (即使将电子邮件存储在 3 列中并没有太多优点)

最佳答案

It doesnt store @ or a . in any of the variables.

嗯,应该; cat.call@somedomain.com 是合法的电子邮件地址。

I wonder if its better to store the email in a single column instead of the 3 columns. Is one of the ways more proper or more normalized way?

这与标准化没有任何关系。它与复杂的数据类型有关。

关系模型允许任意复杂的数据类型。常用的复杂数据类型是时间戳,通常包括年、月、日、时、分、秒和微秒。

给定时间戳,有时您可能只需要知道日期,有时您可能只需要知道年份或小时。在处理复杂数据类型时,关系模型给数据库管理系统带来了特定的负担。对于复杂的数据类型,需要 dbms 要么完整地返回它,要么提供返回其各个部分的函数。关键是,如果用户只想要时间戳中的小时,则用户不需要编写代码来获取它。

SQL dbms 对时间戳有很好的支持;我熟悉的每个 dbms 都提供返回时间戳各个部分的函数。它们都没有对电子邮件地址的 native 支持。

在 SQL 平台上,您至少有两种选择来保持数据库接近关系模型。您可以编写可合并到数据库服务器中的函数(如果您的 dbms 和编程技能允许),或者您可以将数据类型分成多个部分,以便每个部分都可以像任何其他值一样完整地进行寻址。

虽然可能有一些数据类型可以像这样拆分(街道地址可能是其中之一),但我确实没有看到任何令人信服的理由来拆分电子邮件地址。

This allows me some flexibility (for example checking average name lenght(before the @ symbol) will be faster) . I can collect some statistics on email name, I can also create usernames from the name_eml attribute.

虽然这是事实,但现在我无法想象用户名的平均长度有什么有趣的地方。我不认为你的任何理由令人信服,但你比我更了解你的申请。

如果您确实需要对各个部分进行大量操作,那么将各个部分分开更有意义。更多“正常”客户端代码应该通过连接各个部分的 View 来访问电子邮件地址。 (连接比在运行时解析电子邮件地址容易很多。)

关于mysql - 将电子邮件存储为三个属性与一个属性(用于统计目的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11062738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com