相关对象类型的数据库模式

时间:2013-11-17 13:57:31

标签: sql database database-design data-structures schema

简要背景 - 在非营利网站上工作,他们可以发布3件事:

  1. 状态更新
  2. 需求
  3. 活动
  4. 每种帖子类型都可以包含一个或多个标签,例如无家可归,饥饿意识等。

    我的问题是我应该如何设计架构以最好地处理这个问题。这是我到目前为止所考虑的伪模式:

    Org_Post表

    • id,PK
    • user_id,FK(谁发布了这个?)
    • post_type_id,FK(这是什么类型的帖子?状态,需要或事件)
    • post_object_id,FK(id可能来自3个表之一,post_status,post_need,post_event)

    Org_Post_Tags表

    • id,PK
    • org_post_id,FK(该帖子与此标签相关联)
    • tag_id,FK(标签)

    Post_Status表

    • id,PK
    • 状态

    Post_Need表

    • id,PK
    • need_title
    • need_date
    • need_quantity
    • need_details

    Post_Event表

    • id,PK
    • event_start_date
    • event_start_time
    • event_end_date
    • EVENT_END_TIME
    • event_location
    • event_details
    • EVENT_TITLE

    我过度复杂吗?我错过了一些会让这些数据成为噩梦的东西吗?

    一如既往,提前谢谢!

1 个答案:

答案 0 :(得分:0)

我看到了一个问题 - 您无法在[{1}}上放置外键,因为此字段可能会引用3个表中的任何一个。

除此之外,您的设计看起来是相当标准的方法。

对于上述问题,我建议如下:

Org_Post表

  • id,PK
  • user_id,FK

Org_Post_Tags表

  • ...

Post_Status表

  • id,PK
  • ...
  • ord_post_id,FK

Post_Need表

  • id,PK
  • ...
  • ord_post_id,FK

Post_Event表

  • id,PK
  • ...
  • ord_post_id,FK