Relacionamento entre tabelas
Fala Galera,
Estou com dúvidas em como fazer corretamente o relacionamento das minhas tabelas no Zend. Segue as tabelas que preciso relacionar:
/ Entidades /
clientes // Armazena os clientes
contatos // Armazena os funcionarios das empresas (clientes) com quem nos relacionamos
/ Formas de contato /
telefones // Armazena todos os telefones
emails // Armazena todos os e-mails
/ Extras sociais /
social // Armazena msn, skype, orkut, etc
/ Tabelas de relacionamento /
rel_clientes_contatos // Relaciona os clientes aos seus contatos
rel_clientes_telefones // Relaciona os clientes aos telefones (FK p/ clientes e telefones)
rel_clientes_emails // Relaciona os clientes aos emails (FK p/ clientes e emails)
rel_clientes_social // Relaciona os clientes às infos sociais (FK p/ clientes e social)
rel_contatos_telefones // Relaciona os contatos aos telefones (FK p/ contatos e telefones)
rel_contatos_emails // Relaciona os contatos aos emails (FK p/ contatos e emails)
rel_contatos_social // Relaciona os contatos às infos sociais (FK p/ contatos e social)Logo, para descobrir quais os telefones dos clientes, preciso consultar as tabelas rel_clientes_telefones e telefones.Ou ainda, para descobrir quais os telefones dos CONTATOS dos clientes, preciso consultar as tabelas rel_clientes_contatos, rel_contatos_telefones e telefones.
Confuso?! o.O rs
Eu já consegui utilizar uma referencia simples:
class Model_Funcionarios extends Zend_Db_Table_Abstract
{
protected $_name = 'funcionarios';
protected $_primary = 'BD_id';
protected $_dependentTables = array('Areas');
...
}
class Model_Areas extends Zend_Db_Table_Abstract
{
protected $_name = 'areas';
protected $_referenceMap = array('Funcionarios' => array('columns' => 'BD_funcionario',
'refTableClass' => 'Model_Funcionarios',
'refColumns' => 'BD_id'));
}No entanto não sei qual a melhor forma de utilizar o mesmo principio para um relacionamento tão extenso.Vou precisar criar um Model para cada tabela (inclusive as de simples relacionamento)?
Idéias?
Grato desde já.
Abs
Discussão (6)
Carregando comentários...