In a relational database, everything is probably related to something so having more than one BE will be a problem at some level.
If your tables are so large that you need to split the BE, you really need to move to SQL Server, sooner rather than later.
Failing that, you need to code the RI yourself and you'd better get it right or you will have orphaned data.
Although I use cascade delete, when you do not have that option, the safest method is to not allow deletes at all. And this is what I would do in your situation. Add a field to your parent table. I happen to prefer to use dates rather than flags because they provide additional information so call it DeleteDT. When the user asks to delete the record, use Now() to populate DeleteDT. Then, you need to change queries to ignore any record where DeleteDT is not null. You also need an option on your edit form to show deleted items so you can manage them if you need to.
If you have to code cascade delete yourself, you need to do it inside a transaction because you want ALL deletes to happen or NONE. I don't have any code but you should be able to find samples or perhaps someone has something they can code.
The psuedo code is:
Start Transaction
.. using a query that joins the parent record to the child, delete the child records where the parent = the PK that the user selected.
.. Delete the parent record = PK the user selected
End Transaction
If you have more than two levels, you need a query for each level and you need to run them bottom up. You need to include the entire path but delete from the bottom table in the path. So, four levels 1-2-3-4 == delete from 4, three levels 1-2-3 == delete from 3, two levels 1-2 == delete from 2. The final delete is from level 1.