数据库设计:何时使用单独的列来表示字符串列表以及何时使用数据库实体/记录

时间:2016-03-12 21:13:04

标签: database hibernate database-design

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

例如:我使用名称

在数据库中保存记录
C.A. Tigre

现在我希望能够通过搜索

找到这个特定的记录
CA Tigre

C. A. Tigre

C A Tigre

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

我的第一个想法是使用/实现数据库模糊搜索,但我不确定这是否足够。我想到的另一个想法是另外使用别名来表示我知道将用于搜索的名称。

鉴于目前我更喜欢使用别名的方法我不确定如何坚持这些别名。我可以将它们保存在新列中的某个数据库记录中,并使用单独的字符串列表,或者我可以将它们保存为自己的记录(父/子或类似的东西)。

表现明智的是,目前印象中的分隔字符串列表可能是保存(和搜索搜索)每个别名作为一条记录的最佳选择,但这只是一种感觉。

有没有人有这方面的经验,或者有没有人知道这个用例的最佳实践?

1 个答案:

答案 0 :(得分:0)

我会创建一个带有外键引用的别名表,返回团队表。然后在别名名称列上添加索引。您可以搜索别名,返回所有匹配项,然后通过FK将您的关系返回到别名匹配的实际团队名称。