01-15-2013, 09:33 AM
(Este mensaje fue modificado por última vez en: 01-15-2013, 11:04 AM por Reboot.)
Mysql es perfecto para empezar a trastear en el mundillo de las bases de datos. Te permite hacer animaladas que con otras DDBB más serias ni te podrías plantear.
En cuanto a lo de atomizar las tablas, Guibuu, dependerá de la flexibilidad que quieras tener. Puedes hacer una sola tabla monolítica del tipo:
1. INT Primary Key ID
2. VARCHAR (18) TELEFONO
3. VARCHAR (50) TIPO_TELEFONO
4. VARCHAR (256) NOMBRE
5. VARCHAR (256) DIRECCION
6...
O atomizar los datos que quieras flexibilizar.
Tabla Datos_principal
1. INT Primary Key ID
2. VARCHAR (256) NOMBRE
3. VARCHAR (256) DIRECCION
4...
Tabla Datos_telf
1. INT (Foreign Key) ID_principal
2. INT (Foreign Key) ID_tipo_telefono
3. VARCHAR (18) TELEFONO // <--- Podrías usar este campo incluso para meter emails
Tabla Tipo_telefono
1. INT Primary Key ID_tipo_telefono
2. VARCHAR (50) TIPO_TELEFONO
Y luego para recuperar
SELECT * FROM Datos_principal, Datos_telf, Tipo_telefono WHERE Datos_telf.ID_principal=Datos_principal.ID AND Tipo_telefono.ID_tipo_telefono=Datos_telf.ID_tipo_telefono
No sé si habría que poner un DISTINCT.
PD:
Otra opción, en vez de usar una macroconsulta, atomizarla en dos partes, por un lado un SELECT que te saque los datos de la tabla principal y luego, mediante programa, hacer SELECT de cada teléfono según cada ID principal.
Y otra opción es meter la tabla de tipos_telefono en una Hash y hacer un join sólo de la tabla principal y de la de teléfonos y sacar qué tipo es según los IDs de la base de datos y la Hash que has hecho al principio.
Hay mil maneras de hacer lo mismo...
En cuanto a lo de atomizar las tablas, Guibuu, dependerá de la flexibilidad que quieras tener. Puedes hacer una sola tabla monolítica del tipo:
1. INT Primary Key ID
2. VARCHAR (18) TELEFONO
3. VARCHAR (50) TIPO_TELEFONO
4. VARCHAR (256) NOMBRE
5. VARCHAR (256) DIRECCION
6...
O atomizar los datos que quieras flexibilizar.
Tabla Datos_principal
1. INT Primary Key ID
2. VARCHAR (256) NOMBRE
3. VARCHAR (256) DIRECCION
4...
Tabla Datos_telf
1. INT (Foreign Key) ID_principal
2. INT (Foreign Key) ID_tipo_telefono
3. VARCHAR (18) TELEFONO // <--- Podrías usar este campo incluso para meter emails
Tabla Tipo_telefono
1. INT Primary Key ID_tipo_telefono
2. VARCHAR (50) TIPO_TELEFONO
Y luego para recuperar
SELECT * FROM Datos_principal, Datos_telf, Tipo_telefono WHERE Datos_telf.ID_principal=Datos_principal.ID AND Tipo_telefono.ID_tipo_telefono=Datos_telf.ID_tipo_telefono
No sé si habría que poner un DISTINCT.
PD:
Otra opción, en vez de usar una macroconsulta, atomizarla en dos partes, por un lado un SELECT que te saque los datos de la tabla principal y luego, mediante programa, hacer SELECT de cada teléfono según cada ID principal.
Y otra opción es meter la tabla de tipos_telefono en una Hash y hacer un join sólo de la tabla principal y de la de teléfonos y sacar qué tipo es según los IDs de la base de datos y la Hash que has hecho al principio.
Hay mil maneras de hacer lo mismo...
"Es como el que se mataba a pajas con U-jin y hoy en día o es Boku no Piko o ni se le levanta." - AniList