baza danych dla znajomych, portal społecznościowy

0

Witam
Zastanawiam się jak utworzyć bazę danych znajomych podobną na portalach społecznościowych takich jak nasza klasa.
Zastanawiam mnie taka struktura :
id_zapraszajacego , id_zapraszanego , flaga_czy_zaakceptowano_zaproszenie

Za każdym razem kiedy ktoś sie bedzie logował na swoje konto i z tej tabeli pobierał swoich znajomych, to czy nie będzie to niewydajne ? Przy 100 użytkownikach takich krotek w tabeli może być maksymalnie nawet 4000 i teraz zapytanie bedzie z takie dużej listy pobierać tylko swoich znajomych ? Nie lepiej dla każdego konta utworzyć nową tabele ze znajomymi ? Tyle że wtedy jest taki problem że ilość danych się podawaja, bo obydwaj użytkownicy, którzy są znajomymi mają siebie nazwajem w swoich tabelach. Jakie macie pomysły ?

0

Tworzenie osobnej tablicy dla każdego użytkownika to bardzo, bardzo, bardzo niedobry pomysł. Ilości rzędu 4000 rekordów to dla dobrze zaprojektowanej bazy danych żadna ilość.

0

a przy 1000 użytkownikach, gdyby kazdy miał 1/10 znajomych to wychodzi juz 1000999/(210) = 50000.
A 1000 użytkowników to też mała ilość, co jeśli tych użytkowników bedzie 500 000 ? wtedy juz jest bardzo duzo rekordów ? Jak w takim razie powinna wyglądać ta baza ? tak jak napisalem na początku ?

0

Co do struktury bazy: ja bym zrobił z Twojej jednej tabeli dwie. W jednej trzymałbym zaproszenia i flagi a do drugiej wrzucałbym zaakceptowane rekordy. Co do wydajności: przy 500 000 użytkownikach, jeżeli każdy będzie miał po 100 znajomych to nam daje 50 mln rekordów - to już dosyć dużo, ale poprawna struktura pozostaje poprawną strukturą. Z własnych doświadczeń (bazy komercyjne MSSQL i Oracle) mam styczność z tabelami do 5 mln rekordów i jest ok, ale żaden ze mnie specjalista od baz danych, więc niech się inni wypowiedzą.

0

@friko16: tak, Twoje zalozenie jest prawidlowe. Mozesz ewentualnie podzielic na 2 tabele, tak jak to powiedzial matcinsrv. Nie martw sie - przy zalozonych indeksach i kluczach obcych 1 mln rekordow nie powinno stanowic wiekszego problemu na sredniej jakosci sprzecie.

0

Czy myślicie że przy tworzeniu takiego portalu warto skorzystać z gotowych skryptów jakiegoś CMS np. Joomla, czy tworzyć wszystko samemu od podstaw ?

0

Jezeli planujesz jakas mala pseudo-amatorska stronke to mozesz uzyc gotowcow. Lecz profesionalne rozwiazania nie stoja na dakich badziewnych skryptach.

0

Czemu uważasz że są badziewne ? Nie mówie o budowaniu strony tylko na gotowych skryptach, mają jedynie służyć jako szkielet, można go modyfikować i dodawać swoje funkcje. Co myślisz ?

0
friko16 napisał(a)

(...)mają jedynie służyć jako szkielet, można go modyfikować i dodawać swoje funkcje(...)

Modyfikacja kodu modułów Joomli (i innych takich) to jak to mówili starożytni Egipcjanie: "orka na ugorze", nie polecam :).

0
friko16 napisał(a)

Czemu uważasz że są badziewne ? Nie mówie o budowaniu strony tylko na gotowych skryptach, mają jedynie służyć jako szkielet, można go modyfikować i dodawać swoje funkcje. Co myślisz ?

Male mam doswiadczenie z Joomla czy Drupalem ze strony programistycznej. Po prostu ich kod mnie odrzuca. Joomla czy Drupal sa malo wydajne, zasobozerne; kod jest paskudnie napisany, jego jakosc jest fatalna. Jezeli mialbym za zadanie cos tam zmodyfikowac czy dopisac jakis modul to bym sie chyba pocial :D Dobrze, ze nie musze ;)

Gotowe CMS-y nadaja sie do budowania prostych stronek, mini-portali. To wszystko. Zadna profesionalna strona nie bedzie dzialac na tego typu darmowym systemie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.