Nelogičnost návrhu práce s databází

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Alex
Člen | 2
+
0
-

Proč, když už je zavedena jmenná konvence pro vázání tabulek mezi sebou, je výhradně založena na manuálním provázání tabulek pomocí foreign keys v databázi a není založena na reálné analýze jmen, bez nutnosti definovat předem cizí klíče. Přece když už definuji cizí klíče manuálně, tak nemohu být svazován nějakou konvencí a framework vazby musí umět přečíst z manuálně definovaných cizích klíčů, a ne aby to byla taková magie, byla zavedena jmenná konvence, která ale sama o sobě není funkční.

hrach
Člen | 1838
+
0
-

Nejake jmenne konvence musi byt zavedny. Napr. kdybys se braly v potaz jen cizi klice, tak pro cteni hodnoty $book->author_id neni jasne, jestli chces cist scalar, tj. samotne id, nebo refernci na provazany objekt. Proto napr. pri $book->author se to nejakou logikou matchuje oproti znamym cizim klicum, tj. najde to author_id, a pote, uz jak rikas, ze znalosti ciziho klice to vi, co to ma dat.

Podstatne je, ze to prave neni omezeno na tvuj coding style. Takze ikdyz se sloupec bude jmenovat $book->id_author, tak $book->author bude vracet korektni refernci.

Pro vztahy has many, tj. $author->books je logika mnohem slozitejsi, asi nema duvod se tu rozepisovat.

V neposledni rade mas prave moznost si nadefinovat IConventions sam, bez tech silenych logik, ktery ti nemusi byt prijemne. (Proto doslo k rozdeleni IRefleciton a IConventions). Viz. https://github.com/…ventions.php

Editoval hrach (28. 3. 2015 22:52)

Alex
Člen | 2
+
0
-

Ano, to dává smysl, díky za vysvětlení.