Nelogičnost návrhu práce s databází
- Alex
- Člen | 2
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
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)