Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php+mysql] Budowa bazy
Wykrywacz
post 19.09.2006, 13:18:48
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 19.09.2006, 19:12:03
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.


--------------------
lorem ipsum : polska społeczność zend framework
Go to the top of the page
+Quote Post
Wykrywacz
post 20.09.2006, 08:36:02
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 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 20.09.2006, 09:46:32
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 20.09.2006, 09:47:53
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.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Wykrywacz
post 20.09.2006, 10:30:24
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 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 smile.gif.

No chyba, że się mylę
Go to the top of the page
+Quote Post
dr_bonzo
post 20.09.2006, 11:06:51
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


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
Wykrywacz
post 20.09.2006, 11:15:51
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. smile.gif
Ale zdążyłem sobie sam już na to pytanie odpowiedzieć smile.gif

Jeszcze raz wielkie dzięki.
Go to the top of the page
+Quote Post
SongoQ
post 20.09.2006, 11:20:37
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
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.06.2025 - 02:51