![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Cita:
![]() Pues ahorita no puedo amigo. Desde el ajuste de tornillos que siento que se me hace más difícil realizar esas largas exposiciones. ![]() Como tu ya sabes amiguito: habrá que acostumbrarse a que de a poquito la pandilla New se vaya despidiendo. Va a ser un tantito más aburrido, pero bueno hacía falta eso y a mis amigos ya no le estaba gustando que se colasen cada vez que nos juntábamos... reconozco que en ocasiones eran una mala influencia. ![]() Saludos, |
|
#2
|
||||
|
||||
|
resp
La relacion entre tablas de una base de datos depende de su cardinalidad.
Si es de 1 a 1 se usa una clave foranea en una de las tablas Si es de 1 a n se usa una clave foranea en la tabla n Si es de n a n se crea una nueva tabla con ambas claves foraneas. Y como siempre recomiendo no hay mejor normalizacion que la que sale de un buen diagrama de entidad relacion. Ya que muchas veces las formas normales se rompen en algunos casos por eso no normalizo usando dichas formas normales(ese es mi criterio y eso me dice la practica). Cada quien en libre de eleigir como normalozar su bd.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
|
#3
|
|||
|
|||
|
Hola amigos foristas, la pregunta planteada por el compañero mjjj es bastante interesante y ha sido tema de mutiples discusiones.
Quiero comentar sobre las tres primeras tablas. Ambas aproximaciones son válidas, sin embargo quiero replantear el modelo del negocio de la siguiente manera: Imaginemos que necesitamos registrar informacion sobre usuarios o clientes y tambien registrar la informacion de empresas; en cada empresa pueden laborar uno o mas usuarios y cada usuarios pueden trabajar en una o mas empresas. Caso 1: Tablas: usuarios (id, nombre, apellido) PK: id empresas (id, nombre) PK: id empresa_usuario (id_usuario, id_empresa) PK: id_usuario, id_empresa Caso 2: Tablas: usuarios (id, nombre, apellido) PK: id empresas (id, nombre) PK: id empresa_usuario (id, id_usuario, id_empresa) PK: id Hay algo que normalmente no se enseña en cursos básicos de bases de datos y es la dinámica del tiempo. Cuando diseñemos bases de datos debemos pensar que el sistema se va a utilizar no por un año sino por un periodo de al menos 5 años. Los 2 modelos nos permite indicar el usuario para que empresa trabaja, pero preguntemonos: El usuario puede renunciar a una de las empresas y un tiempo despues puede volver a trabajar en esa misma empresa, en esta situación y solo con tres tablas el caso 1 no nos sirve, el caso 2 es mas flexible en cuanto a diseño. Esto nos lleva a que cuando nos encontremos con una relación m:n (eviten escribir m:m porque se estaría diciendo que existe igual numero de elementos en cada una de las entidades) pensemos en que no solo se resuelve con una tabla de asociación sino que esa tabla de asociación puede ayudarnos a "enriquecer" el modelo. Entonces esa tabla empresa_usuario podria quedar asi: empresa_usuario ( id not null, id_usuario not null, id_empresa not null, estado not null fecha_ingreso not null, fecha_egreso ) PK: id El campo estado puede decirnos si esta vinculado, suspendido, contrato cancelado,etc. Fecha de ingreso como su nombre lo indicanos dira cuando se establecio esa relación y fecha de egreso tendrá un valor null hasta que haya finalizado la relación del usuario con la empresa. Sobre si es mejor las tablas identificarlas con un identificador único entero (ID) es algo que defienden los puristas defensores del modelo orientado a objetos, es muy flexible pero la construcción de aplicaciones y elaboración de consultas es mas compleja y no tan eficiente como con la creación de llaves "relacionales" (mas de un atributo). Ambas aproximaciones (relacional y de objetos) tienen sus ventajas y desventajas, por eso utilizo una u otra o una mezcla de ambas dependiendo de la situación que deba resolver de forma que mantenga un equilibrio entre simplicidad y efciencia.
__________________
Luis Fernando Buelvas T. |
|
#4
|
||||
|
||||
|
resp
empresas
n | posee | n usuarios hay una relacion n a n lo cual da nacimiento a una tercera tabla la tabla de relaion entre epresas y cliente. solo hay que hacer un buen diagrama de entidad relecion poner la cardinalidad y el resultado sera la mejor base de datos que se pueda disenar.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa. |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Acerca de normalización de BD. | fide | Conexión con bases de datos | 7 | 25-03-2008 09:14:26 |
| La normalización de relaciones con Cuba, un tema explosivo en el seno de UE | Epachsoft | La Taberna | 2 | 04-04-2007 22:23:30 |
| Normalización Adecuada | plasma | Firebird e Interbase | 12 | 18-10-2006 04:57:01 |
|