I want to add tags to a discussion. Some considerations
  • tag - discussion is M:N
  • a tag is identified by it's textual name AND the project in which it is used. So compound PK (name, project_id)
  • discussions belongs to one given project. so 1:N
The problem is that tag_discussion has a project_id as part of the foreign key to table tag. But a discussion belongs already to a project, so this feels like a redundancy. Does this break a normal form?



I can avoid this situation by using only part of the PK of tag, namely name. So the foreign key to tag is partial then. At least In oracle this is problematic, if understand this source correctly.