数据库设计澄清,用于开发分类网站

时间:2013-03-11 17:06:42

标签: mysql database web-applications database-design

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

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

我的困难就像填写广告后一样,对于Bike来说,我将常用的i / p值保存到我的advertisement_t表中(如下所示)。 但是我将在哪里存储特定于自行车的其他字段值:自行车制造,自行车模型,自行车年等?

同样,如果用户想要发布House(租金)的广告,我可以将常用的i / p值保存到我的advertisement_t表中。 但是我在哪里可以存储特定于House For Rent的其他字段值:总面积(sq),No of Rooms等等,以及我将如何映射。

我的表格如下:

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)如何在其数据库中维护(保持和显示)他们发布的广告数据。

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

提前致谢。

2 个答案:

答案 0 :(得分:0)

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

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

同样,如果您的数据库预计会因类型类型经常重复而变大,您可以将category_values表分解为两个 (value_id,Category_id,category_value)和(value_id,ad_id)。这会导致更多的连接,我不相信你的情况。

答案 1 :(得分:0)

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

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

我的建议:

再添加3个表:

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

(CFid,标题)

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

(catId,CFid)

StoredCFData(实际存储数据)

(id,adId,CFid,value)

你可以通过这种方式找到2个问题。建立一个不太好的“关系圈”,但如果认真完成,就可以完成工作。并且必须将costum字段的DataType减少为文本/数字以使其变得简单。将它应用于单选按钮或组合框会有麻烦。

祝你好运, 劳尔