2015-12-21 25 views
15

Mam świadomość, że plik schema.rb jest plikiem typu ruby, który jest tworzony i modyfikowany po uruchomieniu migracji rake, ale co z struct.sql.Jaka jest różnica między szynami structure.sql i schema.rb

Widziałem w niektórych projektach schema.rb oraz w innych structure.sql iw niektórych obu plikach, gdzie one skonfigurować, który plik do utworzenia.

Jaka jest dokładnie różnica między tymi dwoma elementami.

Czy wygenerowany obiekt structure.sql jest specyficzny dla konkretnej bazy danych.

Odpowiedz

17

Główna różnica polega na tym, że schema.rb jest reprezentacją bazy danych w postaci Ruby i zasadniczo jest niezależna od bazy danych. structure.sql zamiast tego jest reprezentacją SQL bazy danych i zależy od wybranej bazy danych.

Korzystasz ze struktury tylko, jeśli posiadasz określone funkcje bazy danych, których potrzebujesz i które nie mogą być reprezentowane przez schema.rb. Na przykład w przeszłości niektóre osoby zastępowały schema.rb przez structure.sql w celu użycia pól JSONB PostgreSQL lub ograniczeń klucza obcego na poziomie bazy danych.

Obie funkcje są teraz obsługiwane w ramach migracji, dlatego nie trzeba już przełączać na structure.sql (w tych przypadkach).

Ogólnie proponuję użyć schema.rb.