The main issue is when the relevant tables are moved into a separate
service a la quantum or cinder. We can't keep referential integrity
across multiple databases, so the foreign keys in this case need to be
removed. It leads to an odd situation when there is still an internal
implementation in addition to the external implementation because the
internal implementation no longer has foreign keys.
As an example, we used to have foreign key relationships between
instances and networks. We can no longer have these because we support
networks declared externally. The internal network management now has no
referential integrity, but this is the price we pay for separation of
concerns. We are going through a similar set of relationship-breaking
with the volume code.