PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy dobrym pomysłem jest przechowywanie tablicy jako wartości pola lub przechowywanie wartości tablicy jako rekordów?

Myślę, że powinieneś przeczytać o normalizacji baz danych i zdecyduj sam. Krótko mówiąc, z Twoją propozycją jest wiele problemów, ale możesz zdecydować, że możesz z nimi żyć.

Najbardziej oczywiste to:

  1. Co się stanie, jeśli do wiersza(1) zostanie dodany dodatkowy tag? Czy musisz najpierw przeanalizować, sprawdzić, czy jest już obecny, a następnie zaktualizować wiersz do tags.append(newTag) .
  2. Co gorsza, nadal usuwasz tag? Wyszukaj tagi, jest obecny, ponownie utwórz tagi.
  3. Co zrobić, jeśli tag ma zmienić nazwę – na przykład jakiś proces moderacji?
  4. Co gorsza, co z różnymi osobami określającymi nazwę tagu w inny sposób - byłoby to trudne do racjonalizacji.
  5. Co zrobić, jeśli chcesz wysyłać zapytania do danych na podstawie tagów? Twoje zapytanie staje się znacznie bardziej złożone, niż byłoby to konieczne.
  6. Prezentacja:Klient musi przeanalizować tag, aby go użyć. A co z polem separatora? Zmień to, a wszyscy klienci muszą się zmienić.

Krótko mówiąc, wszystkie te operacje stają się coraz trudniejsze i bardziej uciążliwe. Normalizacja ma na celu przezwyciężenie takich problemów. Prawdopodobnie jedynym powodem, dla którego robisz to, co mówisz, IMO, jest to, że przechwytujesz dane jako jednorazowe i mają one jedynie charakter informacyjny - to znaczy, że mają sens dla użytkownika, ale nie dla systemu per-se. To tak, jakby powiedzieć, że najlepiej tego unikać (ponownie, IMO).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Django - (OperationalError) FATAL:Uwierzytelnianie identyfikatora nie powiodło się dla użytkownika o nazwie użytkownika

  2. Czy w PostgreSQL jest jakaś funkcja skrótu?

  3. SQL Wypełnij tabelę z losowymi danymi

  4. Heroku - ActionView::Template::Error (PG::Error:ERROR:kolumna category_products.desc nie istnieje

  5. Jak dynamicznie wykonać polecenie PostgreSQL RAISE?