Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php+mysql] Budowa bazy
Wykrywacz
post
Post #1





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Mam takie pytanie koncepcyjne odnośnie budowy bazy (postaram się jasno).

Ma być to aplikacja do konwertowania kont bankowych.
User podaje plik, w którym są informacje (w jednej linii - każdy przelew).
Dalej leci konwersja.

Pliczek taki exploduje, i rozdzielone części wsadzam kolejno do bazy.
Z której potem interesujące mnie fragmenty poddaje różnym procesom.

Wszystko było by proste, dla jednego usera.

Problem w tym, że naraz może taką operację przeprowadzać 20 osób, więc nie może być to w jednej tablicy.

Myślałem, aby rozbijać to na użytkowników, gdzie każdy z nich pracowałby na własnej tablicy, a tym samym nie było by zagrożenia, że się dane pomieszają.

Lecz to nasuwa mi kolejny problem, jak kolejne paczki przelewów, numerować w tablicy tak, aby id przyznawało ten sam dla wszystkich rekordów w danej sesji a nie dla każdego rekordu osobna na zasadzie autoincrement.

Wogóle zastanawiam się czy ten typ konstrukcji wogóle jest prawidłowy. Co o tym sądzicie.
Go to the top of the page
+Quote Post
cyphelf
post
Post #2





Grupa: Zarejestrowani
Postów: 68
Pomógł: 1
Dołączył: 27.03.2006

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


Zrób w tabeli pole user_id i przy wstawianiu wiersza dodawaj także numer identyfikujący użytkownika. Może to być numer użytkownika albo np. identyfiikator sesji.
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #3





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


No właśnie problem polega na tym, że nie wiem jak nadać autoincrementujący się id sesji a nie rekordu w bazie. (Wprowadzanie z ręki wogóle nie wchodzi w grę). id_usera, jest bez sensu, ponieważ każdy user będzie miał swoją tabele. (Swoją drogą id_usera też będzie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ).

Tak, więc dla jasności problem : Jak zrobić autoincrementujący się id_sesji, nadający ten sam id całej sesji (od 1 do n - rekordów), a nie standartowo każdemu rekordowi kolejny numer id. Bądź czy ktoś z was ma pomysł jak można to inaczej rozwiązać.

Ten post edytował Wykrywacz 20.09.2006, 08:36:52
Go to the top of the page
+Quote Post
SongoQ
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Nie wiem czy dobrze zrozumialem ale zapisujesz przelewy dla userow i chesz gdzies zapisac ze n przelewow przyszlo w jednej transakcji (transakcji zapisu przez Ciebie). Nie ma sensu rozdzielac na tabele dla kazdego usera. Numer transakcji moze to byc timestamp + wygenerowany numer od 0 - 1000 tak aby nie pojawily sie inne transakcje.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





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

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


Tabela z sesjami, tam tworza ci sie autoinkrementujace ID i tyle, teraz uzywasz tego ID.
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #6





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


Cytat
Tabela z sesjami, tam tworza ci sie autoinkrementujace ID i tyle, teraz uzywasz tego ID.


O i to wydaje mi się jest najlepsze rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Cytat
Nie ma sensu rozdzielac na tabele dla kazdego usera.


W dalszej części, chce mieć łatwy dostęp do historii, tworzonych przelewów przez każdego użytkownika.
Dlatego chciałem zrobić osobną tabele dla każdego usera.
Ale masz rację, jeżeli dodam user_id, do tego pola to select, będzie banalny.
Tym bardziej, że nawet przy 30 naraz insertach mysql nie powinien mieć raczej problemów (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) .

No chyba, że się mylę
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #7





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

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


Sytuacja jest prosta:
masz encje Uzytkownik, sesja, wpis (czy jak sie to tam zwie)

(Uzytkownik)-1-----*-( Sesja )-1----*-(wpis)

i tyle -- tworzysz nowa sesje, pobierasz jej ID i dodajesz wpisy z tym id.

Chcesz historie usera --
  1. SELECT * FROM sesja WHERE user_id = $id

Chcesz wszystkie wpisy usera:
  1. SELECT Uzytkownik.name, sesja.id, wpis.* FROM wpis, sesja, uzytkownik WHERE wpis.sesja_id = sesja.id AND sesja.user_id = user.id AND user.id = $x
Go to the top of the page
+Quote Post
Wykrywacz
post
Post #8





Grupa: Zarejestrowani
Postów: 726
Pomógł: 20
Dołączył: 8.12.2005
Skąd: Wrocław

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


OK dzięki. Z budową pytań sobie poradzę, chodziło mi w pytaniu raczej o efektywność aplikacji. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ale zdążyłem sobie sam już na to pytanie odpowiedzieć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Jeszcze raz wielkie dzięki.
Go to the top of the page
+Quote Post
SongoQ
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 2 923
Pomógł: 9
Dołączył: 25.10.2004
Skąd: Rzeszów - studia / Warszawa - praca

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


Jesli bedziesz robil operacje na tej babeli mowie tu o DML to warto zrobic tabele historii i triggerem kopiowac dane.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 11:39