Я не защищаю этот код и мне он совсем не нравится, но есть вымышленный идеальный мир и есть реальный. В реальном мире подобное происходит очень часто.
Опыта у меня не очень много, поэтому хотелось бы узнать мнение более опытных людей, что с этим кодом делать?
Ничего не делать. Вы можете попытаться объяснить клиенту суть проблемы, но скорее всего он откажется переделывать проект. Вы уверены, что вы со своим "не очень много опыта" сможете быстро и качественно переписать? Зачем клиенту нужно платить второй раз, если он не увидит никаких изменений со стороны UI?
Оставить как есть и вносить мелкие правки или всё таки предложить переписать?
Сделать свою работу и сообщить клиенту о проблемах, которые в будущем станут еще больше.
Чего именно хотел добиться предыдущий разработчик таким кодом(отсутствием связей, внешних ключей и т.д.)?
Он реализовал задачу используя свой опыт и возможности, и получил за нее деньги. Он не пытался сделать мир лучше.