我正在开发一个php / mysql驱动的facebook游戏。我被困在桌子设计的元素上。当用户完成任务时,我想触发任意数量的事件。
我在考虑这样的事情:
tbl_events
*event_id - serogate primary ID
*task_id - foreign ID of the task just completed
*event_type - what type of event e.g is it a facebook stream publish or a message to the user or does it unlock a new element of the game?
*event_param - this is where it gets tricky...
事件参数出现问题有两个原因,
1)它将包含不同的外来ID ...依赖于event_type,因此无法连接到x表。意思是我必须调用两个查询。
2)大多数事件需要单个id或文本,但有些事件需要多个参数 - 比如facebook stream publish。
答案 0 :(得分:0)
您可以添加多个可以为空的列。然后,您仍然可以通过使用适用于不同事件类型的列来满足外键要求。
tbl_events
*event_id
*task_id
*event_type
*event_param_for_message_to_user
*event_param_for_unlocking_game_feature
*event_param_1_for_facebook
*event_param_2_for_facebook
答案 1 :(得分:0)
一般来说,您可以使用所有事件类型共有的条件创建一个Events表。然后,您将使用特定事件类型的字段创建event_type表。
鉴于该设置,您的PHP可以有一个Event Factory,它可以解析您的输入字符串并确定要实例化的Event类型。所有各种事件类型都将使用相同的接口,但会执行特定类型所需的操作。