Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dynamiczne tabele bazy danych w django

Interesujące pytanie, które może być przedmiotem szerszego zainteresowania.

Stworzenie jednej tabeli na użytkownika to koszmar związany z konserwacją. Zamiast tego należy zdefiniować pojedynczą tabelę do przechowywania danych wszystkich użytkowników, a następnie wykorzystać możliwości bazy danych, aby pobrać tylko te wiersze, które odnoszą się do interesującego użytkownika (po sprawdzeniu uprawnień, jeśli to konieczne, ponieważ nie jest dobrym pomysłem zapewnianie dowolnemu użytkownikowi nieograniczonego dostępu dostęp do danych innego użytkownika bez nastawienia określonych uprawnień).

Przyjęcie proponowanego rozwiązania wymaga skonstruowania instrukcji SQL zawierających odpowiednią nazwę tabeli użytkownika. Kolejne zapytania do bazy będą się w większości różnić, co spowalnia pracę, ponieważ każde zapytanie SQL musi być „przygotowane” (sprawdzić składnię, zweryfikować nazwy tabel i kolumn, uprawnienia żądającego użytkownika). dostęp do wymienionych zasobów musi być autoryzowany i tak dalej).

Korzystając z pojedynczej tabeli (modelu) można wielokrotnie używać tych samych zapytań, z parametrami służącymi do różnicowania określonych wartości danych (w tym przypadku nazwy użytkownika, którego dane są poszukiwane). Twoja praca z bazą danych będzie przebiegać szybciej, będziesz potrzebować tylko jednego modelu do opisania danych wszystkich użytkowników, a zarządzanie bazą danych nie będzie koszmarem.

Kolejną zaletą jest to, że Django (którego wydajesz się używać) ma rozbudowany model uprawnień oparty na użytkownikach i może być łatwo użyte do uwierzytelniania logowania użytkownika (kiedy już wiesz jak). Te zalety są tak przekonujące Mam nadzieję, że wycofasz się ze swojej herezji i zdecydujesz, że ujdzie ci na sucho jedna tabela (oraz, jeśli planujesz używać standardowych loginów Django, związek z modelem użytkownika, który jest centralną częścią każdego Django projekt).

Zachęcamy do zadawania dalszych pytań w trakcie kontynuacji. Wygląda na to, że jesteś nowy w pracy z bazami danych, dlatego starałem się przedstawić odpowiedni poziom szczegółowości. Istnieje wiele pułapek, takich jak ta, jeśli nie możesz uzyskać dostępu do fachowej porady. Ludzie na SO Ci pomogą.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Musisz wstawić 100000 wierszy w mysql za pomocą hibernacji w mniej niż 5 sekund

  2. Jak działa zawieszenie transakcji na wiosnę?

  3. Jak uzyskać wartość SQL_CALC_FOUND_ROWS za pomocą przygotowanych instrukcji?

  4. Jaka jest definicja kardynalności w SQL?

  5. Rails 3 ActiveRecord:Uporządkuj według skojarzeń