Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zapis numeru wersji w jednej kolumnie
Forum PHP.pl > Forum > Bazy danych
Gander
Zastanawiałem się nad tym od dawna, ale temat wypłynął teraz, przy okazji rzeźbienia w SS. Głowę moją zajmuje zagadka jak zapisać numer wersji w jednej kolumnie bazy danych, ale tak, aby można było dane w niej sortować poprawnie i zgodnie z funkcją php: version_compare? Przeczytawszy Semantic Versioning zdecydowałem się na ograniczenie wartości do:

Kod
major.minor.patch.release.index


Zapis może być dowolny, byleby baza danych sortowała je poprawnie. Mam do dyspozycji gettery i settery, więc wartość w bazie może być mało czytelna, skrypty przerobią ją na czytelną.

Pierwszym moim pomysłem było użycie pola typu decimal oraz zapis wersji np 1.2.3 w postaci 1.002003. Ponieważ wydanie może przyjąć wartość: dev < alpha < beta < rc < stable, a wartości te przy zwykłym sortowaniu (sort) nie będą w tej kolejności, można by je zamienić na wartości cyfrowe: 0 < 1 < 2 < 3 < 4. Wszystko pięknie, tylko czasami widuję że patch przyjmuje wartości o długości ponad trój cyfrowe. Pytanie, czy starczy jeśli zarezerwuję dla wartości:
7.13.666-rc.2

szablon decimal:
Kod
###.##########
007.0130066632


bądź char:
Kod
###.###.#####.#.#
007.013.00666.3.2


Jakieś podpowiedzi?
mmmmmmm
Zapisz w 5 kolumnach i po problemie.
Gander
Tak, wiem, ale mam do dyspozycji tylko jedną kolumnę.
timon27
Co to znaczy że nie możesz użyć wielu kolumn?
Szef ci kazał oszczędzać kolumny bo drogie? haha.gif

Innym rozwiązaniem, mającym dodatkowe zalety jest utworzenie oddzielnej tabeli nazw wersji - tak jest np. w google play - każda wersja programu musi mieć nazwę 'pisaną' np "3.45.Xd45.najnowsza/2013" oraz nazwę będącą kolejną liczbą naturalną.
Czyli w nowej tabeli 'nazwy_wersji' trzymasz kolumny 'id' - kolejne liczby naturalne, oraz 'nazwa wersji' czyli ww nazwy. W starej tabeli użyj tylko id odnoszącego się do tej tabeli.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.