正常化一个人的名字走得太远了吗?

Ken*_*ran 14 database normalization

您通常会规范化数据库以避免数据冗余.在一个充满名称的表格中很容易看到有足够的冗余.如果你的目标是创建一个地球上每个人的名字目录(祝你好运),我可以看到规范化名称是如何有益的.但在平均业务数据库的背景下是否过度杀伤?

(当然我知道你可以采取任何极端的事情......如果你将音节标准化为音节......或者甚至是相邻的角色对.我看不到这么远的好处)

更新:

一个可能的理由是随机名称生成器.这就是我能想到的一切.

Qua*_*noi 53

是的,这太过分了.

人们不会立刻将名字Bill改为Joe全名.

  • 这真的说明了这一点.规范化的原因是,如果你必须改变整个数据库中相同的东西,那么你就不必改变一大堆记录.但你永远不必改变每个人的名字比尔给乔. (22认同)
  • @Kenneth:顺便说一句,我的祖母来自这篇文章:http://stackoverflow.com/questions/768123/how-would-you-live-without-mysql/768135#768135出生于圣彼得堡,在彼得格勒结婚,在封锁期间为列宁格勒辩护,并在圣彼得堡去世.她从未搬出城市. (5认同)

Yis*_*hai 35

数据库规范化通常是指对字段进行规范化,而不是其内容.换句话说,您将规范化数据库中只有一个名字字段.这通常是值得的.但是,数据内容不应该被标准化,因为它对于那个人来说是个体的 - 你不是从列表中挑选,并且你没有在一个地方更改列表以影响每个人 - 这将是一个错误,而不是一个功能.


jal*_*alf 5

你如何规范名称?并非所有名称都具有相同的结构.并非所有国家/地区或文化都对名称使用相同的规则.名字不一定只是名字.人们有不同数量的名字.有些国家/地区没有简单的名字/姓氏对.如果我的名字恰好是您的姓,如果您的数据库中的它们被认为相同,该怎么办?如果没有,那么你会遇到一个问题,即姓氏可能意味着不同国家的不同事物.在我所知道的大多数国家,这是一个姓氏.您的姓氏与您父母的姓氏至少相同.在冰岛,这是你父亲的名字,其次是"儿子"或"女儿".因此,相同的姓氏将意味着完全不同的事情取决于您是否在冰岛和美国遇到它.

在某些文化中,结婚时这种情况很常见,因为女人可以取其丈夫的姓氏.在其他文化中,这是完全可选的,或者甚至可能以相反的方式工作.

你怎么能正常化这个?它会给你带来什么信息?如果您在数据库中发现某人将"史密斯"作为构成其姓名的最后一个词,那会告诉您什么?这可能不是他们的姓氏.它可能只是姓氏的一部分.它可能是某种语言的荣誉,但根据其文化,它应被视为名称的一部分.

如果数据遵循通用结构,则只能对数据进行标准化.


小智 5

如果您需要根据小名称执行查询,我可能会发现需要规范化名称。例如,搜索“Betty”可能需要返回“Betty”、“Beth”和“Elizabeth”的结果