Jako żółtodziób w temacie baz danych mam kilka pytań.
1.) Jakie są wady/zalety poszczególnych rozwiązań takiego przykładowego problemu(proszę nie zwracać uwagi na ewentualne błędy składniowe:P)
a.) wariant A:
CREATE TABLE general_data(id integer primary key,value integer,factor real,changeset_id integer references changesets(id));
CREATE TABLE changesets(id integer primary key, author character(32), timestamp integer);
b.) wariant B:
CREATE TABLE author_jasio_data(id integer primary key, value integer, factor real);
CREATE TABLE author_jasio_changesets(id integer primary key, timestamp integer);
W wariancie 'A' wszystkie dane są w jednej tabeli, w wariancie drugim każdy 'twórca' ma własną tabelę. Czy ma to jakiś wpływ na wydajność/szybkość/zrównoleglanie/wielowątkowość zapytań?
2.) Czy jest możliwość ustawienia poziomu dostępu (tylko odczyt/tylko zapis/brak podglądu) dla danego użytkownika dla konkretnych wierszy danej tabeli? Np. użytkownik XXX może edytować tylko te wiersze w których wartość kolumny YYY jest równa lub większa od ZZZ.
3.) Jakie materiały polecilibyście do nauki PostgreSQL? (wyłączając wszelkie 'kursy na youtube')
4.) Jakie rozwiązanie preferujecie w takim przypadku:
a.) CREATE TABLE some_table(id integer primary key, multivalue integer[]);
b.) CREATE TABLE some_table(id integer primary key, count integer, first_index integer references some_table_valueslist(id));
CREATE TABLE some_table_valueslist(id integer primary key, value integer);
Czy array jako typ bezpośrednio w tabeli czy zestaw (ilość+indeks) i oddzielna tabela wspólna dla wszystkich rekordów z tabeli głównej?
PS. Mam nadzieję, że tym razem @olesio nie będzie na mnie krzyczał z powodu tagów ;)