MySQL数据库结构: more columns or more rows?

标签 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.

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.

一个术语可以与一个或多个词典相关,但有不同的定义,假设一个日常使用的术语可能与 IT 领域中的同一个术语不同。这就是为什么可以为 term1(在我的最后一个)表分配两个标签 - dic_1(id 1)和 dic_2(id 5)。

以后我会增加更多的词典,所以dic可能会超过三个。我想如果我使用选项 2(带有额外的列),我将来会得到一个表和许多列。我不知道这是否对性能不利。

在我的案例中,哪个选项是最好的方法?哪个更快?为什么?非常感谢任何建议和其他选项。

谢谢。

最佳答案

2) Create one table with extra column

您绝对不应该使用第二种方法。如果将来您决定要 10 部词典怎么办?您将不得不创建额外的 10 列,这太疯狂了..

您应该做的是为所有词典创建一个单个表,为所有术语创建一个单个表和一个单个表对于您的所有定义,您的所有数据都以一种合乎逻辑的方式组合在一起。

然后您可以为每个词典创建一个唯一的 ID,在术语表中引用该 ID。然后,您只需要一个简单的查询即可获取特定词典的术语。

关于MySQL数据库结构: more columns or more rows?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1819692/

相关文章:

mysql - 为什么没有别名,下面的查询不能正常执行?

php - 为 php/mysql CMS 预处理和后处理多语言用户输入的最佳方法

mongodb - 如何查询一个动态键——mongodb schema设计

python - 如何编写自引用 Django 模型?

scala - Scala 背后的可索引数据结构便于理解

python - 实现一个带约束的 python 列表

java - 我将如何管理 HashMap 中的队列?

MYSQL选择用户名和日期对多次出现的所有记录

mysql - 数据库设计最佳实践 – 调查问答

php - 在 PHP 中发布数据值时出错