2015-12-21 9 views
15

Ich bin mir bewusst, dass Schema.RB-Datei ist eine Ruby-Datei und es wird erstellt und geändert, wenn eine Rake-Migration ausgeführt wird, aber was ist mit der Struktur.SQL.Was ist der Unterschied zwischen Rails Struktur.SQL und Schema.Rb

Ich habe in einigen Projekten schema.rb und in anderen structure.sql gesehen und in einigen beiden Dateien, wo konfigurieren sie welche Datei zu erstellen.

Was genau ist der Unterschied zwischen den beiden.

Ist structure.sql generiert spezifisch für einen bestimmten DB.

Antwort

17

Der Hauptunterschied ist, dass schema.rb eine Ruby-Darstellung der Datenbank ist, und es ist in der Regel datenbankunabhängig. structure.sql ist stattdessen eine SQL-Repräsentation der Datenbank und hängt von der ausgewählten Datenbank ab.

Sie verwenden die Struktur nur, wenn Sie bestimmte Datenbankfunktionen haben, die Sie benötigen und die nicht durch schema.rb dargestellt werden können. In der Vergangenheit haben beispielsweise einige Benutzer schema.rb durch structure.sql ersetzt, um PostgreSQL JSONB-Felder oder Fremdschlüsseleinschränkungen auf Datenbankebene zu verwenden.

Beide Funktionen werden jetzt in den Migrationen unterstützt, daher müssen Sie in diesen Fällen nicht mehr auf structure.sql umschalten.

Im Allgemeinen empfehle ich Ihnen, die schema.rb zu verwenden.

Verwandte Themen