我有一个行表,这里是一个示例(作为哈希):
{:id => 8, :n => 774, :inherits_from => [], :properties => ["a", "b", "c"]}
{:id => 9, :n => 915, :inherits_from => [8], :properties => ["d"]}
{:id => 10, :n => 754, :inherits_from => [1, 2], :properties => []}
{:id => 11, :n => 774, :inherits_from => [10], :properties => ["a", "b"]}
我们的想法是可以从其他行继承属性:
table[:id => 9] #=> {:id => 9, :n => 915, :inherits_from => [8], :properties => ["a", "b", "c", "d"]}
行可以有一个或多个继承,或者可以没有。可以有许多级别的继承,即5继承自2和3,7继承自5(这意味着7继承自5,但也来自2和3,因为5继承自它们)等。 我知道我可以用蛮力(即,对于每个查询的行检查它是否从某个地方继承)。另外,我可以使用Class.new为每一行生成一个类并设置继承(我使用ruby),但是会有数千行。
有关如何以最有效的方式做到这一点的任何建议?