Portál AbcLinuxu, 8. května 2025 13:50

Dotaz: Uložení hiearchického systému oprávnění

1.12.2010 09:52 spesto
Uložení hiearchického systému oprávnění
Přečteno: 299×
Odpovědět | Admin
Dobrý den. Pro svou aplikaci bych potřeboval ukládat uživatelská oprávnění v databázi (v mysql). Jde v zásadě o toto:
seznam uživatelů (výtah z několika samostatných tabulek, vztah mezi jménem a skupinou je M:N)
----------------
(jméno    email     skupina)
Potřebuju uložit taková oprávnění, aby bylo možné říct že admin má oprávnění číst uživatele, jejichž jméno je "%en_", email je ..., nachází se ve skupinách ... nebo jejichž jméno je ..., email je ... ...., pak třeba vybrat uživatele, u kterých má admin oprávnění měnit email apod. Je to docela složitá struktura. Rád bych to uložil tak, abych se mohl databáze zeptat dotazem typu (CALL mamOpravneni(jmeno_admina, jmeno_uzivatele, typ_pristupu[cteni, zapisovani...])). Nemáte tušení jakou strukturu musí mít tabulky aby šlo toto uložit? Zkoušel jsem to ukládat do jednoho sloupce jako serializované pole a všechnu logiku provádět v aplikaci, ale tudy cesta nevede.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

1.12.2010 10:14 spesto
Rozbalit Rozbalit vše Re: Uložení hiearchického systému oprávnění
Odpovědět | | Sbalit | Link | Blokovat | Admin
Vlastně hlavním kamenem úrazu jsou wildcard znaky v názvech jmen a emailů, protože potřebuju aby mi
select username from tabulka where username = 'jmeno';
A v tabulce mám uloženo username jako "%meno" a já potřebuju aby mi to ten řádek vrátílo. Je to vlastně takový opačný like.
1.12.2010 19:25 jekub
Rozbalit Rozbalit vše Re: Uložení hiearchického systému oprávnění
Je to vlastně takový opačný like.

No tak to prostě napište opačně.
create table like_tbl(like_col varchar(100));
insert into like_tbl values('%meno');
select * from like_tbl where 'jmeno' like like_col;

LIKE_COL
-------------------------------------------------------

%meno
1.12.2010 20:16 spesto
Rozbalit Rozbalit vše Re: Uložení hiearchického systému oprávnění
To není tak jednoduché. _ je v mysql like wildcard, ale také je to znak vyskytující se v uživatelských jménech, takto nemohu rozhodnout jak ten znak chápat.
2.12.2010 21:13 hosszu
Rozbalit Rozbalit vše Re: Uložení hiearchického systému oprávnění
Odpovědět | | Sbalit | Link | Blokovat | Admin
Dobrý den,

hierarchické data v jedné tabulce přímo podporuje Oracle - ten je taky ve freeware verzi. V MYSQL použijte technologii "nested sets", je to vcelku jednoduché na pochopení, akorát na insert/update/select si budete muset napsat stored procedure aby se nerozhodila integrita. více zde: http://dev.mysql.com/tech-resources/articles/hierarchical-data.html anebo mne kontaktujte na emailu, nechodím sem číst pravidelně.

Zdraví

T.H.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.