Closed jaanos closed 5 years ago
Pozdravljeni,
vse težave so odpravljene razen težave z bazo. Imamo sledeče probleme:
1.) Tabele si lastita dva različna uporabnika (javnost in barbarar). Ko želimo lastništvo iz javnosti prenesti na barbarar s kodo: ALTER TABLE oglas OWNER TO barbarar
nam javi napako: ERROR: must be member of role "barbarar"
. Po brskanju po internetu smo ugotovile, da lahko lastništvo menja le superuser. Kdo je superuser v našem primeru? Kaj lahko naredimo?
2.) Ker imata tabeli različna lastnika, ne moremo dodajati foreign key-a.
3.) Dodale smo novo tabelo 'druzina', v kateri imamo id_druzine, ime družine in sklanjano ime družine. Rade bi se iz tabele pasma, v stolpcu druzina, sklicevale na to tabelo oz. na id_druzine. To pomeni, da moramo type stolpca druzina iz texta spremeniti v integer. Kako lahko to naredimo?
Bi se lahko v zvezi s temi vprašanji oglasile na govorilni uri?
Hvala za odgovor,
Sara, Sandra in Barbara
Superuser sem jaz, tako da sem spremenil lastništvo tabel oglas
in uporabniki
na barbarar
. Za ostale pravice prosim poskrbite same. To bi moralo rešiti tudi drugo točko.
Kar se tabele druzina
tiče, bo najbolje, če najprej dodaste ustrezen stolpec za družino, nastavite ustrezne vrednosti, nato pa starega pobrišete. Šlo bi nekako tako:
ALTER TABLE pasma ADD COLUMN id_druzine integer REFERENCES druzina(id_druzine);
UPDATE pasma SET id_druzine = druzina.id_druzine
FROM druzina
WHERE pasma.druzina = druzina.druzina;
ALTER TABLE pasma DROP COLUMN druzina;
Za govorilno uro ta teden veliko časa najbrž ne bom imel (morda edino jutri med 11:30 in 12:15), tako da upam, da boste uspele rešiti.
Na repozitoriju vam manjka datoteka
.gitignore
, zaradi česar se vam je nanj izmuznila mapa__pycache__
, ki pa tja ne sodi, saj gre za avtomatsko generirane datoteke. Svetujem, da uporabite kar.gitignore
z vzorčnega repozitorija, ki že vsebuje vnos za__pycache__
(seveda jo lahko po potrebi še dopolnite). Mapo__pycache__
bo vseeno potrebno ročno pobrisati in to vključiti v commit. Po ponovnem zagonu aplikacije se bo sicer znova pojavila, a vam je zaradi.gitignore
git ne bo ponujal za ponovno vključitev v commit.Trenutno podatke vstavljate v poizvedbe z metodo
format
, kar lahko vodi do napadov SQL injection. Namesto tega podatke podajajte v seznamu kot drugi argument metodeexecute
, na njihovo mesto v poizvedbi pa postavite%s
, npr.Opažam še, da v bazi manjkajo tuji ključi v tabelah
komentar
(stolpcaid_uporabnika
inid_oglasa
) terposta
(stolpecregija
). Poleg tega so stolpcimin_*
inmax_*
v tabelipasma
tipatext
, čeprav bi morali biti tipainteger
- nekateri vnosi imajo sicer odvečne presledke, ki pa bi jih bilo treba porezati pri uvozu.Pri seznamu vseh pasem bi svetoval, da klik na pasmo prikaže stran o pasmi v vaši aplikaciji (tam je tudi že povezava na
dogtime.com
). Podobno bi svetoval tudi pri prikazu oglasa (čeprav tam klik na ime pasme v naslovu že prikaže vašo stran). Pri prikazu pasme lahko lepše sklanjate: spada v družino.