Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Mini serwis społecznościowy- jakie wybrać rozwiązania w architekturze baz mysql
aras16
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 5.02.2008

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


Witam.
Postanowiłem napisać miniserwis społecznościowy.
Jego opcje to:
-dodawanie zdjęć
-wysyłanie wiadomości między użytkownikami
-komentowanie zdjęć
Mam co do tego następujące pytania:
-czy do wiadomości w MySql tworzyć jedną tabele gdzie będzie się zapisywało nadawce, odbiorce (nadawca i odbiorca typu int powiazane relatywnie z bazą uzytkownicy) i treść, nastepnie filtrować te wiadomości dla konkretnego usera(po id)
- czy też tworzyć dla każdego usera osobną tabelkę
Co będzie bardziej wydajne?


Nastepne pytanie związane z dodawaniem zdjęć
-czy dla każdego usera tworzyć katalog ze zdjęciami czy też zrobić ktalog zdjęcia dla wszystkich
I tu tez pytanie co bardziej wydajne smile.gif
Z góry dzięki za pomoc.
Pozdrawiam winksmiley.jpg

Ten post edytował aras16 16.02.2008, 10:43:20
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #2





Goście







Na pewno nie nową tabelkę dla każdego usera, Twój pomysł z wiadomościami bardzo dobry myślę ;]

Ze zdjęciami chyba najlepiej wrzucać je do jednego (ew. więcej) katalogu. Zmieniać nazwy, i też zrobić tabelkę z id_zdjęcia, id_usera, link, tytuł, opis.

No i komentarze do zdjęć tak samo, id_komentarza, id_zdjęcia, id_dodającego, treść ;]
Go to the top of the page
+Quote Post
aras16
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 5.02.2008

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


Mam pytanie.
Czy jest jakaś różnica w wydajności:
- jak 1000 userów jednocześnie odwołuje się do jednej tabelki
-jak 1000 userów odwołuje się do kilku tabel
Oczywiście zastosuje jak mi poleciłeś ale z ciekawosci pytam smile.gif
Go to the top of the page
+Quote Post
Grzyw
post
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Cytat(aras16 @ 16.02.2008, 10:39:31 ) *
Czy jest jakaś różnica w wydkoajności:
- jak 1000 userów jednocześnie odwołuje się do jednej tabelki
-jak 1000 userów odwołuje się do kilku tabel


No pewnie, że jest! smile.gif Gdybyś skorzystał na przykład ze złączenia dwóch tabel, wyszukując z tych tabel powiązane dane, czas wykonywania operacji będzie znacznie dłuższy.
Z drugiej strony - unikaj sytuacji, ze w tabeli users na przykład, będzie 20 kolumn. Zapytanie
  1. SELECT * FROM users

byłoby wówczas nisko wydajne. W takiej sytuacji lepiej jest rozbić dane na 2 tabele grupujące cechy usera w jakiś logiczny sposob, np. tabelki users i profile.
Zwróć uwagę, ze jak masz w zmiennej ID usera, to możesz wykonać zamiast selectu z dwóch tabel dwa osobne selecty na dwóch tabelach, odwołując się do konkretnego ID. Dzięki temu możesz wybierać tylko to, co naprawdę potrzebujesz.


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #5





Goście







Zdecydowanie.

Ja np. mam np. tabele:
  • user_basic
  • user_dane
  • user_opcje
  • user_uprawnienia
Zawsze warto dzielić. Na przykład, przy wiadomościach możesz zrobić tabelę: id_wiad(klucz), id_odbiorcy, id_nadawcy, tytuł; i drugą: id_wiad, treść. Bo tak np. przy pokazywaniu skrzynki odbiorczej, pobierzesz tylko dane z pierwszej tabeli, a z drugiej skorzystasz tylko przy wyświetlaniu ;]

Ten post edytował Wieviór 16.02.2008, 12:22:17
Go to the top of the page
+Quote Post
--aras16--
post
Post #6





Goście







Ale robienie tabeli dla kazdego usera nie jest wydajne?
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #7





Goście







Cytat(-aras16- @ 16.02.2008, 14:58:45 ) *
Ale robienie tabeli dla kazdego usera nie jest wydajne?


Zdecydowanie nie.
Go to the top of the page
+Quote Post
aras16
post
Post #8





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 5.02.2008

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


Jecze jedno pytanie smile.gif
Jak pobrać z bazy x rekord który spełnia warunek np.
  1. SELECT nadawca, temat, tresc FROM message WHERE id=1

Czy istnieje możliwość pobrania np 5 rekordu który spełnia warunek , nie robiąc pętli pobierania danych 5 razy i dopiero wyświetlanie wyniku?
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #9





Goście







Robisz w tabeli tz. klucz (index) i po nim właśnie wybierasz odpowiedni rekord.
Go to the top of the page
+Quote Post
aras16
post
Post #10





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 5.02.2008

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


No tak normalnie bym wybierał po id, Jest jednak jedno ale:
id_wiad(klucz) id_odbiorcy id_nadawcy, tytuł;
To jest struktura tabeli, zapytanie select pobiera rekordy gdzie id_nadawcy=id_usera. W takim zapytaniu id może być różne np. 2,5,8,9 ;/
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #11





Goście







Najpierw robisz skrzynkę odbiorczą:

  1. SELECT * FROM wiadomosci WHERE id_odbiorcy=id


Dajesz tutaj while z czymś takim:

  1. <?php
  2. while ()
  3. {
  4. $lp++;
  5. echo $lp.'. <a href="pokazwiadomosc.php?id='.$rekord[id].'">'.$rekord['tytul'].'</a><br>';
  6. }
  7. ?>


W pliku pokazwiadomosc.php pokazujesz wiadomość z pomocą zapytania:

  1. <?php
  2. $sql = "SELECT * FROM wiadomosci WHERE id_wiad='".$_GET[id]."'";
  3. ?>
Go to the top of the page
+Quote Post
nrm
post
Post #12





Grupa: Zarejestrowani
Postów: 627
Pomógł: 33
Dołączył: 1.05.2005
Skąd: Katowice

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


Cytat(-aras16- @ 16.02.2008, 12:58:45 ) *
Ale robienie tabeli dla kazdego usera nie jest wydajne?

pal licho wydajność, przede wszystkim jest BEZ SENSU ;) Czy kolega korzystał już z zapytań łączących 2,3 czy więcej tabel? Polecam jakiś wstęp do SQL z obojętnie jakiej książki.


--------------------
Go to the top of the page
+Quote Post
--aras16--
post
Post #13





Goście







Z zapytań łączonych korzystałem, książkę o SQL też czytałem. A co do mojego pytania myślałem że jak dużo ludzi sie do jednej tabeli łączy to jest gorzej jakby to rozłożyć na pare tabel biggrin.gif ale się myliłem

PS. W końcu to jest przedszkole biggrin.gif
Go to the top of the page
+Quote Post
--aras16--
post
Post #14





Goście







Mam jeszcze jedno pytanie:
Czego użyć aby można było wyświetlać stronę z użytkownikiem pod adresem
www.jakasstrona.pl/?nazwa_użytkownika
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #15





Goście







http://wortal.php.pl/wortal/artykuly/pomys.../przyjazne_urle

Daleko szukać nie trzeba ;]
Go to the top of the page
+Quote Post
aras16
post
Post #16





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 5.02.2008

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


Użyłem $_SERVER['PATH_INFO'] plik się includuje tylko czemu jak używam tej zmiennej na stronie nie mam stylów css-a
Go to the top of the page
+Quote Post
-Wieviór-
post
Post #17





Goście







Pokaż kod strony i ten adres który wpisujesz.
Go to the top of the page
+Quote Post
aras16
post
Post #18





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 5.02.2008

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


  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <head>
  3. <meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
  4. <link rel="Stylesheet" type="text/css" href="style.css" />
  5. <title>Wirtualna wioska</title>
  6. </head>
  7. <body>
  8. <?php
  9.  
  10. $link = mysql_connect("127.0.0.1","root", "haslo") or die ("Nie można nawi‘zać poł‘czenia.");
  11. mysql_select_db("baza");
  12. include("funkcje.php");
  13.  
  14. ?>
  15. <div class="strona">
  16. <div class="top">
  17. <div class="logo"></div><div class="haslo"><center><h1>Portal</h1></center></div>
  18. <div class="link"><? include("./linki.php");?> </div>
  19.  
  20. </div>
  21.  
  22. <div class="panel"><?php include("./panellewa.php"); ?></div>
  23. <div class="tresc"><? include("./sys.php"); ?></div>
  24. <div class="stopka"><? include("./stopka.php"); ?></div>
  25.  
  26.  
  27. </div>
  28.  
  29.  
  30. </body>
  31. </html>


sys.php:
  1. <?php
  2. include('.'.$_SERVER['PATH_INFO'].'.php');
  3. ?>

adres:
127.0.0.1/index.php/logowanie
Strone includuje ale brak css-a

Jeżeli natomiast plik sys.php wygląda tak:
  1. <?php
  2.  include('.'.$_SERVER['PATH_INFO']);
  3. ?>

A adres strony wygląda tak:
127.0.0.1/index.php/logowanie.php
To styl css jest ale nie wyświetla się grafika która w stylach jestzapisana biggrin.gif

Ten post edytował aras16 17.02.2008, 11:58:12
Go to the top of the page
+Quote Post
--aras16--
post
Post #19





Goście







Mam jeszcze jedno pytanie smile.gif
-lepiej tworzyć drugi plik z miniaturką zdjęcia, czy zmieniać width i height znacznika img przy wyświetlaniu duzego zdjęcia?
Go to the top of the page
+Quote Post
Grzyw
post
Post #20





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

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


Cytat(-aras16- @ 17.02.2008, 16:18:05 ) *
Mam jeszcze jedno pytanie smile.gif
-lepiej tworzyć drugi plik z miniaturką zdjęcia, czy zmieniać width i height znacznika img przy wyświetlaniu duzego zdjęcia?

Przeglądarka pobiera najpierw obraz w oryginale i skaluje go dopiero lokalnie. Myślę, że to wszystko wyjaśnia smile.gif


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
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: 19.08.2025 - 10:24