Ten post został wykorzystany jako punkt odniesienia przez mojego współpracownika, ale dwie odpowiedzi nie są wystarczająco dokładne lub wyczerpujące.
development_structure.sql to zrzut na niskim poziomie schematu, który jest niezbędny, gdy zaczynasz korzystać z zastrzeżonych funkcji bazy danych - albo chcesz, albo nie, wykorzystasz je w pewnym momencie.
Odnośnie do przechowywania, czy nie, trwa debata. Oto informacyjny post: http://www.saturnflyer.com/blog/jim/2010/09/14/always-check-in-schema-rb/. I moje podejście do tego wynika.
Celem modułu development_structure.sql jest zsynchronizowanie, dla dowolnego danego zatwierdzenia, struktury bazy danych z kodem, bez wcześniejszej znajomości struktury schematu, czyli bez konieczności polegania na istniejącym stanie schemat, aby uzyskać nowy.
W skrócie, udostępniając strukturę schematu, za każdym razem, gdy zmieniasz gałąź/zatwierdzenie, ładujesz ją bezpośrednio i zapominasz. Dotyczy to głównie dynamicznych i "zatłoczonych" projektów, w których różne gałęzie różnią się strukturą schematu.
Bez zapisania struktury schematu należy zawsze używać istniejącego schematu odniesienia w bazie danych i migrować go do tyłu lub do przodu za każdym razem, gdy zmieni się gałąź/zatwierdzenie; kilka przypadków rzeczywistych może sprawić, że proces ten będzie nieefektywny (np. gdy inna gałąź nie będzie miała niektórych migracji, lub niektóre migracje nie zostaną wycofane).
Kolejnym problemem są zautomatyzowane kompilacje, które cierpią z powodu tych samych problemów, a co gorsza, nie mogą stosować ręcznych zmian.
Jedynym minusem jest to, że wymaga pewnego nawyku, którym jest przechowywanie go za każdym razem, gdy przeprowadzasz migrację. Łatwo powiedzieć, ale łatwo zapomnieć.
Nie mówię, że nie możesz żyć bez development_structure.sql - oczywiście możesz. Ale jeśli je masz, podczas zmiany gałęzi/zatwierdzenia po prostu ładuj i zapominaj; jeśli tego nie zrobisz, możesz przejść przez szereg ręcznych czynności.
jest to to samo co struktura.sql w szynach 3? Jeśli tak, to pytanie powinno zostać zredagowane: –
@boulder_ruby tak –