You see, in your example variables are not related at all. You can have it in global scope, you can create a new store for them, you can place tham in dictionatry, list, set, anything, and it will be essentually the same, you still need to name them somehow and access by that name.
If you have several
related variables, you can group them in some data structure and manage everything by class.
For example, if I have a bunch of characters, which can have different relationship between each other, I would probably represent it as a graph, implemented as adjacency list, and contained in and managed by some class, which makes sure that we won't accidentally break its internals.
Of course, good old variables 'alice_and_bob_relationship', 'alice_and_suzan_relationship', 'bob_and_suzan_relationship' can be used too, but it is hard to represent, say, 15 characters or quickly check if arbitrary character knows everyone.
If you are afraid that you can accidentally access wrong variable, store story-related variables in named store:
https://www.renpy.org/doc/html/python.h ... -the-store
If you afraid that you can set wrong variable (i.e. mystyping a variable name and setting a variable never actually used) and introduce a bunch of bugs, create a function which would check variable existence first, and then would set it. Kinda like screen actions do.