Voor een bepaalde website heeft elke gebruiker een eigen profel, de profiel gegevens zijn door de beheerder aan te passen. dit houd in dat ik 3 tabellen gebruik:
Als een profiel word toegevoegd kan je ervoor kiezen om meteen alle velden in de koppeltabel te plaatsen, ookal zijn ze leeg, hierdoor krijg je heel veel lege rijen wat nutteloos is.
Als je alleen de ingevulde velden opslaat en de persoon update zijn profiel kun je geen simpele update query gebruiken maar moet je een mix van updates en inserts gebruiken waardoor het nodeloos ingewikkeld word en je grotere kans hebt op corrupte data.
Een andere optie is om gebruik te maken van transacties, waarbij je eerst alle data verwijderd en vervolgens insert, met als nadeel dat je gebruik moet maken InnoDB en je twee queries hebt, hierdoor worden dingen wederom langzamer.
Verder heb je soortgelijke problemen als de beheerder nieuwe velden toevoegd of verwijderd.
Wat is volgens jullie de gulden middenweg, of zijn er nog opties die ik over het hoofd zie?
- profile (profile_id, en vaste profiel gegevens)
- profile_fields (field_id, field_name)
- profile_data (data_id, profile_id, field_id, content)
Als een profiel word toegevoegd kan je ervoor kiezen om meteen alle velden in de koppeltabel te plaatsen, ookal zijn ze leeg, hierdoor krijg je heel veel lege rijen wat nutteloos is.
Als je alleen de ingevulde velden opslaat en de persoon update zijn profiel kun je geen simpele update query gebruiken maar moet je een mix van updates en inserts gebruiken waardoor het nodeloos ingewikkeld word en je grotere kans hebt op corrupte data.
Een andere optie is om gebruik te maken van transacties, waarbij je eerst alle data verwijderd en vervolgens insert, met als nadeel dat je gebruik moet maken InnoDB en je twee queries hebt, hierdoor worden dingen wederom langzamer.
Verder heb je soortgelijke problemen als de beheerder nieuwe velden toevoegd of verwijderd.
Wat is volgens jullie de gulden middenweg, of zijn er nog opties die ik over het hoofd zie?