As in other fields, in computer science certain objects of study can be synthesized from different basic elements, in different ways, and with different resulting stabilities. In subfields such as artificial intelligence, computational logic, and programming languages various relational and functional ingredients and techniques have been tried for the synthesis of declarative programs. This text considers the notions of relations, as found in logic programming or in relational databases, and of functions, as found in functional programming or in equational languages. We study a declarative integration which is tight, because it takes place right at the level of these notions, and which is still practical, because it preserves the advantages of the widely used relational and functional languages PROLOG and LISP. The resulting relational and functional language, RELFUN, is used here for exemplifying all integration principles.