Ant*_*ony 1 mysql database-design data-structures
我正在创建一个在线词典,我必须为此目的使用三种不同的词典:日常术语,化学术语,计算机术语.我有树选项:
1)创建三个不同的表,每个字典一个表
2)创建一个包含额外列的表,即:
id term dic_1_definition dic_2_definition dic_3_definition
----------------------------------------------------------------------
1 term1 definition
----------------------------------------------------------------------
2 term2 definition
----------------------------------------------------------------------
3 term3 definition
----------------------------------------------------------------------
4 term4 definition
----------------------------------------------------------------------
5 term5 definition definition
----------------------------------------------------------------------
etc.
Run Code Online (Sandbox Code Playgroud)
3)创建一个带有额外"标签"列的表,并根据它的字典标记我的所有术语,即:
id term definition tag
------------------------------------
1 term1 definition dic_1
2 term2 definition dic_2
3 term3 definition dic_3
4 term4 definition dic_2
5 term1 definition dic_2
etc.
Run Code Online (Sandbox Code Playgroud)
术语可以与一个或多个词典相关,但具有不同的定义,假设日常使用中的术语可能与IT领域中的术语不同.这就是为什么term1(在我的上一个)表中可以分配两个标签 - dic_1(id 1)和dic_2(id 5).
将来我会添加更多的词典,所以可能会有三个以上的词典.我想如果我将使用选项2(带有额外的列),我将来会得到一个表和许多列.我不知道它是否对性能有害.
在我的情况下,哪种选择是最好的方法?哪一个更快?为什么?非常感谢任何建议和其他选择.
谢谢.
2)创建一个带有额外列的表
你绝对不应该使用第二种方法.如果您将来决定要10个词典,该怎么办?你将不得不创建另外10列疯狂..
你应该做的是建立一个单一的针对所有字典表,一个单一的所有术语表和一个单一的所有定义的表,这样的逻辑喜好所有的数据集合在一起.
然后,您可以为每个词典创建唯一的ID,在术语表中引用.然后,您只需要一个简单的查询来获取特定字典的术语.
我认为你应该为你的字典类型找一个查找表
DictionaryType(DTId,DTName)
为您提供另一张表格
条款(TermID,TermName)
然后你的定义
差异(DifinitionId,TermID,定义,DTId)
这应该工作.
| 归档时间: |
|
| 查看次数: |
2269 次 |
| 最近记录: |