SQL Server - Duda sobre relacionamiento entidad fuerte débil.

 
Vista:

Duda sobre relacionamiento entidad fuerte débil.

Publicado por koga (1 intervención) el 14/11/2010 12:26:46
Estoy estudiando normalización que la verdad no se me da muy bien y surge de ahí la siguiente duda:
¿Cómo tratar a las tablas que son sub-tipo de una entidad fuerte?
Tratare de ilustrarlo con un ejemplo…
Supongamos que tengo una tabla personas

# Id_persona
Nombre
Apellido
Documento
Fecha_nacimiento
Dirección

Ahora, de las personas también me interesa saber por ejemplo su teléfono, que bien podría extenderse a un correo electrónico o una url personal… en fin hay varias cosas que podrían ser…
El asunto es que una persona puede tener más de un teléfono que de hecho es lo que sucede en la realidad práctica. Así que hago una tabla teléfonos y nacen mis dudas.
A) ¿Esta tabla teléfonos es la tabla teléfonos que alojara todos los teléfonos de la base de datos?
A.1) ¿En caso esta tabla teléfonos ser especifica, es decir teléfonos_ por_ personas, lleva clave primaria? A.2) ¿O al ser un atributo heredados de otra entidad ya hereda el atributo clave y no necesita una clave?

B) ¿Alguien me puede mostrar un ejemplo en SQL de cómo escribir la consulta para ver estos teléfonos unidos a los datos de la persona?

Bueno agradezco a quien me pueda ayudar a resolver esta duda que me tiene atrapado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Duda sobre relacionamiento entidad fuerte débil

Publicado por Loría (1 intervención) el 17/11/2010 00:22:00
Buenas tardes koga.

Esta consulta es una pregunta más relacionada a normalización de bases de datos que a la herramienta de MS SQL Server. Tenés que tomar en cuenta que si deseas que te respondan adecuadamente debes colocar tus preguntas en los foros correspondientes. De todas maneras te voy a responder.

Para empezar, si crees que una persona puede tener más de un teléfono ¿Porque no agregas dos campos en la tabla: Telefono1 y Telefono2, y te quitas de la idea de crear una nueva tabla? En caso de que la persona no posea un segundo teléfono simplemente lo dejas en NULL.

Si tienes motivos para este argumento, te respondo entonces:

A) Pues teóricamente, si para eso la deseas podrías aprovecharla
A.1) Yo siempre que he creado tablas, aunque no la necesiten estrictamente, siempre les pongo una PK (Primary Key). Cuando estés programando tu aplicación te vas a dar cuenta que necesitas un identificador para cada registro, aparte del ID de persona y su teléfono. También puedes crear una PK compuesta con estos dos campos si lo deseas, es cuestión de gustos. Yo prefiero la primera opción.
A.2) Definitivamente si necesita una clave. Tu eliges.

B) Umh ,vamos a ver, esto debería ser algo así:

SELECT T1.*,T2.*
FROM tabla1 T1
JOIN tabla2 T2 ON (T1.id_persona=T2.id_persona)

Basado en que la tabla1 tiene:

Id_persona
Nombre
Apellido
Documento
Fecha_nacimiento
Dirección

Y tabla2 tiene:

Id_tabla2
Id_persona
Telefono

Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar