我有一個字典的複雜數據庫方案。每個對象(本質上是一個翻譯)與此類似:如何建模和查詢關係數據庫中的對象?
Entry {
keyword;
examples;
tags;
Translations;
}
與
Translation {
text;
tags;
examples;
}
和
Example {
text;
translation;
phonetic_script;
}
即標籤(即語法),可以屬於關鍵字本身,或翻譯(外語的語法)和類似的例子可以屬於翻譯本身(即解釋外來詞)或者條目中的文本。我結束了此類關係設計的:
entries(id,keyword,)
tags(tag)
examples(id,text,...)
entrytags(entry_id,tag)
entryexamples(entry_id,example_id)
translations(id,belongs_to_entry,...)
translationtags(transl_id, tag)
translationexamples(transl_id,example_id)
我的主要任務就是查詢這個數據庫。說我搜索「富」,我目前的處理方式是:
query all entries with foo, get ids A
foreach id in A
query all examples belonging to id
query all tags belonging to id
query all translations belonging to A, store their ids in B
foreach tr_id in B
query all tags belonging to tr_id
query all examples belonging to tr_id
重建我的對象。這看起來很麻煩,而且很慢。我不明白我可以通過使用連接或其他方式顯着改善這一點。我很難將這些對象建模爲數據庫中的關係。這是一個適當的設計?
我該如何提高查詢時間的效率?
我可能會考慮一個不同的數據庫解決方案,如NoSQL。 RDBMS不是一切的解決方案。 – Amirshk