数据库架构

tus*_*ode 2 database-design

我处于设计数据库的早期阶段,我几乎没有(没有)数据库设计/规划经验。该数据库是作业跟踪引擎的一部分。

创建作业时,会为它们分配一个作业编号、描述、客户以及从列表中选择的多个关键字。我的问题与选择将所选关键字链接到作业的最有效(运行时速度)方式有关。

我看到了很多方法来做到这一点,有些不那么传统,而且可能比其他方法更危险......

选项 A - 将可以分配给作业的关键字的最大数量限制为值“N”(可能为 5),并具有下表列。

  [id] [job number] [description] [client] [keyword 1] .. [keyword N]
    1     123           zyx          kk        word           test
    2     183           tyx          ff        test           -
    3     214           xyx          tt        bleh           -
Run Code Online (Sandbox Code Playgroud)

选项 B - 有一个关键字表,每个关键字都有一列。整个数据库中的关键字是手动管理的,但可以有任意数量的关键字,比如说 X(可能超过 200 个)。创建作业时,表中会添加一个新行,并在已选择关键字的每一列中输入作业编号或 id(来自另一个表的链接)。例如

[word]     [test]       [bleh]   ....... [keyword X-1]     [keyword X]


 1            -            1                      1             -
 -            2            -                      -             -
 -            -            3                      3             3
Run Code Online (Sandbox Code Playgroud)

选项 C - 类似于“选项 B”,除了关键字有自己的表格。但这只是意味着我的数据库中有 X 个表...

在这个阶段,选项 A 是领跑者,但我并不特别喜欢对可以分配给工作的关键字数量的硬限制。任何人都可以提出替代设计,这样我就没有可笑的行/表数量,因此我不必限制分配给工作的关键字数量。

谢谢

pap*_*zzo 5

A 不好

关键字表

ID  PK 
Keyword 
Run Code Online (Sandbox Code Playgroud)

然后有一个连接表

jobID       PK FK  
keywordID   PK FK
Run Code Online (Sandbox Code Playgroud)

用 FK 到两个表