匹配系统的表设计

时间:2010-07-21 12:41:36

标签: c# database-design relational-database rdbms

我如何为匹配系统设计表格,如下所示:

我们有X产品,可以有Y属性。物业数量因产品而异,两种产品不必具有任何类似的特性。

我的首要目标是购买一种产品并找到最相似的产品。

通常我会做这样的事情:

create table products
(
   id serial not null primary key,
   name varchar(40)
)

create table properties
(
  id serial not null primary key,
  name varchar(40)
)

create table product_properties
(
  product_id int not null,
  property_id int not null
)

我能想到的唯一方法是遍历所有产品,在循环中获取它们的属性并与源产品进行比较。但这似乎不太有效。

1 个答案:

答案 0 :(得分:2)

这样的事情会有什么帮助吗?

SELECT *
    FROM products
    WHERE id <> <given product id>
    ORDER BY (SELECT COUNT(*)
                  FROM product_properties
                  WHERE product_properties.product_id = products.id AND
                        product_properties.property_id IN
                                (SELECT property_id
                                     FROM product_property
                                     WHERE product_id = <given product id>))
    LIMIT 1;

这是为了获得与原始产品具有最相同属性的产品。