1

我正在建立一个分类广告网站,类似于 craigslist。

该网站分为几个部分;即论坛、待售、提供的服务等。

每个部分下有几个[类别],即论坛[宠物]、论坛[书籍]、出售[易货]、服务[易货]等。(请注意,某些类别仅由其部分唯一标识,例如在“出售”和“服务”两个部分的易货交易和易货交易案例。)

用户将从每个部分中的帖子链接发布到类别。如果适用,用户可以上传照片并为其产品选择某些便利设施。论坛帖子不需要舒适属性,而车辆广告可能。设施包括:汽车广告的自动传输,或房屋租赁的家具。

我试图找出数据库模式的最佳逻辑设置。

目前我有这种基本输入/查询的逻辑结构:

SECTIONS TABLE- section_id, section
CATEGORIES TABLE- cat-id, category, section_id(foreign key)
AMENITIES TABLE- amen_id, amenity
PHOTOS TABLE- photos-id, file

POST TABLE- post_id, category, timestamp, description

SECTION_POST TABLE- section_id, post_id
POST_AMENITY TABLE- post_id, amenity_id
POST_PHOTO TABLE- post_id, photo_id

我将 [SECTION_POST] 设为我的主要多对多,因为 [POST] 中的类别必须与该部分相关。我在类别表中将 CATEGORY 与 SECTION 相关联,在我看来,这就像一个添加了类别属性的 M 到 M。这个可以吗?

另外,关于我应该如何考虑这个模式,你有什么其他建议吗?我认为我遇到的问题主要与无知有关,而不是缺乏组织能力。也许你们中的一个人可以教育我或向我推荐一个可以解决我的一般问题的体面链接。

4

1 回答 1

0

你的设计相当标准。以下是一些评论,以及一些需要考虑的事项:

  • 对于具有隐含依赖关系的键(例如 SECTION_POST),许多 ORM 库在
    依赖关系和由此产生的连接键方面存在问题。还有密钥分配的问题。由于这两个原因,许多
    人会改为为该表提供自己的独立键(
    可以方便地设为 AUTO_INCREMENT)并将原始 PK 移动到外键。

  • 就 SECTION/CATEGORY 而言,只有您可以说概念/实体 SECTION 的重要性,但显而易见的问题是,SECTION 在任何方面与 CATEGORY 有何不同。您可以拥有相同的结构,通过仅使用带有自引用“PARENT_CATEGORY_ID”列的 CATEGORY 来获得更大的灵活性。这将允许您定义类别的树结构,同时,使用 PARENT_CATEGORY_ID 上的 IS NULL 获取顶级类别很简单。

  • 我不清楚您打算如何将照片与 POST 相关联,但从设计的角度来看,支持 MM 关系会很好,这样您就可以为单个帖子提供多张照片。

Otherwise, you seem to have a good handle on relational design basics. I do a lot of database design, and prefer to use a commercial erd design tool, but there are some free options like Mysql workbench (assuming you're designing for mysql) that can help you visualize your design, and insure that all the SQL DDL is correct. It's also nice to have documentation for the development phase of your project.

于 2012-12-23T21:29:05.983 回答