2011-06-01 110 views
0

林在我的头上挠我的头。这是场景。即时通讯使用原则和YAML架构文件:两种数据库表格有两种不同的方式......?

我有一个表用户和表事件

用户看起来是这样的:

User: 
    columns: 
     id: 
      type: integer(7) 
     email:   
      type: string(100) 
     display_name: 
      type: string(255) 
     fb_id: 
      type: string(100) 
    relations: 
     Event: 
      type: many 
      refClass: UserEvent 

事件是这样的:

Event: 
    columns: 
     id: 
      type: integer(7) 
     initiator_id:   
      type: integer(7) 
     loc_latitude: 
      type: decimal(11) 
     loc_longitude: 
      type: decimal(11) 
     4sq_id: 
      type: integer(11) 
    relations: 
     User: 
      type: one 
      local: initiator_id 
      foreign: id 
     User: 
      type: many 
      refClass: UserEvent 

由于你可以看到问题是这样的:用户(或'发起者')可以启动许多事件,并且事件可以属于一个用户('发起者')。但是,一个事件也可以有许多加入它的用户,并且用户可以加入许多事件。

因此,事件和用户最终以两种不同的方式相关。这个怎么用?是否有可能这样做,或者我错过了什么?

+0

你应该写这个答案@Tom – Beno 2011-06-01 23:03:54

回答

1

我认为你只需要在这两个表之间建立一个多对多的关系。 UserEvent会告诉你什么用户有什么事件(反之亦然)...并通过UserEvent加入并添加WHERE user.id = event.initiator_id将允许你访问用户启动的事件,假设他们也属于这些事件。

+0

谢谢你,这似乎工作得很好! – djt 2011-06-02 17:42:02

0

你可以添加一个event_attendees表的事件ID和用户ID作为两列?或者这不是问题