我已经创建了一个双语词典应用程序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在结构设计中的应用_为层次结构设计更好的数据库?相关推荐

  1. python删除字符串中重复字符_从Python中删除字符串标点符号的最佳方法

    似乎有一个比以下更简单的方法: 1 2 3import string s ="string. With. Punctuation?" # Sample string out = s ...

  2. python 替换array中的值_利用Python提取视频中的字幕(文字识别)

    我的CSDN博客id:qq_39783601,昵称是糖潮丽子~辣丽 从今天开始我会陆续将数据分析师相关的知识点分享在这里,包括Python.机器学习.数据库等等. 今天来分享一个Python小项目! ...

  3. python在工作中怎么用_如何用python在工作中“偷懒”

    原标题:如何用python在工作中"偷懒" "偷懒还能干完活,才是本事 " 有些朋友在工作中会有这样的困惑:明明我从早忙到晚,为什么得到的评价还不高? 要知道, ...

  4. python操作mysql中的表_带你了解什么是Python操作MySQL数据库

    写这篇文章主要是为了介绍Python操作MySQL数据库,并结合相应的实例带你更加深入了解.文中的代码实例很详细,对大家有一定的参考学习价值. 1.什么是pymysql? PyMySQL是在Pytho ...

  5. python统计句子中单词个数_【python统计单词数量】作文写作问答 - 归教作文网

    如何用python统计一个txt文件中某个单词出现的次数 1.首先,定义一个变量,保存要统计的英文文章. 2.接着,定义两个数组,保存文章中的单词,以及各单词的词频. 3.从文章中分割出所有的单词,保 ...

  6. 在python的解释器中使用函数_浅析Windows 嵌入python解释器的过程

    这次主要记录在windows下嵌入 python 解释器的过程,程序没有多少,主要是头文件与库文件的提取. 程序平台:windows10 64 bit. Qt 5.5.1  MSVC  2013 32 ...

  7. python导入模块中的对象_详解Python项目开发时自定义模块中对象的导入和使用

    背景:1)任何一个Python程序文件既可以直接执行,也可以作为模块导入再使用其中的对象:2)对于大型系统开发,一般不会把所有代码放到单个文件中,而是根据功能将其分类并分散多个模块中,在编写小型项目时 ...

  8. python提取cad中的文字_[python]提取PPT中的文字(包括图片中的文字)

    python是一门很强大的语言,因为有着丰富的第三方库,所以可以说Python是无所不能的. 很多人都知道,Python可以操作Excel,PDF·还有PPT,这篇文章就围绕Python提取PPT中的 ...

  9. python删除字符串中重复字符_删除字符串中重复字符python 用CAD怎么画DNA反向

    用CAD怎么画DNA反向平行双螺旋结构绘螺旋线时,用选扭曲,确定顺时针. 画双头螺旋线时,第二根螺旋线底圆起点与第一根螺旋线底圆起点,可用角度分隔如180°.python去除文本中重复的字符串可有可无 ...

最新文章

  1. folders默认配置 shell_分布式存储Ceph RBD-Mirror灾备方案(二)镜像模式配置
  2. 对Python中路径操作指南
  3. zTree笔记,设置无法勾选父节点(禁用父节点)和父节点禁用时回显选中子节点时关联父节点状态
  4. Mac 安装配置 chromedriver
  5. 转换jsonArray异常——由hibernate引起的转换jsonArray异常解决办法
  6. c语言日程报告闹钟,可以闹钟提醒的日程表,日程闹钟提醒怎么弄
  7. UE4蓝图API翻译【节点】---? Is Valid
  8. eaxyexcel获取指定行,获取总行数
  9. 手写原笔迹输入_原笔迹真实展现 E人E本 M1手写功能体验
  10. HTML5期末大作业:动漫A网站设计——动画漫展学习资料电影模板(6页) 网页设计作业 _ 动漫网页设计作业,网页设计作业 _ 动漫网页设计成品,网页设计作业 _ 动漫网页设计成品模板下载
  11. 解决微信emjoy特殊符号插入数据库出错
  12. 算法整理(二)---快速排序的两种实现方式:双边扫描和单边扫描
  13. android弹出自定义layout菜单,Android:PopWindow — 对Android的底部弹窗、顶部弹窗菜单及自定义界面的使用封装...
  14. 斑马打印机常见问题解决方案 条码打印机常见问题解决方案
  15. linux 程序结构,Objective-C 基本的程序结构
  16. Linux系统checkra1n装错插件,CheckRa1n越狱常见问题汇总 CheckRa1n越狱问题解决方法
  17. 常见通信信道仿真模型
  18. 在web页面上快速生成批量二维码的实用方法
  19. 什么是Dos、DDoS?如何防范DDoS?
  20. 2022高教社杯思路汇总A题B题C题D题

热门文章

  1. 「OneModel方法论」企业数据体系应该怎么规划?
  2. vue3+ts+elementPlus 后台管理系统
  3. qt QSqlQuery查询报错:无查询无法获取行
  4. debian9.6搭建pxe服务器+preseed,并在虚拟机上测试(完善中)
  5. CityPickerViewV2.0重磅来袭
  6. 国产PIE-SAR软件
  7. python面试题大全
  8. SpringBoot项目通过HotswapAgent实现热部署(JDK1.8)---亲测有效
  9. golang常用方法积累
  10. ClickHouse源码阅读(0000 0110) —— 使用ReplicatedMergeTree引擎时的副本选择问题