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

Pytanie MySQL - Jak obsługiwać wiele typów użytkowników - jedna tabela czy wielu?

Twój instynkt, aby nie tworzyć dużego stołu z dużą ilością NULL, jest słuszny. To zły pomysł z punktu widzenia przechowywania/odzyskiwania/utrzymania, a także z punktu widzenia walidacji danych (więcej o tym później).

Dwa najpopularniejsze podejścia:

1) Miej tabelę użytkowników ze wszystkimi typowymi polami, w tym polem „userType”. Następnie przygotuj osobną tabelę dla każdego typu użytkownika zawierającą dodatkowe pola. Wszyscy użytkownicy mają wiersz w tabeli użytkowników i co najmniej jedną tabelę określonego typu użytkownika. Jest to najbardziej znormalizowany i najbardziej wydajny pod względem przechowywania i szybkiego logowania. Pozwala to również na użycie ograniczeń i kluczy obcych, aby zapewnić, że wszystkie wymagane informacje dla każdego typu użytkownika są dostępne.

2) Miej tabelę użytkownika zawierającą wszystkie wspólne pola. Przygotuj inną tabelę o nazwie UserAttributes który zawiera pola dla identyfikatora użytkownika, klucza i wartości. Tutaj można przechowywać wszelkie dodatkowe metadane dla konkretnego użytkownika. Ma to tę zaletę, że nie wymaga od administratora bazy danych dodawania nowych typów użytkowników lub metadanych, które mają być przechowywane dla każdego typu użytkownika. Jednak nie pozwala na walidację danych na poziomie bazy danych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przekonwertować datetime na UTC w MySQL

  2. Niepotrzebne zapytania w Hibernate - MySql

  3. Jak połączyć ciągi z podzapytania w jeden wiersz w mysql?

  4. Tłumaczenie mongodb dla sql INSERT...SELECT

  5. Pobierz wszystkie działania ostatnich trzech użytkowników