在我的项目中,我有以下表格:
在应用程序中,用户可以拥有个人事件,或者组可以拥有将被该组中的所有用户共享的事件。
用户可以创建事件,然后事件user_id是此用户ID。
现在我想在一个组内创建一个事件 - 所以我需要事件和组之间的关系。
我应该在事件表中创建属性group_id,如果事件只属于用户而不属于某个组,请将其留空? 或者我应该考虑创建一个像groupEvent这样的新表,它具有属性group_id。 或者我应该创建一个包含groupID和eventID作为属性的数据透视表group_event。
感谢您的帮助!!
答案 0 :(得分:0)
我能想到的一种方法是让你摆脱Event表中的user_id外键,而是拥有一个映射用户和事件的User_Event表以及一个映射组和事件的Group_Event表。不确定这是否是您的用例的最佳设计,但这将避免在Event表中需要两个外键(其中一个对于每一行都是NULL)。
答案 1 :(得分:0)
创建2个单独的表Group_Event(id,group-id,event-id)和User_Event(id,user-id,event-id)。 这种方法的优点是
但是你应该确保在向Group_Event添加事件时 您还应该将相同的事件添加到User_Event WHERE" User_Event.user-id" =" group_user.user_id" AND" group_user.group_id" =" Group_Event.group-id"。