Nie sądzę, aby poświęcono wystarczająco dużo czasu na rozważania dotyczące schematu poruszone w oryginalnym poście. Więc tutaj jest coś do rozważenia dla każdego początkującego.
Powiedzmy, że poszedłeś do przodu i stworzyłeś to rozwiązanie. Wszystkie twoje wartości pomocnicze są łączone w jedną wartość i przechowywane w bazie danych. Rzeczywiście oszczędzasz [trochę] miejsca w swojej bazie danych i trochę czasu na kodowaniu.
Rozważmy teraz, że musisz wykonać częste i łatwe zadanie polegające na dodaniu nowego pola wyboru między obecnymi polami wyboru 3 i 4. Twój kierownik ds. Rozwoju, klient, cokolwiek oczekuje, że będzie to prosta zmiana.
Dodajesz więc pole wyboru do interfejsu użytkownika (łatwa część). Twój kod pętli już połączyłby wartości bez względu na liczbę pól wyboru. Wydajesz się również, że twoje pole bazy danych jest po prostu varchar lub innym typem ciągu, więc powinno też być w porządku.
Co się dzieje, gdy klienci lub Ty próbujesz przeglądać dane sprzed zmiany? Zasadniczo serializujesz od lewej do prawej. Jednak teraz wszystkie wartości po 3 są zmniejszone o 1 znak. Co zamierzasz zrobić ze wszystkimi istniejącymi danymi? Czy zamierzasz napisać aplikację, wyciągnąć ją z bazy danych, przetworzyć w celu dodania domyślnej wartości dla nowej pozycji pytania, a następnie zapisać ją z powrotem w bazie danych? Co się dzieje, gdy masz kilka nowych wartości w odstępie tygodnia lub miesiąca? Co się stanie, jeśli przeniesiesz lokalizacje, a jQuery przetwarza je w innej kolejności? Wszystkie twoje dane są w węźle i muszą zostać ponownie przetworzone, aby je zmienić.
Cała koncepcja NIE zapewniania ścisłej relacji klucz-wartość jest ludacris i zakończy się wpędzaniem cię w kłopoty raczej wcześniej niż później. Ci z was, którzy to rozważają, nie powinni. Inne sugestie dotyczące zmian schematu są w porządku. Użyj tabeli podrzędnej, większej liczby pól w tabeli głównej, tabeli pytań i odpowiedzi itp. Po prostu nie przechowuj danych bez etykiet, gdy struktura tych danych może ulec zmianie.