sql >> Database >  >> RDS >> Mysql

MYSQL:Gebruiker - tabelconfiguratie met profieldetails - best practice

Waar u rekening mee moet houden bij uw benaderingen

Gebruikersprofiel opslaan in gebruikerstabel

  • Dit is over het algemeen de snelste manier om bij de profielgegevens te komen, hoewel je hier misschien veel overbodige gegevens hebt (kolommen die mogelijk geen informatie bevatten).
  • Snel (vooral als je alleen kolommen haalt die je nodig hebt uit de db)
  • Verspilde gegevens
  • Moeilijker om mee te werken / te onderhouden (misschien met interfaces zoals PHPMyAdmin)

Gebruikersprofiel opslaan in User_Profile Tabel 1-1 relatie met gebruikers

  • Moet nog steeds vrij snel zijn met een join en je zou wat gegevensredundantie kunnen elimineren als er geen gebruikersprofielen worden gemaakt, tenzij een gebruiker er een invult.
  • Gemakkelijker om mee te werken
  • Ook iets langzamer vanwege deelname (of tweede zoekopdracht)

Gebruikersprofiel opslaan als eigenschappen en waarden in tabellen

*d.w.z. Tabel om mogelijke opties op te slaan, tabel om user_id, option_id en waarde op te slaan*

  • Geen overbodige gegevens opgeslagen, alle gegevens zijn relevant
  • Meest genormaliseerde methode
  • Langzamer om gegevens op te halen en bij te werken

Mijn indruk is dat de meeste websites de 2e methode gebruiken en profielinformatie opslaan in een tweede tabel, het is gebruikelijk voor de meeste grotere websites om de database te de-normaliseren (twitter, facebook) om betere leesprestaties te bereiken ten koste van tragere schrijfprestaties.

Ik zou denken dat het waarschijnlijk de beste keuze is om de profielinformatie in een tweede tabel te bewaren als je naar 50.000 records kijkt. Voor optimale prestaties wilt u gegevens die zwaar zijn geschreven gescheiden houden van gegevens die zwaar worden gelezen om ervoor te zorgen dat de cache effectief kan werken.



  1. RAWTONHEX() Functie in Oracle

  2. Veelvoorkomende fouten in het ER-diagram

  3. MySQL Databases vergelijken

  4. Lijst van alle databases van een gekoppelde server in SQL Server (T-SQL-voorbeelden)