以第5范式表示三路数据库功能依赖

时间:2009-05-08 07:11:40

标签: database-design relational-database database-normalization functional-dependencies

是否可以用第五范式表示非键列的复合键函数依赖?

我有三张桌子,

users
----------
id
name

events
----------
id
name

events_users
---------------------------
id
user_id
event_id
participation_type (ENUM)

据我所知,第5种普通形式需要表格在自己的小实体中表示。所以我想在events_users表中的participant_type不能被称为第五范式?

有人能建议我更好的解决方案吗?

问题是,我一直在使用CodeIgniter的DataMapper库,其中每个表都需要独立存在,即第5范式。

1 个答案:

答案 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一无所知,我只是在这里阅读