You are right - up to a point.
Generally (on compilers I'm familiar with) literal strings are stored in a separate area of the executable/memory, and are then referred to by their address.
So, in pseudo-assembly-level-ish-code-stuff :
.data
mystring: db "Hello world"
.code
start: push esp, mystring
call print_routine
pop esp
... ` rest of proggy
See, the code does not contain the string - that is stored in the data section.
I would assume though, that DB (being a virtual machine) would hold the strings in a table instead, and that table is of a set size, and that you filled it ...
Instead of storing all of your strings inside the program, try putting them in a text file and reading that into an array at startup. I'm assuming from what I've read that a lot of the strings you have are for NPC/PC-type conversations, so this shouldn't be hard - just time consuming.
On the subject of relations, what about the toilet duck? Quack!