TIS2017 / Nobelisti

0 stars 0 forks source link

Vytvorit databazovy model #9

Closed ZoltanOnody closed 6 years ago

ZoltanOnody commented 6 years ago

Budeme pouzivat Doctrine ORM.

Predbezny navrh modelu:

event

miesto_konania

registracia

mailinglist

ZoltanOnody commented 6 years ago
BEGIN;
--
-- Create model Event
--
CREATE TABLE "nobelisti_event" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    "title" varchar(100) NOT NULL,
    "slug" varchar(50) NOT NULL,
    "organizers" text NOT NULL, -- semicolon separated email addresses
    "template" varchar(100) NOT NULL, -- path to the template folder
    "email_trash_hold" integer unsigned NOT NULL); -- in days
--
-- Create model Talk
--
CREATE TABLE "nobelisti_talk" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    "title" varchar(100) NOT NULL,
    "address" text NOT NULL,
    "date" datetime NOT NULL,
    "registration_end" datetime NOT NULL,
    "capacity" integer unsigned NOT NULL,
    "event_id" integer NOT NULL REFERENCES "nobelisti_event" ("id"));
--
-- Create model MailingList
--
CREATE TABLE "nobelisti_mailinglist" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    "first_name" varchar(100) NOT NULL,
    "last_name" varchar(100) NOT NULL,
    "email" varchar(100) NOT NULL UNIQUE,
    "language" varchar(5) NOT NULL,
    "unsubscribed" bool NOT NULL,
    "created" datetime NOT NULL);
--
-- Create model Registration
--
CREATE TABLE "nobelisti_registration" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT,
    "first_name" varchar(100) NOT NULL,
    "last_name" varchar(100) NOT NULL,
    "email" varchar(100) NOT NULL,
    "language" varchar(5) NOT NULL,
    "code" integer NOT NULL UNIQUE,
    "created" datetime NOT NULL);

COMMIT;

@Saamoot co na to vravis? (+ samozrejme bude model Admin, na registraciu tak ako sme sa dohodli,...)

andrejjursa commented 6 years ago

@ZoltanOnody mne to pride, ze registracia a mailinglist obsahuje redundantne data, naviac registracia ani nema odkaz na talk?

ZoltanOnody commented 6 years ago

Ten foreign key sa akosi stratil... Má tam samozrejme byť.

Obsahujú tie isté dáta no neberiem to ako bug. Mohli by sme to vytiahnuť(meno, email) do zvlášť tabuľky ale pribudli by tam zbytočné joiny + osobne som názoru že mailing list má byť samostatný model ktorý obsahuje všetky dáta.

Viem to aj zdôvodniť keď treba.

Saamoot commented 6 years ago

Vravim na to:

Pytam sa:

Ostatne:

Zhrnutie mimo vyssie spomenuteho, tabulky nobelisti_event a nobelisti_talk su fajn. Avsak tabulky nobelisti_mailinglist a nobelisti_registration su podla mna nedostacujuce na to co potrebujeme a zislo by sa ich upravit. Uprava by mala zahrnat hlavne zjednodusenie, momentalne potych dvoch tabulkach chcete privela. Zatial asi takto, nedovolim si tvrdit ze je to vsetko ale na zaciatok mi to pride ako postacujuce.

Trocha citania aj ked je to wiki ... database normalization

andrejjursa commented 6 years ago

Cize v momente registracie sa nahra clovek aj do mailing listu? Totizto ja som o tomto s @Saamoot hovoril minule, ked sme sa stretli, tusim v utorok, a prave sme rozmyslali nad tym, ze lokalny mailing list su vlastne registracie, ktore maju id daneho eventu (teda talku v tomto pripade ak ten model spavne chapem - tej casti co ma adresu, cas), potom globalny mailing list, ten kam sa posielaju promo emaily (dobry den drahy(a) Meno, dna toho a toho sa kona prednaska pana/pani o , kliknite sem aby ste sa zaregistroval(a)), tak tento mailing list je zoznam vsetkych registrovanych na vsetky eventy dopredu, treba uz len zabezpecit zrusenie platnosti subscripcie (flag v tabulke napr.), ktorym moze pouzivatel zrusit zasielanie sprav (napr. sa prosto na vsetky zaznami registracie z danym emailom nastavi disabled), a pri prihlasovani (registracia) bude jednoducho checkbox (suhlasim so zasielanim informacii o buducich prednaskach) - potom ak toto clovek nezaskrtne (nepovinna polozka), tak sa mu priamo do toho recordu zaskrtne, ze nechce dostavat spravy (ale len do toho jedneho noveho), tj. ak mal ostatne zrusene, stale nic nedostava, ak predtym mal registracie kde to ma povolene a nezrusil to, tak dostava stale na zaklade skorsieho suhlasu (ktory nerevokuje tym, ze nesuhlasi pri tejto konkretnej novej registracii) - druha moznost je, ze nesuhlasom zakaze povolenie dane v minulosti hned (tj. pri novej registracii v pripade nesuhlasu to da disabled flag na vsetky registracie)

pozn. nepamatam sa teraz, ci vy mate pouzit soft-delete, ak ano, tak aj soft-delete na registraciu by mohol sluzit ako zakaz odosielania (ale len pre tu konkretnu registraciu)

@Saamoot prosim ta skontroluj toto ci to sedi s tym, co sme hovorili v utork

@ZoltanOnody naco ma talk title? ten ma mat predsa event, nehovoriac, ze event nema description, co by asi mal mat, predsa treba dat vediet o com to bude, druha a velmi podstatna vec je nutnost lokalizacie textovych informacii (nazov, popis), teda dat, lebo switchnut web do EN a stale tam mat slovensky text nie je uplne ok, takze by som povedal, ze by tam mal byt model event_description s polozkami event_id, title, desc, language (minimalne)

andrejjursa commented 6 years ago

@Saamoot @ZoltanOnody nedame cez buduci tyzden stretnutie a doriesime tuto strukturu na mieste?

Saamoot commented 6 years ago

@andrejjursa @TIS2017/aaaa suhlasim zo stretnutim ja budem k dispozicii kazdy den pred obedom 09:00-10:00 a po obede 12:00-16:00, ratam minimalne s hodinou na stretnutie.

ZoltanOnody commented 6 years ago

Takto to vyzera, ked mame stretnutia: "Ja, Tomas, Andrej", "Tomas, Andrej", "Ja, Andrej",... kazdy vie o niecom inom a nakoniec sa vsetko robi na 5 krat.

  • v niekorych tabulkach je created a v niektorych nie
    • poprosim v kazdej tabulke mat created
    • do kazdej tabulky poprosim pridat stlpec updated (nemusi byt presne updated ale stlpec ma vraviet o tom, ked bol zaznam upraveny)
    • nech sa nastavi na aktualny datum pri "UPDATE"-ovani riadku (zaznamu)

Ok, nieje problem. Zatial som ho dal len na miestach kde som si myslel, ze to treba ale je to fajn mat vsade.

.- je potrebny prefix nobelisti ?

Myslim si, ze symfony bude generovat nejaky prefix, zato som ho tam dal aj ja. Zda sa to zamozrejme zmenit na hocico ine, navrhni nieco lepsie a nahradim to.

  • nobelisti_talk, mi nepride ako stastny (dobry) nazov tabulky

Ako by si to teda nazval?

  • v tabulke nobelisti_registration - nevidim spojenie s eventom (nobelisti_event alebo nobelisti_talk)

Ano, akosi som to stratil, ma tam byt spojenie na nobelisti_talk.

  • na co je urceny stlpec nobelisti_event.`email_trash_hold" ?

Presne na to ako pises. Premenujem to.

  • v tabulke nobelisti_talk poprosim vysvetlit ako planujete rozlisit "title"

Som sa nezamyslel predtym ako som to postol, title tam samozrejjme nebude. Vsetka lokalizacia bude riesena cez templaty.

  • stlpec nobelisti_mailinglist.unsubscribed. Otazka je: staci iba stlpec unsubscribed ?

Ano, staci. Napriklad tak ako to pospisal Andrej. Btw, jedina vasa poziadavka bola moznost odhlasenia sa zo vsetkych komernych emailov. Nic pokrocilejsie ste pri zadavani projektu nechceli.

- ani som to neposlal a asi som na to dosiel: adresa, kapacita + dalsie veci sa sa tykaju miesta treba spravit(navrhnut) lepsie

Mohol by si byt trocha konkretnejsi? Sprav to lepsie nieje moc informativne.

  • stlpec nobelisti_event.organizers

Kolko organizatorov ma bezny event? 5? Nemyslim si, ze je to nieco co treba prekomplikovat. Bude postacujuce tak ako som to navrhol, nebude s tym problem.

  • splnite zadanie ale je to dobre riesenie ? keby chcem nad takym stlpcom spravit select: "vyber vsetkych zadavatelov bez opakovania a vrat mi ich pocet" (sql only) ?

Pochybujem, ze toto niekedy bude potrebene ale aj keby tak nieco ako toto bude fungovat :-)

SELECT slug, (
    char_length(organizers) - 
    char_length(replace(organizers, '@', ''))
) AS num_of_organizers FROM nobelisti_event

K normalizacii tabuliek regisistration & mailinglist.

Vieme to znormalizovat no podla mna to nechceme robit. Dovody vidim napriklad:

  1. Clovek A sa zaregistruje na event. Zisti, ze nemoze ist lebo mu nieco do toho prislo ale chcel by darovat listok cloveku B. Napise teda adminovy, ze nech meno A zmenia na B pre dany listok. Takto to bude bezproblemove, no ak sa to znormalizuje bude to ohubu.
  2. Slecna A, ide na event 1. Vyda sa za niekoho. Chce sa registrovat na event 2, pod menom B no s rovnakym emailom. Zas to nieje mozne, pretoze v tabulke uz email je. Ok, tak teda updatnime meno v tabulke. S tym si vsak rozbijeme data, pretoze na evente 1 bola slecna A a na evente 2 bude slecna B a nie AA resp BB.
ZoltanOnody commented 6 years ago

Cize v momente registracie sa nahra clovek aj do mailing listu?

Ano. Dohodnite sa ako to ma teda byt, nieje problem spravit ani jedno z toho, no nemienim to prerabat, ked to bude uz hotove. Robim predsa waterfall.

@ZoltanOnody naco ma talk title?

Nebude mat. Rovnako ho zmazem aj pre event. Myslel som to ako internu informaciu v administracii. Ale tam vlastne staci zobrazit slug.

Vsetky data co sa budu lokalizacie tykat, budu ulozene v template, v nejakom en.json/sk.json/... subore ako bolo povedane na stretnuti.

@andrejjursa @Saamoot osobne si myslim, ze stretnutie je zbytocne. Este 2 iteracie cez github a doriesime to. Nemal by som problem sa stretnut avsak, zajtra nemozme kvoli Reactiveconf. pondelok,utorok,streda nieje skola a kedze su sviatky, nebude sa kazdy znas (konkretne Ja, Viki, Alex) zdrziavat v BA. Ostava nam teda stvrtok, ten nevyhovuje mne, Alex, Viki, (neviem ako je na tom Rado). Takze by sme to mohli dat na piatok. Co je 8dni od dnesneho dna. To by znamenalo, ze v podstate 8 dni na projekte nebudeme moct robit a bude nas potom tlacit deadline.

ZoltanOnody commented 6 years ago
BEGIN;
--
-- Create model Event
--
CREATE TABLE "nobelists_event" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "slug" varchar(50) NOT NULL, 
    "organizers" text NOT NULL, 
    "template" varchar(100) NOT NULL, 
    "notification_threshold" integer unsigned NOT NULL);
--
-- Create model EventDetails
--
CREATE TABLE "nobelists_eventdetails" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "address" text NOT NULL, 
    "date" datetime NOT NULL, 
    "registration_end" datetime NOT NULL, 
    "capacity" integer unsigned NOT NULL, 
    "event_id" integer NOT NULL REFERENCES "nobelists_event" ("id"));
--
-- Create model MailingList
--
CREATE TABLE "nobelists_mailinglist" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "first_name" varchar(100) NOT NULL, 
    "last_name" varchar(100) NOT NULL, 
    "email" varchar(100) NOT NULL UNIQUE, 
    "language" varchar(5) NOT NULL, 
    "unsubscribed" bool NOT NULL);
--
-- Create model Registration
--
CREATE TABLE "nobelists_registration" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "first_name" varchar(100) NOT NULL, 
    "last_name" varchar(100) NOT NULL, 
    "email" varchar(100) NOT NULL, 
    "language" varchar(5) NOT NULL, 
    "code" integer NOT NULL UNIQUE, 
    "talk_id" integer NOT NULL REFERENCES "nobelists_eventdetails" ("id"));
COMMIT;

Tu je upravena verzia. Zmeny s ktorymi som suhlasil som implementoval, k ostatnym sa mi prosim vyjadrite.

Saamoot commented 6 years ago

Tieto tri veci su nezlucitelne. Stretnutia su lepsie ako taketo pisanie ;)

Ok, nieje problem. Zatial som ho dal len na miestach kde som si myslel, ze to treba ale je to fajn mat vsade.

Pre istotu teda znova pisem stlpce: created, updated a deleted vsade

Myslim si, ze symfony bude generovat nejaky prefix, zato som ho tam dal aj ja. Zda sa to zamozrejme zmenit na hocico ine, navrhni nieco lepsie a nahradim to.

Prefix som hlavne spomenul lebo sa znova objavila kombinacia slovenciny a anglictiny to je zle, velmi zle. Takuto vec Vam budem vracat kym sa z toho niekto z nas nezblazni. Co sa tyka co bude sluzit ako prefix nieco co pomoze identifikovat aplikaciu a alebo tabulky kam/k comu patria.

nobelisti_talk - Ako by si to teda nazval?

Nazval by som to tak aby som vedel po precitani nazvu tabulky, ze to ma nieco spolocne s eventami ale nie je to ich program/obsah, kedze talk => hovorit, o com ta tabulka nevravi.

Som sa nezamyslel predtym ako som to postol, title tam samozrejjme nebude. Vsetka lokalizacia bude riesena cez templaty.

Tolko ste nam do tej administracie mohli dat, aby ste aspon trocha riesili lokalizaciu cez databazu. Chcete si to vyskusat len o tom neviete. ;)

Ano, staci. Napriklad tak ako to pospisal Andrej. Btw, jedina vasa poziadavka bola moznost odhlasenia sa zo vsetkych komernych emailov. Nic pokrocilejsie ste pri zadavani projektu nechceli.

Uff ... Dovod preco staci si mi nedal, a z toho co si napisal by som usudil, ze by som mal do poziadaviek davat, chcem mat moznost pridat event, upravit event a vymazat event (ak sa dobre pamatam toto v poziadavkach tiez, snad mi nedate quote kde je to napisane ... -_- ). To co ten popis situacie chcel povedat je: Clovek co sa odhlasil zo "spam"-u sa chce nan prihlasit znova ako to chcete riesit z jednym stlpcom ? Je to podla mna ocakavana funckionalita "spamovania" ako pri sprave(pridavat, mazat, upravovat) eventov.

nobelisti_event.address - Mohol by si byt trocha konkretnejsi? Sprav to lepsie nieje moc informativne.

Mohol ale to Vas oberiem o skusenost a Vase unikatne riesenie, ktore bude robit to co potrebujem ale inak ako to robim ja. Hint: adresa, kapacita + dalsie veci nemusi tam byt hned vsetko ale ak bude potreba nech je to mozne spravit.

Kolko organizatorov ma bezny event? 5? Nemyslim si, ze je to nieco co treba prekomplikovat. Bude postacujuce tak ako som to navrhol, nebude s tym problem.

Moj odhad je 90% bude mat jedneho "organizatora" a 10% 2+. A itak vravim, ze to ma zmysel a nie len ze to nebude komplikovanejsie ale bude to jednoduchsie. Problem nebudes mat ty, mozno ani ja ale niekto po nas a to nie postacujuce, to je rychle riesenie na splnenie ulohy. Itak praca zo "string"-ami nepatri do databazy, da sa, niekedy treba ale applikacie sa nehodnotia podla toho, ktora pouziva dlsiu query.

splnite zadanie ale je to dobre riesenie ? keby chcem nad takym stlpcom spravit select: "vyber vsetkych zadavatelov bez opakovania a vrat mi ich pocet" (sql only) ?

Nedalo mi a vyskusal som tvoje riesenie aby som si bol isty

SELECT slug, (
    char_length(organizers) - 
    char_length(replace(organizers, '@', ''))
) AS num_of_organizers FROM nobelisti_event

Sql vyhodi nespravny vysledok(vysledok obsahuje duplikaty) a aj keby je spravny musis to itak manualne scitat scriptom alebo dalsou query(nemas jeden riadok s cislom ale vela riadkov, ktore musis scitat) ... Takze mas neprehladne(clovekom zle citatelne) data nad ktorymi nemozes pouzit ORM "out of the box" a musis pisat fancy query aby si riesil zakladne operacie :) Takze tvoje riesenie nefunguje a nemozes pouzitat "kniznicu" (ORM) co mas na ulahcenie prace.

K normalizacii tabuliek regisistration & mailinglist. -- Vieme to znormalizovat no podla mna to nechceme robit. + priklad

  • Normalizaciu chces robit vzdy jediny dovod preco ju nespravit, je ze ... nenapada ma ani dobry dovod teraz, a urcite ju chces robit kedze na databazu nie je nic naviazane.
  • Tabulky nemusia byt 100% normovane(tak sa to povie ?) ale musia byt rozumne urobene (preto napriklad ten link na wiki ako referencia na "rozumne") co hlavne chcem dosiahnut je zmenit strukturu oboch tabulky nobelists_registration ta mi nepride ako dobre navrhnuta a tabulka nobelisti_mailinglist mi podla stlpcov nepride ako mailinglist ale ako user list table :)
  • ohladom prikladu dobra pripomienka nechcete nam na to spravit interface v backende? :) No ako riesenie na sledovanie zmien mat v dvoch tabulkach rovnake stlpce mi nepride ako idealne riesenie.

Ano. Dohodnite sa ako to ma teda byt, nieje problem spravit ani jedno z toho, no nemienim to prerabat, ked to bude uz hotove. Robim predsa waterfall.

Ci to bude treba prerabat zelezi od pociatocneho navrhu a ci treba nahrat cloveka pri registracii do mailing listu zalezi od navrhu. Ale rozhodnem nech je pokoj zaznam sa o cloveku sa spravi, ci sa bude pouzivat je ina tema :)

Nebude mat. Rovnako ho zmazem aj pre event. Myslel som to ako internu informaciu v administracii. Ale tam vlastne staci zobrazit slug.

Cize slug nebude generovany ale musime ho napisat ?

"talk_id" integer NOT NULL REFERENCES "nobelists_eventdetails" ("id"));

Tento riadok tiez treba upravit (naschval nevravim co).

Ja Vam nemozem povedat riesenie, kedze vy musite vyhotovit tento projekt. Keby Vam poviem riesenie robim pracu za Vas a moze to sposobit neplechu. Ja pri najhorsom dostanem po prstoch od andreja, P.Petrovica a mojej nadriadenej ale Vam to nemusia zaratat do hodnotenia kedze ste pracu nespravili vy. Mozno vymyslam horror ale nechcem byt zodpovedny za to ze stratite body.

Na temu stretnutia, mame 8dni na to aby sme sa mu vyhli, moze byt tak ? Z ineho pohladu velmi by som ocenil strenutie napisat takyto blok textu mi trva zalostne dlho ...

ZoltanOnody commented 6 years ago

Stretnutia su lepsie ako taketo pisanie ;)

Uhol pohladu, k tymto veciam sa vieme hocikedy vratit, k stretnutiu nie. Teda vieme, ked sa to nahrava, lenze v nahravke nefunguje "ctrl + f". Mne nerobi problem sa stretnut a prejst si to. Robi mi problem, kvoli tomu cestovat do BA ked mame dekanske volno. Ak s tym ty, andrej, moj tim, nemate problem, mozme dat v pondelok v priebehu dna hangout a stretnut sa v kyberpriestore.

kombinacia slovenciny a anglictiny to je zle, velmi zle.

Vieme o tom, snazime sa ju nekombinovat, no obcas sa pozabudneme. Kedze projekt sa vola Novelisti, tak mi prislo ako vhodny prefix meno projektu. To, ze to nieje anglicky som neriesil. Vo verzii 2. uz je to prelozene.

Chcete si to vyskusat len o tom neviete. ;)

Velmi rad o tom spravim hlasovanie, ja osobne nechcem, lebo viem, ze je to pain. Tento predmet podla mna sluzi na to, aby sme sa naucili pracovat v timoch, naucili sa komunikovat so zadavatelmi a dostali nejaky cit pre pisanie specifikacii/dokumentacii. Nemyslim si, ze je jeho cielom vyskusat si vsetky veci, ktore sa nam v zivote zidu. Hlavne ked sa to da aj bez nich.

Clovek co sa odhlasil zo "spam"-u sa chce nan prihlasit znova ako to chcete riesit z jednym stlpcom ?

V case ked je odhlaseny, spam nedostava. V case ked je prihlaseny spam dostava. Da sa to spravit napriklad tak ako navrhol andrej. Ked sa clovek registruje, automaticky sa prihlasi na odoberanie spamu (poziadavka z 2. nasho stretnutia). Pokial uz spam dostavat nechce, odhlasi sa sa a uz ho nedostava. Pokial sa znova zaregistruje na event, uz sa automaticky neprihlasi na odoberanie spamu (kludne tam moze byt aj checkbox ci chce, je mi to jedno). Podla mna existuju len 2 moznosti, chcem dostavat spam, nechcem dostavat spam. Aky case to podla teba nepokryje?

Mohol ale to Vas oberiem o skusenost a Vase unikatne riesenie, ktore bude robit to co potrebujem ale inak ako to robim ja. Hint: adresa, kapacita + dalsie veci nemusi tam byt hned vsetko ale ak bude potreba nech je to mozne spravit.

Prelozim ti, ako toto chapem ja. "Sice to robi to co to robit ma, ale ja si to predstavujem inak. Nepoviem vam vsak ako, aby ste na to prisli samy". Prepac, ale fakt sa mi nechce navrhnut 8 roznych rieseni aby som prisiel na to, ktore je to na co myslis ty.

Sql vyhodi nespravny vysledok(vysledok obsahuje duplikaty) a aj keby je spravny musis to itak manualne scitat scriptom alebo dalsou query(nemas jeden riadok s cislom ale vela riadkov, ktore musis scitat) ... Takze mas neprehladne(clovekom zle citatelne) data nad ktorymi nemozes pouzit ORM "out of the box" a musis pisat fancy query aby si riesil zakladne operacie :) Takze tvoje riesenie nefunguje a nemozes pouzitat "kniznicu" (ORM) co mas na ulahcenie prace.

Napisal som to z brucha, netestoval som to. Chcel som len demonstrovat, ze sa to da, aj ked to chces na urovni databazy. Ano, mas rozumny argument. Ak toto dame ako zvlast tabulku, tak count budeme mat zadarmo. Avsak budeme musiet kodit v adminovy nejake hlupe many to many inputy. Kedze, robime v PHPcku (napriek tomu, ze to nikto z mojho teamu VYSLOVENE nechcel), tak sa snazime optimalizovat, aby sme toho PHPcka napisali co najmenej.

Normalizaciu chces robit vzdy

Ok, kedze nemam viac argumentov tak beriem, spravime ju.

Cize slug nebude generovany ale musime ho napisat ?

Ano, je to az taky velky problem? Pokial viem, su 2 eventy rocne. Prepisat "Krásne meno udalosti!" na "krasne-meno-udalosti" rucne, by fakt nemal byt problem.

Tento riadok tiez treba upravit (naschval nevravim co).

Netusim co sa ti na nom nepaci, mozno niekto z timu problem uvidi :-)

Ja Vam nemozem povedat riesenie, kedze vy musite vyhotovit tento projekt. Keby Vam poviem riesenie robim pracu za Vas a moze to sposobit neplechu.

Pride mi to tak, ze nam riesenie sice nepovies, ale povies nam, ze nase riesenie (ktore by fungovalo, len je ine ako si ho ty predstavujes), je zle. S takouto informaciou sa potom dost tazko pracuje. Navrhujem zistit, ake su podmienky, kolko nam s tym mozes radit, kolko nam do toho mozes kecat a tak. :-) @viktorria zisti nam to prosim.

Ja pri najhorsom dostanem po prstoch od andreja, P.Petrovica a mojej nadriadenej ale Vam to nemusia zaratat do hodnotenia kedze ste pracu nespravili vy. Mozno vymyslam horror ale nechcem byt zodpovedny za to ze stratite body.

Jasne, toto chapem. Tiez nechceme stratit body.

Na temu stretnutia, mame 8dni na to aby sme sa mu vyhli, moze byt tak ? Z ineho pohladu velmi by som ocenil strenutie napisat takyto blok textu mi trva zalostne dlho ...

Z tych 8 dni, mame 5 volno. Tazke realne mame 3 dni. Ak to spravime cez net, nieje problem aj ked mame volno. Mne ide len o to, ze kvoli TISku nepojdem na otocku do Bratislavy.


PS: Je mozne, ze obcas nasa konverzacia naberie trocha emocii a pisem veci stylom, akym by som ich pisat nemal. Neber to tak, ze som drzy, len ked nevieme co od nas chcu, tak to nevieme dodat. Potom nad tym travim viac casu ako by som chcel (mam aj ine hobby ako TISko :-D) a som z toho obcas nervozny.

pavelpetrovic commented 6 years ago

+5 Bodov zato, že TISko je hobby :)

páči sa mi, že to riešite poctivo, vďaka za dobrú pracu doteraz!

Saamoot commented 6 years ago

Stretnutia su lepsie ako taketo pisanie ;)

Suhlasim uhol pohladu. Pre mna je stretnutie aby sme sa k veciam uz nemuseli vracat, lebo kazdeho to stoji cas. V kazdom pripade nechcem a nemozem po Vas ziadat aby ste cestovali do BA. Suhlasim aj s online stretnutim.

lokaliza event.title cez databazu + Chcete si to vyskusat len o tom neviete.

Na co je predmet TIS urceny na to nema vplyv. Spravit lokalizaciu mozno zvysuje obtiaznost ale stoji to zato, v mojom pripade to boli 3 navrhy databaz kym vysledok bol taky, ze ma dalsi programatori nesli utlct klavesnicou :) A teraz sa to da bez nich ale moznosti si to vyskusat na jednej dvoch tabulkach v nepracovnom prostredi nie je az tak vela. Odhlasujte si to a dajte vediet.

Clovek co sa odhlasil zo "spam"-u sa chce nan prihlasit znova ako to chcete riesit z jednym stlpcom ?

Ano na konci vsetkeho neporiadku, zmatku a riesenia je (ne)posiela sa spam cloveku. Ale riesi sa to pred tym ano/nie, a jedna z moznych implementacii je: clovek je uz odhlaseny zo "spam"-u a vyplnuje dalsi formular, kde checkbox bud nie je alebo v case poslania je v stave, ze ma cloveka prihlasit na "spam" a aplikacia to detekuje a nejakym sposobom moze z pouzivatela dostat informaciu, ze co teda chce. A to uz nasa poziadavka nedefinuje(nase stastie a chyba), vy ste sa nepytali(preto nas teraz musite krotit) ale je potrebne to riesit.

Prelozim ti, ako toto chapem ja. "Sice to robi to co to robit ma, ale ja si to predstavujem inak. Nepoviem vam vsak ako, aby ste na to prisli samy". Prepac, ale fakt sa mi nechce navrhnut 8 roznych rieseni aby som prisiel na to, ktore je to na co myslis ty.

V skratke, chapes to skoro dobre, len dovod preco to Vraciam je nasledovny:

=> riesenie na kolene ?, rychle riesenie ? => nemozem akceptovat => nie je to podla mojich predstav *1) Ohladom mnozstva rieseni, mas pravdu jedna z moznosti je mi dat 8 hotovych rieseni dalsia je mi dat 2-3 rozne navrhy a jedno z nich rozvijat dalej.

Napisal som to z brucha, netestoval som to. Chcel som len demonstrovat, ze sa to da, aj ked to chces na urovni databazy. Ano, mas rozumny argument. Ak toto dame ako zvlast tabulku, tak count budeme mat zadarmo. Avsak budeme musiet kodit v adminovy nejake hlupe many to many inputy. Kedze, robime v PHPcku (napriek tomu, ze to nikto z mojho teamu VYSLOVENE nechcel), tak sa snazime optimalizovat, aby sme toho PHPcka napisali co najmenej.

Ak chces nieco ukazat alebo az dokazat, treba vyskusat alebo si byt sakra isty, ze to ide +- tak ako to napises, tvoje riesenie aj ked bolo z brucha bolo 1-2 (sub-)query od riesenia to je dost na to, ze chcem spravit select distinct count :) Co sa tyka kodenia relacii medzi tabulkami cez doctrine orm, musel som si to pozriet lebo nepoznam doctrine ale uff ... je to ukecane ale tak dava to volnost, kedze tam treba vypisat veci ale videl som horsie. Tak ako to "kecanie" dava volnost je to aj zle aj dobre (alebo naopak dobre/zle), pozeral som PHP implementaciu neviem co si videl. To ze ste nechceli kodit v PHP-ku a kodite moc neovplyvnim jedine co ti viem ponuknut je technicka podpora, das otazku a co najlepsie ti ju zodpoviem. Trocha nemiestne ale tesi ma, ze si to vyskusate a uvidite ako vyzera "riadne" PHP a nie rychle alebo "kolenove" riesenia 1)

Ano, je to az taky velky problem? Pokial viem, su 2 eventy rocne. Prepisat "Krásne meno udalosti!" na "krasne-meno-udalosti" rucne, by fakt nemal byt problem.

Nie je to problem trocha som dufal, ze to event.title prezije, budeme pisat slug.

Tento riadok tiez treba upravit (naschval nevravim co). Netusim co sa ti na nom nepaci, mozno niekto z timu problem uvidi :-)

Dalsi pripad toho, ze sa mi to nepaci, mmm. Nemal by to byt take, ze sa mi to nepaci ale je tam chyba, ktora neovplyvni beh aplikacie ale bude robit problem programatorovi.

Pride mi to tak, ze nam riesenie sice nepovies, ale povies nam, ze nase riesenie (ktore by fungovalo, len je ine ako si ho ty predstavujes), je zle. S takouto informaciou sa potom dost tazko pracuje. Navrhujem zistit, ake su podmienky, kolko nam s tym mozes radit, kolko nam do toho mozes kecat a tak. :-) @viktorria zisti nam to prosim.

Vid *1)

Na temu stretnutia, mame 8dni na to aby sme sa mu vyhli, moze byt tak ? Z ineho pohladu velmi by som ocenil strenutie napisat takyto blok textu mi trva zalostne dlho ... Z tych 8 dni, mame 5 volno. Tazke realne mame 3 dni. Ak to spravime cez net, nieje problem aj ked mame volno. Mne ide len o to, ze kvoli TISku nepojdem na otocku do Bratislavy.

Urcite nechcem | nevyzadujem prist do BA kvoli tomu. Ako ja sa nebranim, ked sa v BA vyskytnete mozme riesit. Ohladom volna: tak mame 3dni na predidenie osobnemu stretnutiu, menej casu ale ciel sa nezmenil.

PS: ....

Kedze si napisal taketo nieco zjavne som zmenil sposob vyjadrovania(emocia++) aj ja. Zmenu pravdepodobne vyvolali slova: netreba, nebudem Z mojej strany toto netreba moc riesit, drzat to co najviac na uzde a riesit co treba. A zbytok sa zase tyka oznacenia *1)

*1)

Toto sa tyka veci ako: nevravim ako to chcem, nie je to podla mojich predstav, treba to lepsie, na kolene, rychlo a pod.

Tato aplikacia je sice mala ale stale je to aplikacia, ktora ked sa vydari bude nasadena a su teda na nu kladene poziadavky. Kedze sa bude pouzivat realita je taka, ze budu poziadavky na zmeny v aplikacii aby robila nieco nove alebo inak a preto riesenia, ktore su funkcne ale su navrhnute aby splnili len poziadavku a nic viac (aka rychle riesenie alebo riesenie na kolene) tak take riesenie je nevhodne. A vy ste dostali ako skolsku ulohu takuto aplikaciu naprogramovat, takze vy mate prist na riesenia. Teraz nechcem nikomu ukrivdit ale kedze to mate ako projekt tak to asi moc neriesite(mate toho vela, je to v php-ku alebo iny dovod) alebo je vidiet, ze ste programovali za ucelom zistenia ako sa nieco robi a teda nemate vela odprogramovaneho ale Vase riesenia su rychle a na mieru, co som vysie spominal, nie je vhodne pre aplikaciu na pouzivanie. Mozno je to tym, ze to mam na starosti ja ale je to na mne co a ako sa naprogramuje, a aj to ci sme spokojny s "programovaciou" castou aplikacie. A kedze je to na mne nevhodne riesenia nemozem zobrat. Ale stale je to skolsky projekt tak Vam nemozem nadiktovat ako to chcem. Este raz vravim nie som specialny kvietok programator, len nahodou robim v tejto oblasti a odvovodnujem preco reagujem tak ako reagujem.

andrejjursa commented 6 years ago

@Saamoot skusal som to po vas citat, uz niekde na zaciatku mi dosiel dych :(, toto sa musi riesit osobne

@ZoltanOnody kedy dnes koncite s workshopmi? nepotrebujem na stretnutie tahat celu skupinu, staci ked prides ty, predpokladam, ze workshopy su tiez na FIIT STU? este je otazka, dokedy je dnes na fakulte @Saamoot

ZoltanOnody commented 6 years ago

@andrejjursa workshop je do ~17:00. Ak bude @Saamoot nahodou o tom case na fakulte, nemam problem sa stretnut dneska.

nitrajka commented 6 years ago

Tomas @Saamoot ,

pisem ti tieto riadky, lebo ma uz nebavi citat tie mnohe komentare, v ktorych nam davas mnoho nekonstruktivnej kritiky typu:

“Keby Vam poviem riesenie robim pracu za Vas a moze to sposobit neplechu.” . Takuto kritiku sme kludne mohli brat ako sikanu. CItaj dalej, dozvies sa preco. Vies, Tomas, ak sme uz navrhli jedno riesenie a funguje rovnako skvele ako to tvoje, ktore mame uhadnut, nebudeme to tvoje implementovat. V tento semester mame aj ine predmety, ktorym sa treba venovat. A kedze sa “hadaj na co myslim” poziadaviek od teba nahrnulo mnoho, spavime vacsinu po nasom, kedze ucelom tohto predmetu nie je hadat na co myslis. Popravde som z teba, Tomas, mierne zmatena. A budeme to brat ako ze si nam neobjasnil svoje poziadavky na implementaciu konkretne (ked vravis ze nam to nemozes povedat). Dokonca, ked si chcel aby projekt bol aj nejako konkretne implementovany, mal si zahrnut do katalogu poziadaviek aj implementacne detaily. No nespravil si tak. ( @andrejjursa Andrej si nam mohol povedat, ze tomas si potrpi aj na implementacne detaily a teda by sme cast implementacie dali do katalogu. - alebo aspon bod "implementaciu kontroluje zadavatel"). Preto prosim nechod proti nasej implementacii aspon vtedy, ked na nu mame rozumne dovody. Po tom vsetkom dohadovani ,si nemyslim, ze sme tak neskuseni programatori a ze to bude nakodene uplne mimo tvojich predstav.

Pokial viem, je to skolsky projekt, za ktory ziskame znamku. Preto sa snazime aj pretrhnut aby bol katalog poziadaviek splneny. No problem je, ze ty s Andrejom sa neviete dohodnut a ked sa aj dohodnete, tak “za nasim chrbtom”. A potom pozadujete stretnutie cez sviatky ked si uz kazdy vyhradil cas aj na iny predmety ba dokonca oddych a rodinu. Ci predpoklada sa, ze studenti su tiez no - lifers? Projekt totiz nema zaberat viac ako (tipujem) 7 hodin tyzdenne preto by bolo fajn, ak by si svoje poziadavky tomu aj prisposobil. Ak si o tom nevedel a vas projekt si vyzaduje viac, tak ma to uprimne mrzi.

Pravdepodobne sa budes musiet zmierit s tym, ze projekt nebude na kazdom mieste naprogramovany podla tvojich predstav. Hoci verim, ze vo vela smeroch bude. :) Sam dobre vies, ake je to byt student a kodit nieco niekomu. Predpokladam, ze tvoje predstavy su take, ze do projektu bude nenarocne doprogramovat dodatocnu poziadavku. A tipujem, ze to nakoniec budes po nas aj chciet - doprogramovat dodatocne poziadavky, pretoze to bude “nenarocne”. Musim ti vsak pripomenut, ze dodatocne poziadavky uz katalog neobsahuje. A katalog tiez neobsahuje poziadavku, ze projekt ma byt naprogramovany tak aby bolo nenarocne do neho nieco implementovat. Museli by robit vsetci full time aby tento projekt bol uplne podla tvojich ocakavani.

Ako si napisal, tie veci su nezlucitelne (priority nas, Andreja a teba). No ide najma o to, aby bol katalog poziadaviek splneny. Som si ista, ze keby si za vyhotovenie tohto webu platite, tak by ste si aj 3x premysleli hned na zaciatku co a ako chcete a do uplnych detailov to firme opisali aby ste platili co najmenej za dodatocne konzultacie. No “bohuzial” vam to robia lacni studenti a rozhodli ste sa, ze tento projekt im zaberie najviac casu v tomto semestri ako sa len da.

“A kedze je to na mne nevhodne riesenia nemozem zobrat. Ale stale je to skolsky projekt tak Vam nemozem nadiktovat ako to chcem.” Si si isty ze implementacia je na tebe? Nie nahodou na nas? Tomas, nie sme na Programovani(1) a neucime sa ako sa pisu for-cykly ale bavime sa o konkretnej implementacii, tak by si nam mal povedat co konkretne ches. CIELOM tohto PREDMETU nie je prist na najlepsie riesenie, ale pisat mnoho specifikacii, katalogov, blbosti a implementacia je iba nejaka mala cast toho celeho. Vies, Tomas, my nevieme co potrebujes pokym nam to nepovies. A ked budes mat postoj “nepoviem co chcem ale budem zly ak to nedostanem”, tak to budem riesit uz s Petrovicom.

Projekt ideme robit v PHP, Symfony, katalog sme s tebou riesili do posledneho detailu dokonca aj v implementacii si nechame do istej miery poradit a robime co vieme. Vidis ze sme ustretovi. Prosim, bud aj ty (ci uz tomas alebo andrej) a vzi sa aj do nas. Zamyslite sa, kolko toho realne mozme stihnut ak tomu budeme venovat par hodin tyzdenne. Budeme ti (vam) velmi vdacni. Dakujeme.

A chcem sa ti aj podakovat za tu vsetku konstruktivnu kritiku, ze to riesis priebezne s nami a aj za to ze sa snazis a v urcitej miere nam pomahas a ze komunikujes :) (ze si sa na to nevytoto a nenechal si to len na nas)

A toho stretnutia by som sa rada zucastnila aj ja, ak to bude po 17. :)

andrejjursa commented 6 years ago

@nitrajka par poznamok:

nitrajka commented 6 years ago

@andrejjursa

  1. ako som uz spomenula, nasa implementacia je dostacujuca ale ked vy si to nemyslite, tak sa v prvom rade nemate hrat na "hadaj na co myslim", lebo o tom tento projekt nie je. A sme ochotni nasu implementaciu zmenit.

  2. Okej, chapem.

  3. "takze ty si za svoju pracu financne odmenovana" -> Toto si si vysvetlil velmi inak nez si mal. Nemyslela som to tak ze mne za to neplatia. Mam velmi rada opensource projekty, ba dokonca do nich aj prispievam. Vravela som, ze vy za to neplatite a preto si mozte ku nam dovolit to co by ste si k firme nedovolili, z financneho hladiska. Som vas chcela poprosit, ze tak ako sa my snazime vyjst v ustrety, tak by ste mohli aj vy. A "nezatajovat" vase poziadavky na imlementaciu. Som si ista, ze implementaciu riesime najlepsie ako vieme a ked lepsie nevieme, tak nam nepomoze "hadaj na co myslim".

  4. Co ak implementaciu riesim so Zolim? Nemozte ma vyclenit z vlastneho timu a teda projektu za ktory aj ja dostanem znamku. Dakujem.

  5. pritom bolo implementovane tak, aby sa dal sw dalej udrziavat -> toto sice nebolo v katalogu, ale sme ochotni to implementovat. Bolo by velmi kontra produktivne, keby aj po navrhu databazy nam priebezne hodnotite projekt. Co keby to spravime a ak nebudu vaznejsie problemy (ze by bolo treba to riesit priebezne), potom sa nam k tomu nakoniec vyjadrite? Takto budeme riesit kazdu zalezitost zvlast a bude k tomu vzdy dlha konverzacia a to nam bude branit v rychlejsom tempe prace. Nemyslim si, ze to bude az tak velmi neprofesionalny kod. Predsa len, aj my uz mame nejake skusenosti. A hoci to nie je nas jazyk, paradigmy su vsade rovnake.

  6. Ja som nepisala o ziadnej jednoduchosti. Mne zalezi na tom aby bol projekt dobre nakodeny. No zalezi mi aj na tom, aby ste sa vzili do nasej koze a uvedomili si, co realne mozme stihnut. Pretoze ak vacsina casu vyvoja budu tieto konverzacie na github/meetupy ku KAZDEJ iba priemerne dolezitej veci, tak moc toho nestihneme a tomas si to bdue musiet bohuzial dorabat sam. A to nechceme. Potrebujeme aby finalna verzia projektu bolo "podla moznosti kvalitne MVP". Pocas implementacie nenarazime na chyby, pretoze si castokrat nechame poradit. A ak narazime na chyby, som si ista, ze nebudu tak vazne ze by sa kod neskor nedal maintainovat.

  7. to ze pracujete vo firme automaticky neznamena, ze ste odbornici na vsetko co tu riesime -> To ze pracujete na univerzite, neznamena ze ste hned odbornici na vsetko co tu riesime.

ZoltanOnody commented 6 years ago

Kedze sme dost odbocili od navrhu, navrchujem tuto debatu ukoncit a doriesit to osobne. Napriklad dneska po 17:00, alebo v pondelok cez hangout.

andrejjursa commented 6 years ago

@ZoltanOnody porada o piatej bude, hovoril som s @Saamoot a ma cas, takze sa stretnime,

@nitrajka ako som povedal, projekt je minimalneho rozsahu, je to na mna a nie na vas, aby som urcil rozsah vasej prace, pre poriadok, tuto appku by slravil jeden clovek za dva dni, ak to tak necham, tak moze vzniknut problem s celkovim hodnotenim, poznamku o tom, ze som na univerzite tak tiez nie som odbornik si prosim odpusti, riesil som mnoho komercnych projektov a vacsinu samostatne, mam dost dobru predstavu o tom, aky pristup ma mat realizator k praci, to ze ti niekto vo firme zada pracu, ktoru predtym niekto iny vydiskutoval s project ownerom, z teba nerobi odbornika na riesenie softwaroveho navrhu a jednanie o poziadavkach (pravda, ani zo mna, ale mam s tym mnohe skusenosti a snazim sa vam ich predat), vies, mohol by som sa na to vykaslat jak ja tak Tomas (btw. ja som v zasade tiez zastupca organizacie, ktora zadala projekt), lenze ked to spravime, tak vzhladom na vase nulove skusenosti s php a tymito technologiami moze projekt dopadnut ako rovnako nepouzitelny ako ten, ktory prave reimplementujeme a zlepsuje, cize ak chces riskovat, ze ti potom Tomas povie, toto neberiem, z coho automaticky znamena cele to prerob k spokojnosti alebo Fx, tak dobre, ale ja to kvoli vam riskovat nebudem a budem vas usmernovat tak, aby projekt bol na urovni a nie tak, ze vam sa nieoc takto paci, tak to je ok, keby si sa prestala iracionalne branit, tak sa aj nieco naucis ...

ZoltanOnody commented 6 years ago

:D :D :D Prosim, zamknime tuto diskusiu a vyriesme to osobne!!!! 17:00 it is.

andrejjursa commented 6 years ago

@ZoltanOnody kiez by to slo :)

ZoltanOnody commented 6 years ago

@pavelpetrovic viem, ze nieste nas cviciaci ale ozaj by som ocenil, ak by ste na dnesne stretnutie o 17:00 mohli prist. :) Pokial to nejde, nevadi.

pavelpetrovic commented 6 years ago

Budem sediet vo vlaku niekde v okoli Ziliny smer BA :(

Ale pre kazdy pripad budem na telefone.

Chcel by som Vas vsetkych poprosit o trochu trpezlivosti a dbat o efektivnost komunikacie. Na zaklade doterajsej komunikacie vidim, ze Vam vsetkym predsa len do velkej miere zalezi na tom, aby bol vysledny projekt dobry a uspesny, ale Alexandra ma urcite pravdu v tom, ze su tu urcite hranice. Celkom vypustime politiku a zostanme pri veci projektu. Zadavatel zostava v roli zadavatela, CVICIACI je tu na to (aby pripadne po skonzultovani so zadavatelom) AKCEPTOVAL alebo NEAKCEPTOVAL vas navrh a aby co najzrozumitelnejsie a co najskor formuloval, aky navrh povazuje za akceptovatelny...

Preto by som poprosil zadavatela, aby po akceptovani katalogu poziadaviek nevstupoval do vyvoja priamo, pokial sa na neho vyvojovy tim neobrati, ale ak ma taku potrebu, tak prostrednictvom cviciaceho, ktory sam ma dost skusenosti na to, aby to ustrazil aj sam (po pripadnych vlastnych konzultaciach so zadavatelom).

Na navrh ostava stale este vyse dvoch tyzdnov, takze ziaden stres. Prazdniny treba respektovat, vsetci si potrebujeme oddychnut a vyhodit skolu aspon na par dni z hlavy. Kto ma cas medzitym, super, ale ostatni sa zapoja, ked sa tim zasa stretne a dohodne.

ZoltanOnody commented 6 years ago

Po osobnom stretnuti sme dospeli k takejto databaze.

BEGIN;
--
-- Create model Attendee
--
CREATE TABLE "attendee" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "first_name" varchar(100) NOT NULL, 
    "last_name" varchar(100) NOT NULL, 
    "email" varchar(100) NOT NULL UNIQUE);
--
-- Create model Event
--
CREATE TABLE "event" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "slug" varchar(50) NOT NULL UNIQUE, 
    "template" varchar(100) NOT NULL);
--
-- Create model EventDetails
--
CREATE TABLE "eventdetails" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "address" text NOT NULL, 
    "date" datetime NOT NULL, 
    "registration_end" datetime NOT NULL, 
    "capacity" integer unsigned NOT NULL, 
    "notification_threshold" integer unsigned NOT NULL, 
    "template" varchar(100) NOT NULL, 
    "event_id" integer NOT NULL REFERENCES "event" ("id"));
--
-- Create model MailingList
--
CREATE TABLE "mailinglist" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "language" varchar(5) NOT NULL, 
    "unsubscribed" bool NOT NULL, 
    "attendee_id" integer NOT NULL REFERENCES "attendee" ("id"));
--
-- Create model Organizer
--
CREATE TABLE "organizer" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "email" varchar(254) NOT NULL UNIQUE);
--
-- Create model Registration
--
CREATE TABLE "registration" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "created" datetime NOT NULL, 
    "updated" datetime NOT NULL, 
    "language" varchar(5) NOT NULL, 
    "code" integer NOT NULL UNIQUE, 
    "confirmed" bool NOT NULL, 
    "confirmation_token" varchar(50) NOT NULL UNIQUE, 
    "attendee_id" integer NOT NULL REFERENCES "attendee" ("id"), 
    "event_details_id" integer NOT NULL REFERENCES "eventdetails" ("id"));
--
-- Add field organizers to event
--
CREATE TABLE "event_organizers" (
    "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, 
    "event_id" integer NOT NULL REFERENCES "event" ("id"), 
    "organizer_id" integer NOT NULL REFERENCES "organizer" ("id"));

COMMIT;

Dufam, ze som na nic nezabudol, pokial ano, nieje problem to pridat :)

nitrajka commented 6 years ago

Prosim @ZoltanOnody , len pripominam, ze tam chyba tabulka pre adminov :)

andrejjursa commented 6 years ago

@ZoltanOnody jak na to teraz pozeram, vidim, ze miesto cudzich klucov si tam dal iba stlpce odkazujuce sa na inu tabulku, toto ale pokial viem nevyrobi index a ani nijak nenastavi constraint, technicky spravnejsie je to definovat takto, pricom je dolezite tam pisat co sa deje pri uprave a mazani

vtip je totiz v tom, ze doctrine ti to bude generovat s entity prave takto, s cudzimi klucami, preto je treba si dopredu uvedomit, ake tam maju platit obmedzenia, hlavne si dat bacha na default hodnotu co doctrine pouziva, aby tam nebolo vsade set null (napr. ak by niekto zmazal event, tak je logicke, ze sa ma kaskadovo pomazat aj kazda k nemu priradena informacia o detaile a informacia o priradenom organizatorovi atd. ale povodny organizator nema byt odstraneny, atd.)

este jedna vec, ta struktura opat nezodpoveda tomu, co sme hovorili v piatok vecer, to ci ucastnik odobera informacie o novych kurzoch, mal mat v svojej tabulke priamo, i ked teraz ked na to pozeram je fakt, ze potom by musel mat aj language :), technicky by to mohlo fungovat aj takto ale medzi attendee a mailinglist musi byt 1:1 relacia, @Saamoot pozri s Petou ci to dava zmysel :)

ZoltanOnody commented 6 years ago

vidim, ze miesto cudzich klucov si tam dal iba stlpce odkazujuce sa na inu tabulku

V postgreSQL sa to robi takto, s MySQL som nerobil uz roky tak som si to nepamatal.... Docital som sa, ze references a foreign key ... references nerobia to iste, takze mas pravu.

Toto SQLko malo byt skor ako priklad toho, ako tomu rozumiem ja, v konecnom dosledku to bude vytvorene cez doctrine a ten tam uz nageneruje (dufam) vsetky constrains.

este jedna vec, ta struktura opat nezodpoveda tomu, co sme hovorili v piatok vecer, to ci ucastnik odobera informacie o novych kurzoch, mal mat v svojej tabulke priamo, i ked teraz ked na to pozeram je fakt, ze potom by musel mat aj language :), technicky by to mohlo fungovat aj takto ale medzi attendee a mailinglist musi byt 1:1 relacia

Ja som to pochopil tak, ze MailingList a Attendee budu 2 tabulky ktore budu v relacii 1:1. Ak vsak chcete aby bolo language a unsubsribed v 1 tabulke, tak OK. Oto bude lahsie to implementovat.

andrejjursa commented 6 years ago

@ZoltanOnody

vidim, ze miesto cudzich klucov si tam dal iba stlpce odkazujuce sa na inu tabulku

V postgreSQL sa to robi takto, s MySQL som nerobil uz roky tak som si to nepamatal.... Docital som sa, ze references a foreign key ... references nerobia to iste, takze mas pravu.

Toto SQLko malo byt skor ako priklad toho, ako tomu rozumiem ja, v konecnom dosledku to bude vytvorene cez doctrine a ten tam uz nageneruje (dufam) vsetky constrains.

Jasne, ako priklad to staci ale je fakt, ze v konecnom dosledku tam tie obmedzenia budu a preto je dobre na ne mysliet dopredu, nemozes nechat doctrine, aby si tam vygenerovala co chce a byt s tym spokojny.

Druha vec :), postgres vobec neriesi co sa ma stat s hodnotou referujucou inu hodnotu ak sa tato cielova hodnota zmeni? To mi pripada ako nezmysel. Urcite je nieco, inak zapisovane, podobne foreign key obmedzeniu aj v postgrese.

este jedna vec, ta struktura opat nezodpoveda tomu, co sme hovorili v piatok vecer, to ci ucastnik odobera informacie o novych kurzoch, mal mat v svojej tabulke priamo, i ked teraz ked na to pozeram je fakt, ze potom by musel mat aj language :), technicky by to mohlo fungovat aj takto ale medzi attendee a mailinglist musi byt 1:1 relacia

Ja som to pochopil tak, ze MailingList a Attendee budu 2 tabulky ktore budu v relacii 1:1. Ak vsak chcete aby bolo language a unsubsribed v 1 tabulke, tak OK. Oto bude lahsie to implementovat.

Technicky sme to tak chceli v jednej tabulke, ked sme sa o tom v piatok spolu rozpravali, akurat sme zabudli na ten jazyk, tu by bolo naozaj dobre, keby to @Saamoot pozrel, premyslel a povedal. Alebo za nim zajtra zajdi, ak si na fakulte.

ZoltanOnody commented 6 years ago

postgres vobec neriesi co sa ma stat s hodnotou referujucou inu hodnotu ak sa tato cielova hodnota zmeni?

Riesi, treba tam dat ON DELETE [cascade|restrict|set null|...] zamyslim sa nad vhodnymi obmedzeniami pre tento projekt a doplnim to :)

Alebo za nim zajtra zajdi, ak si na fakulte.

Na fakulte budem az v piatok, ak sa dovtedy nevyjadri, zajdem za nim.

Saamoot commented 6 years ago

Zdravim,

nasledujuce stlpce odstranit:

budu nahradene jednym stlpcom:

dakujem.

ZoltanOnody commented 6 years ago

ok.

ZoltanOnody commented 6 years ago

https://stackoverflow.com/questions/17321893/automatic-values-for-updated-at-created-at-in-doctrine