Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] ID użytkownika lub e-mail
SmokAnalog
post
Post #1





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Witajcie,

robię system wiadomości. Mogą one być wysyłane od zalogowanego użytkownika lub niezarejestrowanego adresu e-mail. W jaki sposób najładniej przechować to w bazie? Mój pomysł na teraz jest taki:
Kod
tabela `messages`
- id
- content

tabela `users`
- id
- email
- password

tabela `emails`
- id
- email

tabela `users_messages`
- id
- user_id
- message_id
- type (enum: 'sender' lub 'recipient')

tabela `emails_messages`
- id
- email_id
- message_id
- type (enum: 'sender' lub 'recipient')


Opcjonalnie dla wydajności mógłbym jeszcze dodać pola `from` i `to` do `messages`, które podpowiadałyby czy szukać w mailach czy userach.

Macie pomysły?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 2)
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


messages
- id
- user_id (Domyślnie 0)
- email_id (Domyślnie 0)
- type

Jeśli user_id == 0 - Wiadomość wysłana na email
Jeśli user_id != 0 - Wiadomość wysłana do użytkownika

Zamiast email_id możesz dać polę email i zapisywać adres bezpośrednio w tej tabeli bez zzbędnej tabeli (emails) - ale to wsystko zależy od twoich potrzeb.

Ten post edytował markuz 18.03.2014, 13:52:17


--------------------
Go to the top of the page
+Quote Post
SmokAnalog
post
Post #3





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

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


Dzięki, właśnie zastanawiałem się na ile wprowadzanie dwóch pól, z których jedno zawsze jest puste, jest powszechne. Zero to nie jest najlepszy pomysł, jeśli chcę używać klucza obcego, ale zawsze zostaje NULL.

A co sądzą inni forumowicze? Czy zwiększanie tabeli wszerz to dobry pomysł w tym przypadku?
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 Aktualny czas: 21.08.2025 - 18:39