gpt4 book ai didi

php - 口语变体关系数据库设计的最佳实践

转载 作者:行者123 更新时间:2023-11-29 15:06:59 25 4
gpt4 key购买 nike

嗯,这里有一个小问题。

我要设计一个网络应用程序数据库,以使用基本上一种口语。然而,这种语言有两种字母表(拉丁语和西里尔语)和三种口语变体,实际上只有一些细微的差异(我认为有数百个单词略有不同)。使事情变得更加困难的是,数据库和管理界面将用于两个应用程序,其中一个应用程序将使用所有文章(以及界面)的脚本和两种口语变体,而其他应用程序将仅使用一种(拉丁语)。

我编写了一种用于拉丁语到西里尔字母和反向“翻译”的算法,这应该使用户更容易输入,但现在我面临着一些我对此存有疑问的数据库/应用程序规范化问题。

(1) 我可以将其视为口语问题并相应地创建数据库。

| 'variant' | [id, name] #language variant
| 'article' | [id, <all variant non-dependent fields>] # such as image, relations, etc
| 'article_variant' | [id, fk_language_variant_id, fk_article_id, <all variant dependent fields>] #title, body, etc
| 'article_has_variants' | [id, fk_article_id, fk_article_variant_id]

然而,由于“article_variant”中的大多数数据库条目都包含相同的信息,这似乎是多余的。

(2) 我可以使用“文章”表和单词对以及“拉丁语到西里尔字母和后面”算法来完成此操作,以便将其显示给用户在应用程序级别上解决它。那么我的数据库将如下所示:

| 'variant' | [id, name] #language variant
| 'article' | id, <all fields>
| 'words' | id, word
| 'word_pairs' | id, fk_word_id, fk_word_id

这个解决方案对我来说看起来很完美,但我担心它会对应用程序性能产生影响,因为 (a) 每次在与每个单词的默认语言变体不同的语言变体上显示时,它都必须浏览整篇文章(b) 之后,它必须将字母表中的每个字母(由于复杂的字母转换,例如 nj -> њ ,所以要多转换几次)到它的对。

有什么想法吗?

最佳答案

我会使用带有缓存的动态选项。仅存储文章的一种变体(最初创建的变体)并动态创建其他变体,例如

 article = select from articles
if article.lang != requested_lang
text = select from cache where id=article.id and lang=requested_lang
if !text
text = convert_language(article.text, requested_lang)
insert into cache(article.id, requested_lang, text
echo text
else
echo article.text

(这意味着语言转换是全自动的,我不确定是否是这种情况)

关于php - 口语变体关系数据库设计的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1779536/

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