Python Django SQL vraag (1 foreign key naar 2 modellen)

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Yariva
  • Registratie: November 2012
  • Laatst online: 02-10 13:21

Yariva

Moderator Internet & Netwerken

Power to the people!

Topicstarter
Mijn vraag
Ik zit in de knel met het volgende scenario. Ik ben bezig om een concept design te maken voor het modeleren van firewall policy's en de bijbehorende administratie hiervan. Echter zijn die policy's van nature vrij flexibel:

- 1 Policy heeft een source en destination field
- Beide velden kunnen meerdere host objecten of group objecten hebben
- Een host object is in deze context bijvoorbeeld een enkel systeem met IP adres
- Een group object is een groep / verzameling van host objecten
- De groepen en hosts kunnen uiteraard worden gelinkt aan meerdere policy's

Het zelfde trucje voor bijvoorbeeld de services van een policy. Deze services kunnen ook in een groep zitten of los aan een policy worden gekoppeld. Of voor zones. Een policy kan redelijk generiek worden opgesteld zoals "algemene DNS verkeer door het netwerk heen" en kan dan ook op meerdere zones op een firewall actief zijn.

Zelf heb ik een plaatje gemaakt welke het DB schema iets beter visueel laat zien. Echter de conversieslag naar Django vind ik nog lastig. Daarnaast is er misschien wel een betere manier voor het bovenstaande scenario. In de afbeelding zijn een aantal schema's zoals "host_group". Omdat het lastig is in dbdiagram.io om manytomany relaties te modeleren heb ik het op deze manier aangepakt. Echter in Django pak ik gewoon het ManyToMany model en laat ik het Django op de achtergrond wel regelen.

Nu heb ik even rond gekeken maar er zijn echt meerdere wegen naar Rome voor deze constructie. Ik ben heel benieuwd vanuit de iets meer ervaren programmeurs hoe zij dit model zouden aanpakken.

Relevante software en hardware die ik gebruik
Python 3.8
Django 3.1

Wat ik al gevonden of geprobeerd heb
- Gegeken in Git documentatie van soortgelijke constructies
- Online gekeken naar algemeen advies en documentatie:
https://www.reddit.com/r/...ith_a_foreign_key_to_two/
https://stackoverflow.com...gn-key-to-multiple-tables
https://docs.djangoprojec...ttypes/#generic-relations

Mensen zijn gelijk, maar sommige zijn gelijker dan andere | Humans need not apply

Alle reacties


Acties:
  • 0 Henk 'm!

  • Knutselsmurf
  • Registratie: December 2000
  • Nu online

Knutselsmurf

LED's make things better

Ik denk dat het eenvoudigst is om in je datamodel een policy alleen maar te laten wijzen naar een group-object.

In de gevallen waarin er sprake is van een enkel host-object, maak je een group aan met daarin slechts 1 host.
Voor het toepassen van de policy maakt het immers verder niet uit of een group 1 specifieke host bevat of meerdere. Eventueel kun je als eigenschap van de group bijhouden of dit een 'single-host'-group is.

De verdere logica en weergave houd je dan buiten je database

- This line is intentionally left blank -