Vyvíjej vlastní projekty a expanduj do zahraničí! Přijď na 14. Affiliate konferenci v Praze
Zobrazují se odpovědi 1 až 4 z 4

Navrh SQL schemy

  1. Robim na systeme opravneni a prave riesim implementaciu sql schemy. Nikdy som nepouzival vnorene selecty ale kvoli rychlosti a praktickosti by som to tentokrat pominul. Takze ide o to navrhnut schemu tak, aby som vedel nacitat co potrebujem co najoptimalnejsie(idealne 1 query).

    Tu su objekty:
    Kód:
    Account {
      ID
    }
    
    Organization {
      ID
    }
    
    Membership {
      OrganizationID
      AccountID
    }
    
    Role {
      OrganizationID
    }
    
    RoleLink {
      RoleID
      oneof {
        MembershipID
        GroupID
      }
    }
    
    Group {
      OrganizationID
    }
    
    GroupLink {
      GroupID
      MembershipID
    }
    
    Permission {
      OrganizationID
    }
    
    PermissionLink {
      PermissionID
      RoleID
    }
    
    Policy {
      map[RoleID]{
        []Membership
        []Group
      }
    }
    Potrebujem vybudovat zoznam roli pre ktore potom mozem nacitat opravnenia, nasledovne(vsetko su id, nie cele objekty):
    Kód:
    - nacitaj vsetky membershipy pre account
      - pre kazdy membership nacitaj vsetky role
      - pre kazdy membership nacitaj skupiny
        - pre kazdu skupinu nacitaj role
    - pre kazdu najdenu politiku(logika tu nie je dolezita)
      - pozri ci ma membership ktory patri accountu a ak ano prirad rolu do zoznamu
      - pre kazdu skupinu nacitaj membershipy a ak sa zhoduju s accountom, prirad rolu do zoznamu
    na koniec: pre vsetky najdene role nacitaj opravnenia

    Název:  your-hard-work-meme.jpg
Zobrazení: 190
Velikost:  59,4 KB

  2. Co se právě děje na Webtrhu?
  3. premyslel jsi nad moznosti mit role per account? V organizaci budes mit typicky admina a dalsi useri z org muzou mit nizsi prava. Premyslel bych nad tim zakomponovat do toho jeste entitu 'OrganizationAdmin'. V budoucnu ta potreba treba muze vzniknout a pak se to blbe upravuje

  4. a v jakém jazyku to píšeš? Asi bych se vykašlal na myšlenku vše jedním dotazem a nebál se jich pužívat více s where in.

    Koukal jsi jak řeší schéma již existující věci? Namátkou:
    - Spring https://docs.spring.io/spring-securi...ix-schema.html
    - Apache sentry https://github.com/apache/sentry/blo...ysql-2.1.0.sql

    Ve většina jazyků jsou již nějaké balíčky, které to řeší, nemusíš to dělat znovu. Nechceš udělat nějaký ER diagram, vazby by z toho byly vidět lépe? Moc nerozumím tvému zápisu, ptáš se na sql, ale zápis máš nějaký jiný. Na první otázky je snadná odpověď

    1. pre kazdy membership nacitaj vsetky role

    Kód:
    select distinct Membership.id, role.id
    FROM Membership
    JOIN Role on Role.OrganizationID = Membership.OrganizationID
    [WHERE Membership.id = XXX]
    2. pre kazdy membership nacitaj skupiny

    Kód:
    select distinct Membership.id, group.id
    FROM Membership
    JOIN GroupLink on GroupLink.MembershipID = Membership.id
    JOIN Group on Group.id = GroupLink.GroupID
    [WHERE Membership.id = XXX]

    3. pre kazdu skupinu nacitaj role

    Kód:
    select distinct group.id, Role.id
    FROM Group
    JOIN RoleLink on RoleLink.GroupID = Group.id
    JOIN Role on Role.id = RoleLink.RoleID
    [WHERE Group.id = XXX]
    Na ty další je pro mě těžké vidět ty vazby, resp. co vůbec chceš načíst.

  5. jazyk/orm neries....
    vezby su prave v tych objektoch - su tam len idcka, nedaval som tam ziadne dalsie polia kvoli jednoduchosti.
    vezby su v tom co som pisal, ale ak toto pomoze tak:

    Kód:
    account -> membership -> role link -> role -> permission link -> permission
    account -> group link -> group -> role link -> role -> permission link -> permission
    ta politika grantuje rolu pre membership alebo pre skupinu(a cez nu membership).

    a samozrejme spravit to na 4 query viem, len som hladal nejake chutrejsie riesenei a optimalizovanejsi navrh sql schemy.

    ps: membership spaja account a organizaciu, role link spaja rolu a membership ALEBO skupinu, premissions link spaja opravnenie a rolu, group link spaja skupinu a memebrship.

Hostujeme u Server powered by TELE3