Designing a database structure

Hi Co0kei, welcome to the community.

This seems an interesting project and it shows you are already considering a lot of things like storage, performance, usability and ease of development by asking directed questions.

Since this appears to be going in direction of a big data project I feel you need to step back from the implementation and take few moments to clearly define your use cases, requirements and assumptions first.

A few questions I would ask myself:

  • Who is going to use the system and how?
    For example, the system will be used by guild members to see their daily experience history (for last 3 years, otherwise yearly summary), guild masters will see guild experience summary and 10 highest scorers. etc
  • What data will system need to produce?
    For example: weekly summary of…
  • What is the most likely operation to be and most data intense?
  • List all operations that are envisaged to be needed (high level API)
    For example: add user experience, delete user, user change guild, add guild to alliance, etc
  • What are my assumptions?
    For example: 100 users will change guild daily, system will serve 10K users, itemised records above 3 years are not required for the user if not in active guild
  • Do your approx db sizing
  • Think of other non-functional requirement
    Including cost of running if data exceeds threshold, support, maintenance cycle
  • Think of potential bottlenecks

The more you capture even the informal way the better and you will find it easier to take decisions and design the system. (Tip: use Freeplane to capture your ideas, use draw.io to sketch your initial designs). Yes, it takes time but if you jump right into coding you will make mistakes that will be very costly to rectify, jeopardise or even forfeit your project.

Best of luck and if you do define your requirements in clear way I would be even interested to discuss decisions and help design.