这是我的第一个问题,我希望这是一个适当的问题。由于我对数据库的了解有限,因此我不知道正确的术语,也找不到我想要的东西。
我决定为移动平台开发字典应用程序,因为我知道的两种语言之间没有任何应用程序。我想做的是在两个表上的项目之间创建关系或链接。在如此简单的任务上,我找不到可行的方法。我正在使用SQLite3在Visual Studio的Xamarin.Forms上开发我的应用程序。
我有两个具有以下简单模型的语言单词/短语表。
ID | Word
1 X
2 Y
3 Z
例如,当我在语言1 中搜索词 house 时,我想在语言2 上获取每个具有相关性的词/ link到房屋。结果可能只有一个单词或多个单词。
我对此主题进行了一些研究,但现在迷路了。我在SQLite中找到了ForeignKey,但是它只定义了一种关系,在这种情况下,我可能需要3个或4个具有不同单词的关系。我曾考虑过要在单词之间创建另一个关系表,但是从长远来看,当我需要在填充数据库时添加或删除单词时,该表将无法正常工作。用ForeignKeys或ID匹配更改/编辑关系将非常困难。
我的问题是,是否有一个平台/应用程序,可以直接查看它们之间的关系并进行更改而无需担心ID或ForeignKeys?没有花哨或超级详细。我只希望能够通过使用文字而不是数字(ID)来编辑我的关系。我知道在后台所有内容都将在ID中。
谢谢!
修改
我决定像这样改变我的模型。
语言1
ID | Word | Meanings
1 X A
2 Y B
3 Z C, D
语言2
ID | Word | Meanings
1 A X
2 B Y
3 C Z
4 D Z
在代码中,我将实现一种将“含义”拆分为字符串列表并在其他表的“单词”字段中进行搜索的方法。这样,我将无法为同形异义词创建不同的条目(相同的拼写,不同的含义),但是比ID匹配更容易。
答案 0 :(得分:1)
我也会用所有单词及其所属的语言制作一张桌子。在第二张表中,您可以定义可以使用的语言。在第三个表格中,您可以通过匹配2个单词来放置翻译。
我建议将关系与id字段上的外键匹配。如果一个单词以一种以上的语言存在(如果您不希望将一种语言中具有1种以上含义的单词分开),则使用单词作为标识符会给该设计带来问题。您可以在word / languageId组合上创建唯一索引。如何创建它们取决于您使用的技术。普通SQL,实体框架等。
WordTable
翻译表
语言表