Hola, estoy armando my primer proyecto "real" con Doctrine y Zend Framework I bueno, engo una db schema funcional en el sentido de que puedo contruir los models y las tablas a partir de la misma, pero no estoy seguro sobre el rendimiento de mi diseño particularmente; tambien tengo una duda sobre una query DQL especifica.
Esta es my schema:
Código:
connection: OctoRealm
actAs: [Timestampable]
options:
type: INNODB
collate: utf8_unicode_ci
charset: utf8
Account:
columns:
login:
type: string(255)
notnull: true
unique: true
password:
type: string(41)
notnull: true
is_root:
type: boolean
notnull: true
is_service:
type: boolean
notnull: true
Contact:
columns:
first_name:
type: string(255)
notnull: true
last_name:
type: string(255)
notnull: true
birth_date:
type: timestamp
notnull: true
account_id:
type: integer
notnull: true
relations:
Account:
type: one
foreignType: one
Email:
columns:
address:
type: string(255)
notnull: true
unique: true
email: true
main:
type: boolean
notnull: true
contact_id: integer
relations:
Contact:
type: one
foreignType: many
foreignAlias: Emails
Address:
columns:
name:
type: string(255)
notnull: true
area:
type: string(255)
notnull: true
city:
type: string(255)
notnull: true
street_first:
type: string(255)
notnull: true
street_second:
type: string(255)
notnull: true
main:
type: boolean
notnull: true
type:
type: enum
values: [home, work, other]
contact_id: integer
country_id: integer
relations:
Contact:
type: one
foreignType: many
foreignAlias: Addresses
Country:
type: one
foreignType: many
foreignAlias: Addresses
Country:
columns:
name:
type: string(255)
notnull: true
Phonenumber:
columns:
country_code:
type: string(6)
notnull: true
area_code:
type: string(10)
notnull: true
number:
type: string(15)
notnull: true
main:
type: boolean
notnull: true
address_id: integer
relations:
Address:
type: one
foreignType: many
foreignAlias: Phonenumbers
Cada Account puede ser una cuenta "service", en caso de no ser, esta tendra asociada un objecto Contact, con el nombre, edad, direcciones, emails y numeros telefonicos de la persona que posee la cuenta en question. Entonces, me gustaria saber que opinan de mi diseño, mas que nada en rendimiento. Otra cosa, que tendria que cambiar para poder acceder los Phonenumbers, Emails y Addresses desde Account, sin pasar por Contact(y/o Address segun el caso), a modo de evitar SELECTs innecesarios?.
Respecto a la pregunta de DQL, con el diseño actual, como podria hacer un SELECT a todos los Phonenumber(o Emails) contenidos en una Account particular. Cada Account tiene un Contact, que a su vez tiene varios Address, que a su vez tienen varios Phonenumber. Esto sin hacer un SELECT a todos los objectos que toman parte(Contact, Addresses).
Gracias de antemano.
Un saludo.