我正在设计一个关于宠物的分类广告网站,其中包含 3 个(主要)类别的广告:
A- Sale
B- Breeding
C- Jobs
我面临的问题是所有 3 个广告类别都有一些共同点,但它们也有一些差异。
例如,类别 A、B 和 C 都有以下共同点:
category_id
ad_id
user_id
location
但是,B 类广告不能归类为“正在寻找/出售”,而 B 和 C 类广告可以。此外,每个类别都有自己的子类别。例如,类别 A 将具有采用子类别和销售子类别,类别 C 将具有工作子类别和服务子类别。
他们还将具有一些不常见的属性,例如仅在 C 类中的薪水。
我已经开始将其作为实体属性值模型进行研究,但我有几个问题:
这会影响性能吗?因为用户应该能够根据一些独特的属性进行搜索。那么通过一张大表进行查询不会影响性能吗?
我的属性之一是“Animal”(A 和 B 独有),最初我想要一个 Animal 表和一个 Breed 表(类似于 Location 如何在分类数据库模型的自己的表中)。但我无法想象如何使用实体属性模型来做到这一点。
这是我想出的数据库设计:http: //i.imgur.com/jyV6Cjc.png
[更新]
在阅读类表继承后,它似乎比 EAV 模型更合适,所以我将 EER 更改为:http: //i.imgur.com/JWPjt23.png
Job Ads 和 Sale Ads 可以归类为“寻找/提供”,但属性不会有太多差异,可能只是它们的名称(例如价格与首选价格)。那么你认为有必要在这里添加另一个层次的继承吗,还是会很麻烦?
销售广告可以是出售宠物、收养宠物、申请收养、申请购买宠物。你认为我应该把这些分成两张表吗?收养和销售?属性不会有太大差异,可能只是一个不同的属性。