SQL数据库结构

标签 sql database database-design data-modeling

我有一个同义词列表,需要用 SQL 为它创建一个数据库。

我正在考虑使用关系数据库设计,但不知道它是否是最好的。使用此数据库会有相当数量的流量。

我在想 Table1 会是这样

Id

Table2
Id
InterlinkID (Table1 Id)
Word

这是最好的方法吗?可能有 1 - 20 多个链接词。我从这个设置中看到的另一个问题是如果我有 1 个词作为多个词的同义词。

关于如何使用它的例子不是很好,但你明白了:


    Table 1
    Id 1 
    Id 2

    Table 2
    Id 1
    InterlinkID 1
    Word One
    Id 2
    InterlinkID 1
    Word 1
    Id 3
    InterlinkID 1
    Word First
    Id 4
    InterlinkID 2
    Word Two
    Id 5
    InterlinkID 2
    Word 2
    Id 6
    InterlinkID 2
    Word Second

最佳答案

对关系建模的最简单方法是将其作为具有三列的单个表:

  • id - 主键,整数
  • word - 独特的词,应该有一个独特的约束来阻止重复
  • parent_id - 可为空

使用parent_id 来存储您想要关联当前单词的单词的id 号。即:

id  |  word  |  parent_id
---------------------------
1   | abc    |  NULL
2   | def    |  1

...显示abc先被添加,def是它的同义词。

对关系建模的更明显和灵活的方法是使用两个表:

  1. 单词

    • id, 主键
    • 字值
  2. 同义词

    • word_id
    • synonym_id

SYNONYMS 表中的两列都是主键,以确保不会有重复项。但是它不会以相反的顺序停止重复。但它允许您映射无数组合,在单词之间形成“蜘蛛网”关系,而单一表格格式仅支持层次关系。

关于SQL数据库结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2339414/

相关文章:

Java 按字符串查找和比较成员(也许是 JPA 功能?)

database-design - 实体之间的抽象引用

mysql - 如何在mysql中将学生与表单问题联系起来

mysql - 最简单的 IN 语句的可怕 MySQL 索引行为

sql - 使用 t-SQL 选择已删除记录的数量

mysql - 在mysql中创建具有多个IP地址的用户

mysql - 多个 MySQL 数据库连接的优点和缺点

mysql - 不同表的结果求和,不存在则返回null

SQL join 2 tables with conditions on other tables

mysql - SQL Server 是否有等同于 MySql 的 sql_no_cache 修饰符?