python在结构设计中的应用_为层次结构设计更好的数据库?
我已經創建了一個雙語詞典應用程序1,它目前非常簡單,但我們將開始更全面地開發詞條,我正試圖找出最好的數據庫結構。我以前參與過的字典項目都使用了xml(因為字典條目很大程度上是分層的),但是我需要使用數據庫來完成
這是一個典型的中等復雜度條目的外觀(簡化了一點):dar
/dār/名詞
住宅、住宅、住所
“那人進了房子。”
主頁
“我們回家了。”
動詞
轉身
李亞民,“右轉。”
轉身
正如你所見,一個詞可以有多個詞性,所以“詞性”不能簡單地作為詞條的屬性,它必須與詞義相關。每個詞組可以有多個詞義(編號),當然每個詞義可以有多個近義詞翻譯。感官也可能有例句(可能不止一個),但并不總是這樣。考慮到條目部分是如何相互關聯的,我想出了以下結構,使用了五個表:Entry
-id
-headword
-pronunciation
-...
PartOfSpeech
-id
-entry (ForeignKey)
-pos
Sense
-id
-sense_number
-part_of_speech (ForeignKey)
-...
Translation
-id
-tr
-sense (ForeignKey)
-...
Example
-id
-ex
-ex_tr
-sense (ForeignKey)
-...
或者,換句話說:
^{pr2}$
這看起來很簡單,對我來說很有意義,但我想知道在執行過程中是否會太復雜。例如,要顯示一組條目,我需要編寫幾個嵌套的for循環(for e in entries → for p in pos → for s in senses → for tr in translations),而且都是反向查找!在
我甚至不認為我可以在Django管理中編輯整個條目(除非它允許您以某種方式對內聯的內聯進行內聯)。不管怎樣,我都要構建一個編輯器界面,但是當你想的時候,能夠在管理站點上檢查東西是很好的。在
有更好的方法嗎?我覺得我錯過了一些聰明的東西。在
謝謝,
凱倫
1如果你好奇的話:tunisiandictionary.org。在其簡單的當前形式中,它只有兩個表(Entry,Sense),翻譯只是用逗號在一個字段中描述。這很糟糕。
2有兩個原因:1)因為它是我用Python/Django編寫的web應用程序;2)因為我討厭xml。
總結
以上是生活随笔為你收集整理的python在结构设计中的应用_为层次结构设计更好的数据库?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python批量添加文件夹_python
- 下一篇: ssl证书 所属项目怎么上传_ssl证书