![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 234 Pomógł: 1 Dołączył: 29.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chciałbym zapisywać pytania i odpowiedzi z formularza w bazie. Odpowiedzi mogą być różne np. z pola textarea, inputów, checkboxów. W jaki sposób trzymać te dane w jednej tabeli, żeby np. nie trzymać pola w bazie, które będzie zbędnie zabierało dużo miejsca w bazie przez co baza będzie się bardzo rozrastać? jak to zrobić optymalnie? pozdrawiam |
|
|
![]() |
![]()
Post
#2
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Stwórz sobie dodatkową kolumnę w której będziesz wpisywał jaki jest typ elementu formularza.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 234 Pomógł: 1 Dołączył: 29.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
ok, to wiem, ale chodzi mi bardziej o to jak zapisywać w bazie w jednej tabeli większe treści typu jakiś opis, wartości liczbowe, itp.? jaki typ pola ?
chodzi mi o to, żeby się dowiedzieć jak to zrobić poprawnie. Czy może zrobić rozbicie np. na wartość liczbową i wartość tekstową ... ? chodzi o to,że raz będzie większy tekst(np.jakiś opis) jako rekord a raz mniejszy(np. jakaś wartość liczbowa np. kwota) ... Ten post edytował Thuunder 7.10.2008, 15:18:44 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Pola w bazie powinny odpowiadać Twoim polom w formularzu. To jakie typu ustawisz dla atrybutów zależy wyłącznie od Ciebie. Jeśli przewidujesz, że odpowiedz będzie długa to dajesz 'text' jeśli to jest pole input to zazwyczaj jest to varchar(250) jak number to number. Większej filozofii tutaj nie widzę. Pozdrawiam munky |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
Witam, Pola w bazie powinny odpowiadać Twoim polom w formularzu. To jakie typu ustawisz dla atrybutów zależy wyłącznie od Ciebie. Jeśli przewidujesz, że odpowiedz będzie długa to dajesz 'text' jeśli to jest pole input to zazwyczaj jest to varchar(250) jak number to number. Większej filozofii tutaj nie widzę. Pozdrawiam munky a czy nie ma czasem wiekszej filofi kiedy to pytania i odpowiedzi beda zapisywane w bazie, a pytania beda np typu select? chyba trzeba wtedy dodatkowa tabele dla opcji dla select, radio, checbox. no i pytanie czy osobna tabela na odpowiedzi wieksze niz 255 znakow, osobna dla liczb i osobna na tekst do 255 znakow? podczas tworzenia pytania i odpowiedzi wybiera sie jaki rodzaj odpowiedzi i jaka glugosc. jezeli select mozliwosc dodawania poszczegolnych opcji do selecta. z 2 tabel robi sie wtedy 8 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Cytat a czy nie ma czasem wiekszej filofi kiedy to pytania i odpowiedzi beda zapisywane w bazie, a pytania beda np typu select? chyba trzeba wtedy dodatkowa tabele dla opcji dla select, radio, checbox. AxZx nie rozumiem co chcesz mi powiedzieć (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Cytat no i pytanie czy osobna tabela na odpowiedzi wieksze niz 255 znakow, osobna dla liczb i osobna na tekst do 255 znakow? Nie wiem dlaczego piszesz osobna tabela ? Nie miałem też na myśli tworzenia n atrybutów do n pytań. Chodziło mi raczej o coś takiego (ans_id, ans_varchar, ans_text, ans_number, answ_boolen) Cytat podczas tworzenia pytania i odpowiedzi wybiera sie jaki rodzaj odpowiedzi i jaka glugosc. jezeli select mozliwosc dodawania poszczegolnych opcji do selecta. nie rozumiem co chcesz mi przekazać (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) kurcze może wczesna pora (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Cytat W jaki sposób trzymać te dane w jednej tabeli, żeby np. nie trzymać pola w bazie, które będzie zbędnie zabierało dużo miejsca w bazie przez co baza będzie się bardzo rozrastać? Thuunder to czy będziesz trzymał wartość number w varce to nie ma znaczenia jeśli chodzi o wielkość. Chodzi tutaj o szybkość wykonywania operacji. pozdrawiam munky |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 234 Pomógł: 1 Dołączył: 29.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wydaje mi się, że ma znaczenie dlatego, że liczby powinny być trzymane jako typ liczbowy.
Planuję zrobić z grubsza tabele pytania(id_pytania,rodzaj odpowiedzi jako id z tabeli słownikowej, pytanie), rodzaj_odpowiedzi(input, textarea,select itp.), i właśnie zastanawiam się w jakiej tabeli to zrobić,żeby to było optymalne i przy większej ilości danych działało jak należy oraz było zgodne ze sztuką tworzenia baz danych (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Thuunder zgadze się, że varki nie trzyma się w number i w drugą stronę (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) bo i po co.
Co do rozwiązania, ja bym zrobił to tak: Zakładam, że każde pytanie ma n odpowiedzi. Każda typ ma przyporządkowane n odpowiedzi Relacje: 1:n (Question:Answers), 1:n (Answer_Types:Answers) 1. Tabela z pytaniami Questions (question_id, question_title, question_descritption, ...) 2. Tabela z odpowiedziami Answers (answer_id, answer_question_id, answer_answer_type_id) 3. Tabela z typami odpowidzi i samymi odpowiedziami Answer_Types (answer_type_id, answer_type_text, answer_type_number) W tabeli questions przechowujesz pytanie jego opis. W tabeli Answers przechowujesz id pytania i id opowiedzi w postaci klucza do typu. Answer_Types przechowuje konkretne pytanie. Można to przenieść do Answers ale jest zasada, że encja nie powinna mieć więcej niż 16 atrybutów. Zresztą mieszanie psuje elastyczność. Nie wiem czy o to chodziło (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) Pozdrawiam munky |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
dalej będę drążył temat bo chyba zapominasz o tym, że tworząc nowe pytanie mogę dać możliwość odpowiadania tylko w taki sposób, że wybieram odpowiedź z listy rozwijanej lub zaznaczam checbox lub radio.
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
AxZx, i... ? Nie za bardzo widzę co chcesz mi przekazać, możesz to rozwinąć swoją myśl ? Pozdrawiam munky |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
ze zapomniales napis o tabelach z wartosciami do selectow, radio i checkboxow.
|
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 26 Pomógł: 2 Dołączył: 7.10.2008 Ostrzeżenie: (0%) ![]() ![]() |
AxZx rozumiem ale to żaden problem.
Mam dwie tabele, żeby było dynamicznie to w jednej trzymam pytania (pytania = wartości pytań), coś na wzór słowników (id, number, text) a w drugiej tabeli mogę trzymać typy obiektów HTML w formi-e. Robię relację n:m czyli każdy obiekt HTML może mieć m pytań a każde pytanie może być przydzielone do n obiektów HTML Pozdrawiam munky |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 05:01 |