Bien. Si esos campos son preferencias de contacto, eso puede resolverse con un campo ENUM que tenga cuatro valores posibles, ya que en definitiva solamente necesitas un dato: QUé medio usar apra el contacto. Ese valor bien puede ser uncódigo numérico en que se asigne:
Cita: 1: Teléfono particular.
2: Telefono profesional.
3: e-Mail particular.
4: e-Mail profesional.
Respecto a los teléfonos, la cosa es parecida:
Código sql:
Ver originalCREATE TABLE contacto_Tel(
idcontacto INT NOT NULL,
telefono VARCHAR(14),
tipo_tel TINYINT NOT NULL,
PRIMARY KEY(idcontacto, telefono),
FOREIGN KEY idcontacto REFERENCES contacto(idcontacto)
)
Los e-Mails:
Código sql:
Ver originalCREATE TABLE contacto_eMail(
idcontacto INT NOT NULL,
eMail VARCHAR(100),
tipo_email TINYINT NOT NULL,
PRIMARY KEY(idcontacto, eMail),
FOREIGN KEY idcontacto REFERENCES contacto(idcontacto)
);
Esa sería más o menos la idea.
Con dos tablas relacionadas de esa forma, podrías tener uno o muchos teléfonos o e-Mails de la misma persona.