1

我即将开始开发一个分类的 Web 应用程序。但我在构建数据库设计时面临一些困难:

用户可以在不同类型的预先存在的类别(如车辆、房地产、计算机、教育等)下发布他们的广告。但是每个类别都有其特定的字段/属性以及一些常见的字段/属性。

我的困难就像在填写了一个帖子广告后,比如自行车,我将常见的 i/p 值保存到我的 ads_t 表中(如下所示)。但是我将在哪里存储特定于 Bike 的其他字段值,例如:Bike Manufacture、Bike Model、Bike Year 等?

同样,如果用户想发布 House(rent) 的广告,我可以将常见的 i/p 值保存到我的 ads_t 表中。但是我将在哪里存储特定于房屋出租的其他字段值,例如:总面积(平方米)、房间数量等,以及我将如何映射。

我的表格如下:

category_id
------------
(catId, parentCatId, cat_title, cat_desc)

advertisement_t
----------------
(adId, catId, userId, ad_title, ad_desc, photoId, postDate, statusId, price, ad_address, adValidFrom, adValidTo, adIsDeleted) 

Photo_t
--------
(photoId, primary_photo, sec_photo1, sec_photo_2, sec_photo_3)

user_t
-------
(userId, username, password, email, activationkey, isvalidated, joinedDate, activatedDate, statusId)

我不知道其他分类网站(如 olx、freeadds)过去是如何在其数据库中维护(持久和显示)其发布的广告数据的。

如果有人有任何想法,请帮助。

提前致谢。

4

2 回答 2

0

我做了一些接近这一次的事情。

我可以看到 2 个选项: 你不应该做的事情 - 为所需的商品(房屋、汽车、自行车等)实施大量表格,这不是一个好主意,因为工作永远不会结束,也不会结束可扩展的。

我的建议:

再添加 3 个表:

CustomField(设置类别使用的可能字段列表)

(CFid,标题)

CategoryCField(关联关系,知道用户输入新广告时要显示哪些字段)

(catId, CFid)

StoredCFData(实际存储数据)

(id、adId、CFid、值)

但是,您可以通过这种方式发现 2 个问题。做一个“关系圈”不是很好,但如果仔细做会做的工作。并且必须将服装字段的 DataType 减少为文本/数字以使其简单。您将无法将其应用于单选按钮或组合框。

祝你好运,劳尔

于 2013-03-11T18:01:58.957 回答
0

我通常喜欢将这些数据分为 2 组(1)可搜索数据,这些数据将保存在某些列/映射到列中;(2)垃圾数据(我称之为附加信息)以 json_encoded 格式保存在文本列中。

对于可搜索的列,您可以添加另一个表 category_values 表,其中有 (category_id, category_value, ad_id)

同样,如果您的数据库预计会随着类别类型经常重复而变得巨大,您可以将 category_values 表分成两个,分别为 (value_id, Category_id, category_value) 和 (value_id, ad_id)。这会导致更多的连接,我相信在你的情况下不需要引入。

于 2013-03-11T17:36:20.747 回答