用于搜索属性的数据库表的优化设计

时间:2019-05-14 21:19:02

标签: database algorithm binary-search-tree

您好,我希望可以在这里写下这个问题。我目前正在概述一个数据结构,该数据结构位于有电影的数据库中,每部电影都有很多描述符。

我希望能够在整个数据库中进行搜索,并找到具有属性Y,Z而没有A,B,C的电影X。

我的想法是存储这样的描述符/属性:

Movie ID | Attribute | Has_Attribute
1        | Action    | 0
1        | Adventure | 1
1        | Comedy    | 1
2        | Action    | 1

这是存储记录的所有属性的最佳方法吗?

大概对于每个后续呼叫,我都会搜索Action == 0 AND Comedy == 1 ... n == n_has_attribute的位置,从而开始缩小搜索范围。

1 个答案:

答案 0 :(得分:0)

在设计表中,不需要存储不存在的属性。您只需要记录电影的属性即可。因此,您的设计将是:

Movie ID | Attribute
1        | Adventure 
1        | Comedy   
2        | Action    

此外,如果属性的数量不是太多,则可以将它们定义为表中具有二进制值的列:

Movie Id | Adventure | Comedy | Action 
1        | 1         | 1      | 0
2        | 0         | 0      | 1

因此,要选择更好的数据结构,您需要在属性数量,电影数量方面澄清更多的问题空间。

此外,如果您需要将数据存储在决策树中,则节点的断点将是属性,并且与第二种制表体系结构相比,与第一种设计更像。