This work aims to develop a declarative paradigm of programming, based on flexible constructs that can deal efficiently with large volumes of data. Commercial query languages and logic programs both extend relational algebra, which is a simple fragment of first-order logic. These languages are declarative, in that their semantics can be specified non-operationally. Programs can thus be viewed as high-level specifications and are easier to develop, understand and maintain, and there is much promise for parallel execution. Current implementation techniques that support logic programming cannot handle large volumes of data, and techniques for relational query languages cannot implement recursion, to name two limitations. This work explores an approach based on program transformation followed by fixpoint evaluation that combines the focussing properties of logic program oriented techniques with the efficient set-oriented processing of relational techniques. In addition to the challenges of efficient implementation, many aspects of the declarative programming paradigm, such as the right combination of features, the role of data abstraction and object identity, the semantics of negation and updates, and facilities for program development and debugging are also being studied, and a prototype language called Coral is being developed.