您好,我希望可以在这里写下这个问题。我目前正在概述一个数据结构,该数据结构位于有电影的数据库中,每部电影都有很多描述符。
我希望能够在整个数据库中进行搜索,并找到具有属性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的位置,从而开始缩小搜索范围。
答案 0 :(得分:0)
在设计表中,不需要存储不存在的属性。您只需要记录电影的属性即可。因此,您的设计将是:
Movie ID | Attribute
1 | Adventure
1 | Comedy
2 | Action
此外,如果属性的数量不是太多,则可以将它们定义为表中具有二进制值的列:
Movie Id | Adventure | Comedy | Action
1 | 1 | 1 | 0
2 | 0 | 0 | 1
因此,要选择更好的数据结构,您需要在属性数量,电影数量方面澄清更多的问题空间。
此外,如果您需要将数据存储在决策树中,则节点的断点将是属性,并且与第二种制表体系结构相比,与第一种设计更像。