Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Jak zaprojektowac schemat bazy
Yatta
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 29.05.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mam do zrobienia profil uzytkownika. Uzytkownik moze zaznaczyc od 1 do 200 checkboxow. I wrzucanie tego w jeden wiersz raczej odpada. Wiec robie dodatkowa tabele i tam laduja wszystkie wartosci w pojedycznych wierszach.
I teraz pytanie , jak rozwiazac update profilu? Czy kasowac wszystkie rekordy i dodawac nowe czy raczej sprawdzac ktore sie zmienily i aktualizowac?
Go to the top of the page
+Quote Post
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Możesz bawić się w sprawdzanie, z których checkboxów użytkownik zrezygnował (np. poprzez zapis do ukrytego pola w JS podczas odznaczania). Jednak będziesz miał z tym kupę zabawy (np. obsługa: odznaczył ale zaznaczył ponownie). Najprościej wywalać wszystkie rekordy z tej tabeli i wrzucać na nowo przy każdej zmianie danych.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Prostsze do wykonania jest usuniecie + dodanie. To tylko 2 zapytanka DELETE + INSERT (o ile stosujesz multi insert).
A updatowanie - select + update kazdego z [ ] z osobna


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Yatta
post
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 29.05.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


OK tylko tu pojawia sie problem pola primay key z autoincrement. Zalozmy 200-300 kont po 200 pol. I kazdy co jakis czas bedzie edytowal profil. Czy to nie grozi przepelnieniem wartosci autoincrementa? O to sie glownie obawiam
Go to the top of the page
+Quote Post
phpion
post
Post #5





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Źle to przemyślałeś. Schemat tabel powinien wyglądać tak:

user: id, username...
choice: id, name...
user_choice: user_id, choice_id

Podkreślenie oznacza klucz główny. Jak widzisz tabela user_choice posiada klucz główny składający się z dwóch kolumn. Nie potrzebujesz do niej dodatkowe pola typu AUTO_INCREMENT. Usunięcie wszystkich wyborów danego użytkownika (przy operacji ponownego zapisu) będzie trwało szybciutko, a to za sprawą skorzystania z klucza głównego (nie musisz już tworzyć indeksu).
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 01:15