1 class KeyConstraints < ActiveRecord::Migration
4 add_primary_key :current_node_tags, [:id, :k]
5 add_primary_key :current_way_tags, [:id, :k]
6 add_primary_key :current_relation_tags, [:id, :k]
8 add_primary_key :node_tags, [:id, :version, :k]
9 add_primary_key :way_tags, [:id, :version, :k]
10 add_primary_key :relation_tags, [:id, :version, :k]
12 add_primary_key :nodes, [:id, :version]
14 # Foreign keys (between ways, way_tags, way_nodes, etc.)
15 add_foreign_key :current_node_tags, [:id], :current_nodes
16 add_foreign_key :node_tags, [:id, :version], :nodes
18 add_foreign_key :current_way_tags, [:id], :current_ways
19 add_foreign_key :current_way_nodes, [:id], :current_ways
20 add_foreign_key :way_tags, [:id, :version], :ways
21 add_foreign_key :way_nodes, [:id, :version], :ways
23 add_foreign_key :current_relation_tags, [:id], :current_relations
24 add_foreign_key :current_relation_members, [:id], :current_relations
25 add_foreign_key :relation_tags, [:id, :version], :relations
26 add_foreign_key :relation_members, [:id, :version], :relations
28 # Foreign keys (between different types of primitives)
29 add_foreign_key :current_way_nodes, [:node_id], :current_nodes, [:id]
31 # FIXME: We don't have foreign keys for relation members since the id
32 # might point to a different table depending on the `type' column.
33 # We'd probably need different current_relation_member_nodes,
34 # current_relation_member_ways and current_relation_member_relations
35 # tables for this to work cleanly.
39 raise IrreversibleMigration.new