Database 数据库设计:何时为字符串列表使用单独的列,何时使用数据库实体/记录

Database 数据库设计:何时为字符串列表使用单独的列,何时使用数据库实体/记录,database,hibernate,database-design,Database,Hibernate,Database Design,我想在我的数据库中保存运动队名称。稍后,我需要通过一个给定的字符串来查找这些团队,该字符串有时与数据库中保存的字符串不完全匹配。 我使用mariadb(但可以切换到另一个免费的rdbms)作为底层数据库和hibernate 例如:我在数据库中保存了一条名为 C.A. Tigre 现在,我希望能够通过使用搜索来查找此特定记录 CA Tigre 或 或 等等。该数据库将包含超过10万个团队,我预计每个团队平均有5个别名,因此它或多或少应该是一种通用方法 我的第一个想法是使用/实现数据库模糊搜索,

我想在我的数据库中保存运动队名称。稍后,我需要通过一个给定的字符串来查找这些团队,该字符串有时与数据库中保存的字符串不完全匹配。 我使用mariadb(但可以切换到另一个免费的rdbms)作为底层数据库和hibernate

例如:我在数据库中保存了一条名为

C.A. Tigre
现在,我希望能够通过使用搜索来查找此特定记录

CA Tigre

等等。该数据库将包含超过10万个团队,我预计每个团队平均有5个别名,因此它或多或少应该是一种通用方法

我的第一个想法是使用/实现数据库模糊搜索,但我不确定这是否足够。我脑海中浮现的另一个想法是,在我知道将用于搜索的名称上使用别名

考虑到目前我更喜欢使用别名的方法,我不确定应该如何保留这些别名。我可以将它们保存在新列中的特定数据库记录中,并使用单独的字符串列表,或者将它们保存为自己的记录(父/子或类似的内容)

就性能而言,我现在的印象是,与将每个别名作为一个记录保存(并获取用于搜索)相比,单独的字符串列表可能是最好的选择,但这只是一种感觉


有人对此有经验吗?或者有人知道此用例的最佳实践吗?

我将创建一个别名表,其中包含返回到团队表的外键引用。然后在别名列上放置索引。您可以搜索别名,返回所有匹配项,然后通过FK将您的关系恢复到别名匹配项的实际团队名称

C. A. Tigre
C A Tigre