1

Temat: 3 firmy, jedna tabela i edycja danych

Witam wszystkich,

czy w postgres można zrealizować następującą funkcjonalność i w jaki sposób


mam bazę danych SKLEP
i tabelę TOWARY


oraz trzy firmy (role) firma1, firma2, firma3, kupujący


w jaki posób mogę

1. prezentować całość dla kupujący w trybie read-only
2. firmie 1 prezentować jedynie dane, któtrej niejako właścicielem będzie firma 1 (może dodawać nowe rekordy) w trybie read/write -> to, co doda może usunąć i zedytować
3. firmie 2 - identycznie
3. firmie 3 identycznie

innymi słowy - żadna z firm nie może podglądnąć ani zmienić ani usunąć danych firmy 1, 2 lub 3 (tak jakby konkurencja) za to kupujący może widzieć całość danych w trybie read-only.


czy może lepiej dla każdej z firm utworzyć osobną tabelę, do której będzie miała dostęp (taki sam schemat tabeli) i jakoś utworzyć połączenie tych tablel dla kupującego.

czy mogę prosić o jakieś przykłady w sql?
dziękuję




ps2. interesuje mnie też problem niejako logowania się do bazy przed np. 100 użytkowników z podobną funkcjonalnościa - każdy widzi dane każdego innego użytkownika, ale może edytować tylko to, co sam doda - innych dane są nienaruszalne  i drugi problem - mając jedną tabelę, wyświetlić tylko JEGO dane (czyli user100 widzi tylko własne dane a user 101 tylko dane user101)

Mam nadzieję, że niezbyt zawile to wytłumaczyłem i proszę o pomoc


ps3. w jaki spsób wyłaczyć funkcjonalność (8.3), że logujący się użytkownik przez pgadmina widzi inne role (a zatem już ma prościej, żeby zgadnąć hasło) i inne tabele i bazy .... chciałbym, żeby widział tylko to, co chcę, aby widział - czy może to jakoś z tym widokiem public należy rozwiazać ... (wcześniej miałem do czynienia z mysql i takie zjawisko nie występowało, aby widoczne były inne bazy, tabele i użytkownicy)


Dziękuję!

2

Odp: 3 firmy, jedna tabela i edycja danych

Tak na szybko

Ad 1.
Zabrać prawa update, delete, insert, albo zdefiniować widok

Ad 2.
Nałożyć trigger który przed insert,update,delete sprawdzi czy rola wykonująca ma do tego prawa ale przy założeniu, że każdy wiersz zawiera informację, kto go stworzył. Uwaga: Jak na bazie idzie wiele (tysiace na minute) polecen insert/update/delete no to cos takiego spowolni wykonywanie tych operacji.