0

我正在设计一个关于宠物的分类广告网站,其中包含 3 个(主要)类别的广告:

A- Sale
B- Breeding
C- Jobs

我面临的问题是所有 3 个广告类别都有一些共同点,但它们也有一些差异。

例如,类别 A、B 和 C 都有以下共同点:

category_id
ad_id
user_id
location

但是,B 类广告不能归类为“正在寻找/出售”,而 B 和 C 类广告可以。此外,每个类别都有自己的子类别。例如,类别 A 将具有采用子类别和销售子类别,类别 C 将具有工作子类别和服务子类别。

他们还将具有一些不常见的属性,例如仅在 C 类中的薪水。

我已经开始将其作为实体属性值模型进行研究,但我有几个问题:

  1. 这会影响性能吗?因为用户应该能够根据一些独特的属性进行搜索。那么通过一张大表进行查询不会影响性能吗?

  2. 我的属性之一是“Animal”(A 和 B 独有),最初我想要一个 Animal 表和一个 Breed 表(类似于 Location 如何在分类数据库模型的自己的表中)。但我无法想象如何使用实体属性模型来做到这一点。

这是我想出的数据库设计:http: //i.imgur.com/jyV6Cjc.png

[更新]

在阅读类表继承后,它似乎比 EAV 模型更合适,所以我将 EER 更改为:http: //i.imgur.com/JWPjt23.png

  1. Job Ads 和 Sale Ads 可以归类为“寻找/提供”,但属性不会有太多差异,可能只是它们的名称(例如价格与首选价格)。那么你认为有必要在这里添加另一个层次的继承吗,还是会很麻烦?

  2. 销售广告可以是出售宠物、收养宠物、申请收养、申请购买宠物。你认为我应该把这些分成两张表吗?收养和销售?属性不会有太大差异,可能只是一个不同的属性。

4

1 回答 1

1

您的问题听起来像是类/子类的情况。在对象建模中,设计使用继承的基本机制,以及扩展和修改超类的子类的设计模式。

关系建模不同于对象建模,表设计不同于对象设计。有几种技术可以帮助弥合差距。这个区域有两个相关的标签,。我将冒昧地将这两个标签添加到您的问题中。如果您不喜欢它们,请退出它们。

于 2014-11-17T12:29:06.733 回答