I have for an initial implementation of a Database with a table for Projects. Each project can have a number of Chapters, Characters, Events, etc.
I have an API that a client can consume and CRUD each Projects Chapters, Characters etc.
I want to add a functionality that enables a user to create a customized item for example an item, lets say "Place", and give it attributes, like "Post Code", "Climate", "Crime rate", "Special Characteristics", etc. Until now my tables are hard coded by me. What bothers me even more, is how could I enable that user to enable connections between Tables. For example I would like the user to be able to connect a "Place" and an "Event".
If it was two tables generated by me I could establish a junction table for a Many-to-Many relationship. Could the same work for a customized, randomized table ?
How should I go about implementing this functionality? I feel that it's a bad idea letting a user creating tables in the database as this cannot be easily controlled.
This is not code related, more like general approach. It is my first time attempting to generate an API, Database, Front End using different technologies(Smyfony for REST API. MySQL and Angular framework). Also any book recommendations regarding any helpful topic would be highly appreciated.