Toon posts:

Database constructie discussie

Pagina: 1
Acties:

Onderwerpen


  • nemo55
  • Registratie: februari 2004
  • Laatst online: 21-09 23:07
Momenteel op heb ik een discussie met een collega hoe we een database het beste kunnen wijzigen om een nieuwe functionaliteit toe te voegen.

Ik zou graag jullie mening willen horen over het volgende:

Op het moment is het zo ingericht dat een user gekoppeld is aan één onderneming. In een aparte tabel worden de rechten voor de user bijgehouden. Nu gaat een user aan meerdere ondernemingen gekoppeld worden waarvoor per onderneming de rechten ingesteld dienen te worden. Daarnaast moet in de applicatie aangegeven kunnen worden of het mogelijk is om voor een bepaalde user om bepaalde rechten voor een bepaalde onderneming toegewezen te kunnen krijgen.

De huidige situatie ziet er versimpeld als volgt uit:
onderneming
parentid


users
userid


rechten
userid
recht


De parentid in de tabel onderneming geeft aan onder welke andere onderneming (holding) deze valt. Hierdoor vallen er meerdere users (welke gekoppeld zijn aan een onderneming) onder één onderneming of meerdere ondernemingen.

In de applicatie kan je verder een user aan een onderneming koppelen zonder rechten te geven. De bedoeling is dat deze automatisch geërfd worden van de hoofdonderneming.

Om de rechten hiervoor vast te leggen lijkt het mij gewoon het handigst om aan de tabel rechten een onderneming-id toe te voegen. Hier kan dan een recht aan toegevoegd worden om aan te geven of het mogelijk is om voor die user icm die onderneming rechten te geven of niet.

Mijn collega lijkt het beter om de volgende tabel erbij toe te voegen. Hierin geef je dan apart aan of het mogelijk is om voor de user icm die onderneming rechten in te stellen of niet.

userondernemingen
userid
ondernemingid
type


Mij lijkt het juist dubbelop. Aangezien je de relatie al uit de tabel onderneming en user kan halen daarnaast is er nog een tabel waaruit deze relatie te halen is :X En aan de hand van de tabel rechten kan je dan zien of de gebruiker rechten toegewezen kan krijgen voor die onderneming.

Wat is jullie mening als je kijkt naar efficiency, snelheid en overzichtelijkheid?

Mocht ik belangrijk info zijn vergeten of is het niet duidelijk dan hoor ik het wel.

  • armageddon_2k1
  • Registratie: september 2001
  • Laatst online: 12:01
Mag ik vragen hoe je zonder die koppeltabel weet bij welke onderneming welke user hoort?

Die van je collega is slim als je zou willen dat een user bij meerdere ondernemingen zou horen. Is dit niet nodig, dan volstaat een ondernemingid in de usertabel.

[Voor 48% gewijzigd door armageddon_2k1 op 05-10-2010 18:20]


  • Currahee
  • Registratie: november 2004
  • Laatst online: 21-09 22:16

Currahee

3 miles up, 3 miles down!

Je verhaal is niet al te duidelijk, maar ik zou het op de volgende manier doen (voor zover ik het begrijp).

Bedrijven
  • Bedrijfid
  • Standaard rechten (dus bij gewone koppeling)
Users
  • Userid
Koppeling user / bedrijf (zodat er meerdere bedrijven aan één user kunnen worden meegegeven)
  • Koppelingid
  • Userid
  • Bedrijfsid
  • Rechten (0 = Standaard Rechten, 1 = Speciale Rechten)
Eventueel zou je dan nog een aparte tabel kunnen maken met daarin de speciale rechten gekoppeld aan een koppelingsid, maar ik weet niet hoe complex dat in elkaar zit.

  • cariolive23
  • Registratie: januari 2007
  • Laatst online: 03-06 14:52
Currahee schreef op dinsdag 05 oktober 2010 @ 18:56:
• Rechten (0 = Standaard Rechten, 1 = Speciale Rechten)
Wat voor de één standaard is, is voor de ander speciaal. Dit zegt dus helemaal niks, heeft dus geen zin. Geef rechten of geef geen rechten, daar zit niks tussenin. Ik ben van mening dat rechten altijd speciaal zijn, anders had je ze niet.

Kijk ook eens naar ACL of RBAC, al is het maar om ideeën op te doen over het inrichten van permissies.

  • nemo55
  • Registratie: februari 2004
  • Laatst online: 21-09 23:07
armageddon_2k1 schreef op dinsdag 05 oktober 2010 @ 18:20:
Mag ik vragen hoe je zonder die koppeltabel weet bij welke onderneming welke user hoort?
Een id in de ondernemingstabel geeft aan welke (hoofd)user er bij dat bedrijf hoort. Een user heeft weer (sub)users onder zich. Die subs zijn in dit voorbeeld even niet belangrijk dus vergeet die maar weer.
Die van je collega is slim als je zou willen dat een user bij meerdere ondernemingen zou horen. Is dit niet nodig, dan volstaat een ondernemingid in de usertabel.
Het is inderdaad de bedoeling om een user onder meerdere ondernemingen te laten vallen. Dit word echter al gedaan dmv een id van een andere user bij de user zelf op te slaan wat dan fungeert als een soort van beheerder-id. Bij die "beheerder"(user) staat dan het id van het bedrijf waar die bij hoort.

Geen handige structuur, maar helaas wel één waar we voorlopig nog even mee moeten werken.
Currahee schreef op dinsdag 05 oktober 2010 @ 18:56:
Je verhaal is niet al te duidelijk, maar ik zou het op de volgende manier doen (voor zover ik het begrijp).
...
Jouw structuur is inderdaad een juiste voor de situatie. Helaas kunnen/mogen we dit nog niet wijzigen. Dit is te ingrijpend op de bestaande situatie dus we proberen het met een zo klein mogelijke aanpassing.
cariolive23 schreef op dinsdag 05 oktober 2010 @ 21:30:
[...]

Wat voor de één standaard is, is voor de ander speciaal. Dit zegt dus helemaal niks, heeft dus geen zin. Geef rechten of geef geen rechten, daar zit niks tussenin. Ik ben van mening dat rechten altijd speciaal zijn, anders had je ze niet.
Misschien bedoelde hij afwijkende rechten ipv standaard rechten.
Kijk ook eens naar ACL of RBAC, al is het maar om ideeën op te doen over het inrichten van permissies.
Bedankt, ik al er zeker naar kijken, maar ik ben bang dat dat ook naar een te ingrijpende herstructurering zal leiden voor het moment. Er zal echt gekeken moeten worden naar één van de twee genoemde oplossingen.

[Voor 7% gewijzigd door nemo55 op 06-10-2010 01:15]


  • RobIII
  • Registratie: december 2001
  • Laatst online: 09:45

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

Waar hoort mijn topic?
PRG >> SEA
nemo55 schreef op woensdag 06 oktober 2010 @ 01:13:
Helaas kunnen/mogen we dit nog niet wijzigen. Dit is te ingrijpend op de bestaande situatie dus we proberen het met een zo klein mogelijke aanpassing.
Dan is het wel handig dit soort zaken voortaan even in je topicstart te vermelden; nergens in je topicstart rep je over dat het zoveel mogelijk moet blijven zoals het is en/of waar je dan wel/niet aan kunt/mag komen. Je hebt het over "hoe we een database het beste kunnen wijzigen om een nieuwe functionaliteit toe te voegen" maar nergens zie ik deze beperkingen terug in je topicstart waarmee je impliceert dat je dus kunt wijzigen wat je wil.

[Voor 77% gewijzigd door RobIII op 06-10-2010 01:54]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Roses are red Violets are blue, Unexpected ‘{‘ on line 32.

Over mij


  • nemo55
  • Registratie: februari 2004
  • Laatst online: 21-09 23:07
Excuses (ook voor het misplaatsen van het topic). Dacht dat ik wel duidelijk was geweest dat het ging om de twee opties die genoemd werden in de ts, maar na het lezen van de reacties en het nogmaals doornemen van de ts is dat inderdaad niet helemaal het geval.

Daarnaast is het natuurlijk niet erg als mensen met andere oplossingen aankomen die ook minimale wijzigingen vereisen en eventueel toepasbaar zouden zijn, maar het gaat mij in eerste instantie om die twee keuzes.

  • Hydra
  • Registratie: september 2000
  • Laatst online: 12:18
Ik zou niet voor een User > Rechten systeem gaan maar voor een User > Role > Rechten systeem gaan. Je kunt rechten toewijzen aan rollen, en users een rol laten uitvoeren. Zo heb je bijvoorbeeld een generieke "Admin" rol, maar kun je ook rollen per bedrijf hebben. En een user kan meerdere rollen hebben.

https://niels.nu


  • nemo55
  • Registratie: februari 2004
  • Laatst online: 21-09 23:07
Dit is alleen handig als er sprake is van rollen. In deze applicatie zijn die er niet en kunnen verschillende users totaal verschillende rechten hebben op bepaalde onderdelen van de desbetreffende onderneming welke ingesteld worden door de hoofdgebruiker van de onderneming.

  • Hydra
  • Registratie: september 2000
  • Laatst online: 12:18
nemo55 schreef op woensdag 06 oktober 2010 @ 16:44:
Dit is alleen handig als er sprake is van rollen. In deze applicatie zijn die er niet en kunnen verschillende users totaal verschillende rechten hebben op bepaalde onderdelen van de desbetreffende onderneming welke ingesteld worden door de hoofdgebruiker van de onderneming.
Er kan prima sprake zijn van 1 user/rol, dat doet er verder niet toe. Het gaat me er om dat je users loskoppelt van rechtensets.

https://niels.nu


  • nemo55
  • Registratie: februari 2004
  • Laatst online: 21-09 23:07
Hydra schreef op woensdag 06 oktober 2010 @ 17:10:
[...]


Er kan prima sprake zijn van 1 user/rol, dat doet er verder niet toe. Het gaat me er om dat je users loskoppelt van rechtensets.
In de huidige situatie is dat ook zo en deze scheiding zou ik ook zo willen houden. Met de wijziging van mijn collega leg je iets wat met rechten te maken heeft vast in een aparte tabel (usersondernemingen) wat voor mij nogal onlogisch overkomt en de hele dataset alleen maar verwarrender maakt dan het al is.

Qua performance zou het misschien sneller kunnen zijn omdat je dan snel even in een kleine tabel kan kijken of een user wel gekoppeld is (en dus rechten toegewezen kan krijgen) op die bepaalde onderneming.

Het druist alleen tegen mijn principes in om extra tabellen aan te gaan maken om data te verkrijgen die in principe al uit de database te halen valt en dat terwijl de extra functionaliteit al te verkrijgen is met een simpele toevoeging van een extra type aan rechten.

Ik moet alleen hem nog zien te overtuigen :)

  • Ventieldopje
  • Registratie: december 2005
  • Nu online

Ventieldopje

I'm not your pal, mate!

voeg het ondernemings id (parentid?) toe aan de rechten tabel, en maak een nieuwe regel aan voor elke onderneming de gebruiker in zit, zo kun je de rechten per onderneming instellen :)

www.maartendeboer.net
Mijn sig is te klein :+


  • nemo55
  • Registratie: februari 2004
  • Laatst online: 21-09 23:07
Phas0r schreef op woensdag 06 oktober 2010 @ 23:07:
voeg het ondernemings id (parentid?) toe aan de rechten tabel, en maak een nieuwe regel aan voor elke onderneming de gebruiker in zit, zo kun je de rechten per onderneming instellen :)
precies
Om de rechten hiervoor vast te leggen lijkt het mij gewoon het handigst om aan de tabel rechten een onderneming-id toe te voegen.
Alleen dan niet met het parent-id maar het id van de onderneming zelf. parent-id geeft aan van welke andere onderneming deze een dochter is.
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee