我编写了一个网站,允许用户通过对不同类型,他们正在销售项目的详细领域发布分类广告。但是,我有一个最好的数据库模式的问题。

该网站设有许多类别(例如,汽车,计算机,照相机)和广告的每个类别有自己的不同字段。例如,汽车具有如门的数目,制造商,型号和马力等属性而计算机具有属性,如CPU,RAM,主板型号等

现在因为都是上市,我想多态的方式,开创了父房源表和不同的子表中的每个不同的类别(计算机,汽车,照相机)的。每个子表将有一个listing_id,将链接回房源表。因此,当一个上市是牵强,它会从链接的行中的相关子表中加入的房源读取行。

LISTINGS
-listing_id
-user_id
-email_address
-date_created
-description

CARS
-car_id
-listing_id
-make
-model
-num_doors
-horsepower

COMPUTERS
-computer_id
-listing_id
-cpu
-ram
-motherboard_model

现在,这是一个架构良好的设计模式还是有更好的方法来做到这一点?

我认为单继承,但很快驳斥了思想,因为该表将得到太大太快,但随后另一种困境浮现在脑海 - 如果用户确实对所有房源进行全局搜索,那意味着我将不得不分别查询每个子表。如果我有超过100种不同类别的发生,是不是很低效?

我还想到的另一种方法,其中有一个主表(间表),它定义在每个类别的字段和一个字段表,其存储每个字段值列出,但将针对数据库标准化即去?

如何想的客齐集网站做呢?

有帮助吗?

解决方案

您数据库设计是好的。没有理由去改变你有什么。我见过的搜索做了几个方面。一个是让你搜索存储过程中加入所有你需要跨越和索引中的列进行搜索要搜索的表。我见过的第二种方法是做这工作得很好是有一个只能用于搜索的获取需要被搜索的任何字段的拷贝的表。然后,你会把这些领域的触发器和更新搜索表。

它们都有缺点,但我优选所述第一到所述第二

修改

您需要在下表中。

分类 - ID - 描述

CategoriesListingsXref - 类别编号 - ListingId

与此交叉参考模型,你可以搜索过程中加入给定类别的所有目录。再加入少许动态SQL(因为它更容易理解),并建立您的查询包含的字段(一个或多个)您想对搜索和查询电话执行。

就是这样。

编辑2 这似乎是一个大一点的讨论,我们可以在这些评论框鱼翅。但是,任何事情我们会讨论通过阅读下面的职位可以理解。          http://www.sommarskog.se/dyn-search-2008.html

这是非常完整的,你用节目亲的利弊做超过1路。 好运。

其他提示

我想您所选择的设计将是对你刚才所描述的情况良好。虽然我不知道,如果子类表应该有自己的ID。由于CAR是一个清单,是非常有意义的值是从相同的“结构域”。

在典型的分类广告的网站,针对广告的数据被写入一次,然后基本上只读的。你可以利用这一点,将数据存储在第二组更在你想要的用户搜索的方式搜索优化表。此外,搜索问题只真的存在一个“普通”的搜索。一旦用户选择一个特定类型的广告,则可以以更高级的搜索(RAM> 4GB,CPU =过于强大)切换到子类表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top