Interesting that spanner doesn't support foreign keys. Is this a fundamental limitation or just a missing feature?
https://cloud.google.com/spanner/docs/schema-and-data-model#...
From a technical perspective, I'd guess that the reason was because it makes local transactions trickier to do. Spanner has a philosophy of avoiding work that isn't required, and knows how to optimize transactions that don't require 2PC-ing data on different servers.
Table interleaving is also important to ensure that correlated data that is colocated in the same server in the cluster.