How to store user settings for game in MySql?

So I’m working on a website where users can create their own bullet hell games. Users make patterns by placing enemies (or emitters) on the screen and using form fields to control the properties of those enemies. There are also fields for creating the bullet objects that these enemies shoot.

I want to allow users to save their patterns so that they can edit them later, or allow other users to play the bullet hell they made. But I’m having trouble thinking of a good database schema for this.

I currently have 3 separate tables for patterns, emitters, and bullets. A pattern can have many emitters, so there’s a one to many relationship there. Emitters can fire many bullets, so there’s another one to many relationship there. So when looking up a pattern, you have to look up all of its emitters, and then look up all of the bullets for each emitter. This seems slightly ridiculous and I’m not sure if it’s a good way to set up my database.

I was going to try converting all of a pattern’s emitter objects into a string. And then convert all of the emitter bullets into strings as well and have a unique separator for them. Example below.

const bullets = [
  emitterId: 1,
  minSpeed: -99999,
  maxSpeed: 99999,
  speed: 90,
  accel: 0,
  emitterId = 2,
  minSpeed: 100,
  maxSpeed: 200,
  speed: 150,
  accel: 0.09,

const dbBllts = => Object.entries(bllt)).join("|")

And then I insert this string in the bullets field for tablets and do the same for the emitters. However, I was told that this was a really, really bad idea. My questions are:

  1. Why is this a bad idea.
  2. What would be a better way to store user settings for the game that doesn’t involve this weird one to many to many relationship.