and from that I attempted to create, in words, a set of requirements of what everything should do:
"The goal of this project is to provide clans with a platform to manage and maintain their users. Each user has a specific rank within a clan, and a user can only be part of one clan. Clan members have the ability to host and attend events, add attendees and upload a screenshot showing who was at the event. Each event is put on a clan calender when approved and a timer is used to indicate when the next event is happening (which is derived from the EventDate and EventTime). If enabled, users who subscribe to the event will get a notification sometime before the event starts. Certain staff members in a clan are able to create announcements for said clan, and users can also subscribe to this news feed (so they'll get a notification).
Owners can customize their clan ranks to change the threshold needed to proceed to the next rank. Users go up in ranks by gaining badges in the clan. A badge has a name, a description, a requirement, a weight and can be stackable. Owners can also change the weight of a badge."
That's what I came up with in words, and then I attempted to make an ERD out of it, I managed to get this so far: http://i.imgur.com/9BJQYz2.png
I excluded the attributes to make the image smaller, but the attributes I have so far for them are:
- UserAlbum (points to the root of the user's pictures directory on the server) -- actually, maybe this isn't needed considering this will be derived from login... /login/album
- UserBadges (points to all the Badge objects a given user has)
- Owner (references a User)
- Specilisation (PvP, PvE, ...)
- EventHost (references User)
- EventAttendees (references User objects)
- EventStartDateTime (references a Timer object)
Not quite sure how to make these two work together, and if it's even a good idea to.
- Author (references User)
I have no idea how to work Ranking in there at all.
I'd like someone to review what I have so far, give me pointers and what to improve on to have a really good normalized model. I don't know if the text I wrote makes it clear enough, if something's confusing or whatnot I'll try to explain what I'm trying to do better.
Thanks in advance, trying to get better at this so all tips and pointers are more than welcome!