1

第5正規形の非キー列の複合キーの関数依存関係を表現することは可能ですか?第5正規形の3者間データベースの関数依存関係を表す

私は3つのテーブルを持って、私が知っているように

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

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

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

は、第5正規形は、独自の小さな事業体で表現するには、テーブルを必要とします。だから私はevents_usersテーブルのparticipation_typeは5番目の通常のフォームと呼ばれることはできませんね?

誰かが私に良い解決策を提案できますか?

問題は、各テーブルが独立して存在する必要があるCodeIgniterのDataMapperライブラリ、つまり5番目の正規形を使用していたことです。

+0

線の間にあなたの説明と「5NF」の使用を読ん5NFが何であるかと一致していませんよ。あなたが満足しようとしている条件については、ドキュメントを参照してください。 – philipxy

答えて

1

私が知る限り、あなたが与えた例はすでにFifth Normal Formです。

テーブルの列が少ないため、他の方法では表示できません。

私が知る限り、 'participation_type'は意味的に関連する他の列がないため、NF規則を破ることはありません。応答で

編集はコメントする: をおそらくあなたは、これが5NFとは関係ありませんDataMapperの/ CodeIgniterのと他のいくつかの問題であることを示唆しているよう。

フィールドが生成されるuser_eventsテーブルに追加できない場合は、それを先取りして別のエンティティを作成し、「出席」(またはモデル内で意味をなさないもの)と呼ぶ必要があります。

 
Attendance 
---------- 
id 
participation_type (ENUM) 

は、その後、その出席は、ユーザーとイベントの両方に関連しているDataMapperの言う、それが生成されます(または生成するように依頼する、または任意の)2つの連結テーブル:

 
user_attendance 
--------------- 
id 
user_id 
attendance_id 

event_attendance 
---------------- 
id 
event_id 
attendance_id 
出席は、これらのフィールドを持っています

これらの行に沿って何かを行うと、フィールドを追加できるAttendanceエンティティが作成されます。

免責事項:私は、DataMapperのについて何も知らない私はちょうどここ

+0

それは?私が推測する問題は、Datamapper Library自体の限界かもしれません。 問題は、Datamapperがデータベース設計を強制的に第5正規形にすることです。 2つのテーブルの間の関係を表すために、ユーザーのテーブルとイベントテーブルがあり、EventsIusersテーブルにCodeIgniterとafaikによって自動的に設定されるevents_usersテーブルが存在する必要があります。 – bibstha

+0

おそらく5NFは問題ではありません – codeulike

関連する問題