Reklama

Mój projekt - kilka pytań

  1. Abe
    Abe
    Witajcie,
    obecnie pracuje nad prywatnym małym projektem i głowie się nad pewnym problemem - czysto teoretycznie:
    Czy mogę zapisać tablicę asocjacyjną do bazy danych [MySql] dla konkretnego użytkownika i przeprowadzać na niej operacje?
    Dodawanie nowych kluczy, edycja, usuwanie.
    Nie podchodziłem do tego jeszcze, ale potrzebuję jakiegoś rozwiązania, a z moją wiedzą tylko takie przychodzi mi do głowy.
    Czy takie rozwiązanie jest korzystne? Wykonalne? Bezpieczne?

    Pozdrawiam.
  2. Zeimer
    Zeimer
    Jeżeli przez tablicę asocjacjacyjną rozumiesz słownik (mapę) to z pewnością możnaby. Tabela mogłaby wyglądać tak: nazwa użytkownika, klucz, wartość. Oczywiście to zadziałałoby tylko dla typów prostych dostępnych w MySQL. Jeżeli chodziło ci o coś innego to spróbuj trochę rozjaśnić. Programowanie ma to do siebie, że wszystko można zrobić : )

    #edit
    Czy korzystne - nie. Wszystko co sam wymyślisz jest będzie raczej zagmatwane i niejasne dla innych. W takich sytuacjach najlepiej byłoby poszukać jakiegoś sprawdzonego rozwiązania.

    Czy bezpieczne - pewnie też nie z tych samych powodów co wyżej.

    Czy wykonalne - jak już pisałem, umiejąc programować można zrobić wszystko.
  3. Killavus
    Killavus
    Jest co najmniej kilka rozwiązań tego problemu.

    • Serializacja i deserializacja danych. Polega to na tym, że zapisujesz swoją tablicę asocjacyjną w jakimś określonym formacie (polecam np. JSON) jako napis, po czym wrzucasz do tabeli z bazą danych. Przydatne i szybkie, jeżeli nie musisz w tym szukać.
    • Stworzenie odpowiedniej struktury bazy danych, jak np. klucz i wartość. Wada jest taka, że znów możesz wyszukiwać tylko i wyłącznie po kluczu.
    • Skorzystanie z jakiejś obiektowej bazy danych, takiej jak np. MongoDB. Problem w tym, że pewnie programujesz w PHP, a tam zapewne nie ma dla tego wsparcia ;(.


    Dla Twoich potrzeb celowałbym w drugie rozwiązanie.

    Pozdrawiam
    Killavus
  4. Abe
    Abe
    Panowie, sprawa wygląda mniej więcej tak:Mam zrobioną rejestrację Użytkowników i zapisuje ona ich w bazie 'uzytkownicy'.
    Potrzebuje do każdego id użytkownika tabelkę, która ma w sobie zawarte 6 różnych wartości liczbowych.
    Użytkownik dodaje jedną belkę(ich ilość ma być nie ograniczona), w której jest zawarte 6 różnych liczb, każda liczba powinna być inną zmienną(6 zdefiniowanych).
    Bym mógł przeprowadzać na nich weryfikację, czy są one poprawne - coś na wzór loterii.

    tablica
    {
    Dane1(a1=>1, a2=>2, a3=>4, a5=>5, a6=>6)
    Dane2(a1=>11, a2=>24, a3=>46, a5=>52, a6=>61)
    Dane3(a1=>31, a2=>22, a3=>14, a5=>53, a6=>56)
    Dane(x++)
    }

    Dodawanie tego do bazy jest trochę nie ekonomiczne, przynajmniej tak mi się wydaje, bo jeżeli jeden użytkownik ma w sobie zawarte tabele od Dane1 do Dane150... To baza się rozrasta strasznie i wszystko będzie wolno działać. Dlatego myślałem, aby po prostu do id użytkownika przypisać tabele, która zawiera id użytkownika i pole text, w którym będę mógł dodawać, edytować, usuwać i wyświetlać tablicę wielowymiarową.

    Tak robię to w PHP, jednak całą wiedzę jaką zyskuje to książki, nie mam żadnego mentora, nauczyciela, itp. Dlatego moje rozwiązania mogą być nietypowe, nie szablonowe.Chociaż już zaopatrzyłem się we wzorce programowania obiektowego, ale to pierw muszę poznać przynajmniej na dobrym poziomie OOP.
  5. Killavus
    Killavus
    Poprawność możesz sprawdzać na etapie dodawania do bazy danych - ew. przy obliczaniu zwycięzcy.

    W takim wypadku, z racji tego, że wszystkie zapytania będą raczej skierowane w stronę ID użytkownika, polecam taki schemat:

    Kod:
    user_id [integer / bigint] - id użytkownika, ustaw klucz obcy na pole users.id. UNIQUE constraint doda się automatycznie.
    data [text] - dane belki dla użytkownika.
    Potem dane z tablicy serializujesz za pomocą funkcji json_encode - http://www.php.net/manual/en/function.json-encode.php. Powinieneś otrzymać reprezentację JSONową swojej tablicy asocjacyjnej (string). Wrzucasz go do data. Potem, aby odczytać go spowrotem, korzystasz z funkcji json_decode. Powinieneś otrzymać to samo.

    Uwaga. Jeżeli używasz PHP 5.2 to musisz doinstalować rozszerzenie JSON z PEARa. Jeżeli korzystasz w tablicy asocjacyjnej w polach z jakichś obiektów złożonych, musisz nadpisać pewne metody tej klasy, aby rozwiązanie działało.

    Pozdrawiam
    Killavus
  6. Abe
    Abe
    Uczę się 5.3 i tej wersji też używam.
    Jutro jak wrócę ze szkoły, poczytam o tej funkcji - może nawet w książce mam, bo o PEAR są tam zagadnienia i spróbuje to napisać.

    Dzięki bardzo. :)
Pokazuje wyniki od 1 do 6 z 6
Bookmarks