• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Chat - baza danych, propozycja. Proszę o opinie

Object Storage Arubacloud
0 głosów
740 wizyt
pytanie zadane 17 lutego 2018 w SQL, bazy danych przez Ardzej16 Początkujący (450 p.)
edycja 17 lutego 2018 przez Ardzej16

Witam.

Pisze system konwersacji (chat) na swojej stronie.

Mam pomysł na bazę danych i proszę o opinie i naprowadzenie  mnie jeżeli moje myślenie jest błędne lub nie optymalne. Może jednak wystarczy jedna tabela?

Konwersacje będą budową przypominały te z facebooka.

 

Załączam  zdjęcie przykładowej bazy danych.

http://www88.zippyshare.com/v/HvStEXkC/file.html


 

Proszę o poradę, pozdrawiam.

komentarz 17 lutego 2018 przez Mariusz08 Maniak (62,300 p.)
Nie wiem, czy ktoś będzie chciał wchodzić na zippyshare, po to aby ściągnąć zdjęcie bazy danych. Umieść to na jakimś hostingu obrazków, czy w naszym forumowym edytorze jest opcja wstawiania obrazów. Pozdrawiam
komentarz 17 lutego 2018 przez Ardzej16 Początkujący (450 p.)
Zaktualizowałem

3 odpowiedzi

+2 głosów
odpowiedź 17 lutego 2018 przez Assasz Nałogowiec (30,460 p.)
wybrane 17 lutego 2018 przez Ardzej16
 
Najlepsza
Przechowywanie "tablicy" w polu varchar to zły pomysł, zamiast tego zastosuj relację wiele do wielu - zrób oddzielną tabelę Participant składającą się z 3 kolumn: ID, ID konwersacji, ID użytkownika, gdzie ID konwersacji jest kluczem obcym tabeli Conversation.

Polecam także stosować liczbę pojedynczą w nazewnictwie tabel ;)
komentarz 17 lutego 2018 przez Ardzej16 Początkujący (450 p.)

Czy o to Ci chodzi (dobrze zrozumiałem) :

komentarz 17 lutego 2018 przez Assasz Nałogowiec (30,460 p.)
Mniej więcej coś takiego. Z tą uwagą, że relacja wiele do wielu zachodzi przy relacji User - Conversation, tabela Participant jest tabelą pośredniczącą i jest połączona relacjami 1-1 z tabelami User i Conversation.
komentarz 17 lutego 2018 przez Ardzej16 Początkujący (450 p.)
Juz rozumiem. Ogromnie dziękuję.
0 głosów
odpowiedź 17 lutego 2018 przez Mariusz08 Maniak (62,300 p.)
Baza może być, jednak jak ma to być prosty system (bez grup itd.) poleciłbym zrezygnować z tabeli conversations. Sama tabela messages wystarczy, filtrujesz po np. id_sender i sortujesz po dacie wysłania (asc lub desc). Pozdrawiam
komentarz 17 lutego 2018 przez Ardzej16 Początkujący (450 p.)
Nie napisałem szczegółów.

Strona, która pisze jest oparta o autorski framework. Są podziały  na grupy. Dodatkowo chciałbym aby można   było wysyłać wiadomość do jednej jak i do wielu osób.

Mam bazę danych dla użytkowników, która podzielona jest na tabele ,,osoby, mejle, adresy, grupy, telefony ".

 

Dla przykładu przy jednej tabeli gdy będę chciał wyświetlić listę konwersacji DB będzie dużo czasu szukał pierwszego wystąpienia wiadomości z użytkownikiem A i B, itd.
0 głosów
odpowiedź 17 lutego 2018 przez Ardzej16 Początkujący (450 p.)

Przykładowa baza danych z jedną tabela wyglądała by mniej więcej takt

Id
Id_sender
Id_recipient
(pomijam treść, czas, itd)

Zapelnijmy ja przykładowy I danymi:

Id     sender    recipient
1      1              5
2      1             6
3      5             1
4       6             5
5       5              6

 

I teraz tabele robi się coraz większą, są tysiące wiadomości. Gdy będę chciał wyświetlić listę konwersacji użytkownika o id=1 będę musiał sprawdzac kolumny sender i recipient czy takowe ID istnieje w nich, jeżeli tak to sprawdzać czy mam już pobrany wiersz o id z warunku powyżej. Dodatkowo będą przypadki gdzie w jednym wierszu sender=1 a recipient=5 a w następnym odwrotnie. To podwaja wiersze (wynik). Jak dobrze wszystko opisałem wydaje mi się że takie rozwiązanie traci na szybkości działaniu. Poza tym, sposób ten eliminuje ko wersacje z wieloma użytkownikami (chyba że pole recipient ustawie jako tekstowy i będę zapisywać id odbiorców oddzielnych np przeciwnikiem. Lecz wydaje mi się że to najgorsze rozwiązanie).

Dlatego chciałbym napisać/zaprojektować to w taki sposób aby działało szybko, dało się rozbudować.

Podobne pytania

0 głosów
0 odpowiedzi 187 wizyt
0 głosów
6 odpowiedzi 315 wizyt
pytanie zadane 6 lutego 2016 w HTML i CSS przez patrycja Początkujący (450 p.)
+1 głos
2 odpowiedzi 1,720 wizyt

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...