Sigo con el hilo, aunque ya no es exactamente una duda de normalizacion.
Estoy haciendo ahora la logica de edicion y borrado de los telefonos. Finalmente opte por la solucion de Xtrmdr, con una tabla de maestros y otras para las relaciones (telefono_sociedad, telefono_cliente) etcetera. Ahora mi duda viene sobre cuando debo borrar y editar, y sobre que.
Me explico. Supongamos que tenemos a un cliente Alice y otro Bob. Alice tiene el telefono N1, el N2 y el N4. Bob, el N3 y el N4. Si quiero borrar el telefono de Alice N1, lo mejor seria que borre de la tabla de relacion, y seguiria en la de maestros (serian datos que estan ahi aunque no pertenezca nadie). Luego, supongo que con algo en PL/SQL o un trigger o similiar podria hacer limpieza de los telefonos no metidas en ninguna tabla de relacion y santas pascuas.
Ahora, supongamos que quiero borrar el N4 de Alice. Al borrar de la tabla de relaciones, no se borra de la de maestros y Bob sigue teniendo ese número. Bien.
Y si quiero editar, ¿que debo hacer? Supongamos, de nuevo, Alice con N1, N2 y N4. Bob con N3 y N4. Si desde el formulario de Bob edito N3, debería editarlo sobre la de maestros (y en cascada editaria la tabla de relaciones). Al no tener nadie mas el numero de telefono N3, no pasaría nada. Pero si desde el formulario de Bob edito N4 (tambien sobre maestros), le estaría cambiando el numero a Alice sin querer (por la cascada). ¿Hay que hacer comprobacion de si aparece en mas sitios? ¿Seria un select con group by having count, o algo parecido? ¡La de dudas que saltan cuando haces un proyecto (aunque sea pequeño) que ni te planteas en clase!
No se si voy bien encaminado o no... ¡Gracias!