Question

I'm building the data model for the website of a student club at my university and I need some feedback on what I have so far.

Every term students become members by paying a membership fee. This membership fee entitles them to attend all the club's activities less social events during that term. To attend these social events they are required to purchase a ticket.

The club's activities involved courses of 8 to 10 weekly classes, workshops, and the aforementioned events.

We would like to be able to model members every term and track registration and attendance to courses ( just registration ), individual classes ( attendance ), workshops ( attendance and registration), and events (attendance and registration).

We want to be able to see what member of the executive was involved in which activity.

We want the executive to be able to upload articles (text), pictures, music, and video and control who has access to these items. I used a group solution because I think granting access at user/piece of content level is too tedious.

Please take a look and give me some feedback. I'm trying to design a model that is easy to maintain and adapt to new requirements and that is robust, and flexible when it comes to modelling club and member activity.

The password hash will be a part of the student entity. It's currently not showing on the digram.

You can find the diagram below.

EDIT1:

Added legend.

At the top, the rectangle around the Student--Membership--Term is called an aggregation. This means that when used in relationship Registration, for example, we can look at this aggregation as an entity with primary key (student_id, term).

EDIT2: The triangle with the ISA label on it denotes specialization of the top entity into child entities. When translating into a schema we can choose to create a relation for each, or just the children.

No correct solution

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top