是否可以用第五范式表示非键列的复合键函数依赖?
我有三张桌子,
users
----------
id
name
events
----------
id
name
events_users
---------------------------
id
user_id
event_id
participation_type (ENUM)
据我所知,第5种普通形式需要表格在自己的小实体中表示。所以我想在events_users表中的participant_type不能被称为第五范式?
有人能建议我更好的解决方案吗?
问题是,我一直在使用CodeIgniter的DataMapper库,其中每个表都需要独立存在,即第5范式。
答案 0 :(得分:1)
据我所知,你提供的例子已经在Fifth Normal Form。
表格中的列数很少,我看不到任何其他方式来安排它们!
据我所知,'participation_type'不会破坏任何NF规则,因为没有其他列与语义相关。
编辑以回复评论: 也许正如您所说,这是Datamapper / Codeigniter与5NF无关的其他问题。
如果您无法将字段添加到它生成的user_events表中,那么您可能需要先抢占它并创建另一个实体,让我们将其称为“出勤”(或模型中的任何有意义的内容)。出席会有这些领域:
Attendance ---------- id participation_type (ENUM)
然后告诉Datamapper,Attendance与用户和事件都有关系,它会生成(或要求你生成或者其他)两个链接表:
user_attendance --------------- id user_id attendance_id event_attendance ---------------- id event_id attendance_id
如果您沿着这些行执行某些操作,那么您将拥有一个可以添加字段的Attendance实体。
免责声明:我对Datamapper一无所知,我只是在这里阅读