I have a database structure issue I am looking for some opinions on.

Let's say there is a scenario where users will use an application to request materials.

There is the need to track who the requester is.

There are three possible "types" of requesters. An individual (Person), a Department, and the Supplier supplying the materials themselves.

In addition the Supplier object needs to be related as the Supplier as well.

So the idea is in the Request table there is a RequestedByID FK. But the related requester has such a different structure for the data for each that it would require a completely denormalized table to related back to if it were made just a single table (people have different properties than departments, and suppliers).

I have some ideas on how I might handle this but thought the SO community would have some great insight.

Thanks for any and all help.

EDIT:

pseudo structure:

Request
-------

RequestID
RequesterID

Department
----------

DepartmentID
DepField1
DepField2

Person
------

PersonID
PersonField1
PersonField2

Supplier
--------

SupplierID
SuppFiel1
SuppField2

Department, Person, and Supplier all have separate tables because they differ in their properties quite a bit. But each of them can serve as the Requester of a Request (RequesterID). What is the best way to accomplish this without one (denormalized table) full of the different possible requesters?

Hope this helps. . .