sql >> Database >  >> RDS >> Mysql

Dynamische databasetabellen in django

Een interessante vraag, die wellicht van groter belang is.

Het maken van één tabel per gebruiker is een onderhoudsnachtmerrie. U moet in plaats daarvan één enkele tabel definiëren om alle gebruikersgegevens te bevatten en vervolgens de mogelijkheden van de database gebruiken om alleen die rijen op te halen die betrekking hebben op de gebruiker van interesse (na zo nodig de machtigingen te hebben gecontroleerd, aangezien het geen goed idee is om een ​​gebruiker onbeperkt toegang tot de gegevens van een andere gebruiker zonder dat specifieke machtigingen zijn ingesteld).

Om uw voorgestelde oplossing over te nemen, moet u SQL-instructies maken die de tabelnaam van de relevante gebruiker bevatten. Opeenvolgende query's naar de database zullen meestal anders zijn, en dit zal het werk vertragen omdat elke SQL-instructie moet worden "voorbereid" (de syntaxis moet worden gecontroleerd, de namen van tabel en kolommen moeten worden geverifieerd, de toestemming van de verzoekende gebruiker om toegang te krijgen tot de genoemde bronnen moet worden geautoriseerd, enzovoort).

Door een enkele tabel (model) te gebruiken, kunnen dezelfde zoekopdrachten herhaaldelijk worden gebruikt, met parameters die worden gebruikt om specifieke gegevenswaarden te variëren (in dit geval de naam van de gebruiker wiens gegevens worden gezocht). Uw databasewerk gaat sneller vooruit, u heeft slechts één model nodig om alle gebruikersgegevens te beschrijven en databasebeheer zal geen nachtmerrie zijn.

Een ander voordeel is dat Django (die u lijkt te gebruiken) een uitgebreid gebruikersgebaseerd machtigingsmodel heeft en eenvoudig kan worden gebruikt om gebruikersaanmeldingen te verifiëren (als u eenmaal weet hoe). Deze voordelen zijn zo overtuigend dat ik hoop dat u uw ketterij herroept en besluit dat u weg kunt komen met een enkele tabel (en, als u van plan bent om standaard Django-aanmeldingen te gebruiken, een relatie met het gebruikersmodel dat een centraal onderdeel vormt van elke Django project).

Aarzel niet om meer vragen te stellen terwijl u doorgaat. Het lijkt erop dat databasewerk nieuw voor u is en daarom heb ik geprobeerd een passend detailniveau weer te geven. Er zijn veel van dit soort valkuilen als u geen toegang heeft tot deskundig advies. Mensen op SO zullen je helpen.



  1. Een Entity Framework-model maken dat meerdere databases omvat

  2. MYSQL EN vraag om te voldoen aan dezelfde kolom

  3. Stel mySQL MAX-waarde in op java-variabele

  4. Hoe vind ik de gegevensmap voor een SQL Server-instantie?