![]() |
![]() |
![]()
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 - password tabela `emails` - id 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? |
|
|
![]() |
![]()
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 -------------------- |
|
|
![]()
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? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:39 |