none
Crear relación entre una tabla persona y una tabla domicilio. RRS feed

  • Pregunta

  • Hola amigos de la comunidad SQL

    Tengo una tabla Persona con los campos basicos (nombre, apellidos y telefono) , se debe registrar el domicilio de la persona teniendo en cuenta  el Pais, Ciudad, Region y la dirección exacta de su vivienda, como podria relacionar las tablas (Pais,Ciudad y Region)  con la tabla Persona, de manera que se cumpla con la normalizacion respectiva.

    Nota: Los id's de obtienen desde combobox anidados, en la aplicación.

    Estaré atento a la ayuda que se me brinde,

    saludos.


    • Editado Jose Alrey lunes, 19 de diciembre de 2016 1:32
    lunes, 19 de diciembre de 2016 1:24

Respuestas

  • Jose Alrey,

    ¿No has evaluado la posibilidad de persistir únicamente la unidad mínima de ubicación geográfica en la tabla [Persona]? Si contienes una columna para almacenar la región entonces por relación puedes conocer la ciudad y el país.

    Por otro lado, te recomiendo que tengas una sola tabla para contener las ubicaciones geográficas, bastará con adicionar una columna para crear la referencia y otra para definir el nivel de profundidad (país, región o ciudad).

    CREATE TABLE dbo.UbiGeo
    (
        Codigo int PRIMARY KEY NOT NULL,
        Nombre varchar(100) NOT NULL,
        CodigoParent int NULL FOREIGN KEY REFERENCES dbo.UbiGeo (Codigo)
        NivelProfundidad smallint NOT NULL
    )
    
    /*Ejemplo de inserción de datos*/
    INSERT INTO dbo.UbiGeo VALUES (1, 'País X', NULL, 1);
    INSERT INTO dbo.UbiGeo VALUES (2, 'Ciudad 1', 1, 2);
    INSERT INTO dbo.UbiGeo VALUES (3, 'Ciudad 2', 1, 2);
    INSERT INTO dbo.UbiGeo VALUES (4, 'Región 1', 2, 3);
    INSERT INTO dbo.UbiGeo VALUES (5, 'Región 2', 2, 3);
    INSERT INTO dbo.UbiGeo VALUES (6, 'Región 1', 3, 3);


    El formulario de registro puede mostrar desplegables para el país, la ciudad y la región (únicamente con fines de apoyar a la selección de una ubicación geográfica), pero únicamente persistirá el valor seleccionado para la región (nuevamente un de javu, creo que esto lo platicamos ampliamente tiempo atrás).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 19 de diciembre de 2016 1:45

Todas las respuestas

  • Jose Alrey,

    ¿No has evaluado la posibilidad de persistir únicamente la unidad mínima de ubicación geográfica en la tabla [Persona]? Si contienes una columna para almacenar la región entonces por relación puedes conocer la ciudad y el país.

    Por otro lado, te recomiendo que tengas una sola tabla para contener las ubicaciones geográficas, bastará con adicionar una columna para crear la referencia y otra para definir el nivel de profundidad (país, región o ciudad).

    CREATE TABLE dbo.UbiGeo
    (
        Codigo int PRIMARY KEY NOT NULL,
        Nombre varchar(100) NOT NULL,
        CodigoParent int NULL FOREIGN KEY REFERENCES dbo.UbiGeo (Codigo)
        NivelProfundidad smallint NOT NULL
    )
    
    /*Ejemplo de inserción de datos*/
    INSERT INTO dbo.UbiGeo VALUES (1, 'País X', NULL, 1);
    INSERT INTO dbo.UbiGeo VALUES (2, 'Ciudad 1', 1, 2);
    INSERT INTO dbo.UbiGeo VALUES (3, 'Ciudad 2', 1, 2);
    INSERT INTO dbo.UbiGeo VALUES (4, 'Región 1', 2, 3);
    INSERT INTO dbo.UbiGeo VALUES (5, 'Región 2', 2, 3);
    INSERT INTO dbo.UbiGeo VALUES (6, 'Región 1', 3, 3);


    El formulario de registro puede mostrar desplegables para el país, la ciudad y la región (únicamente con fines de apoyar a la selección de una ubicación geográfica), pero únicamente persistirá el valor seleccionado para la región (nuevamente un de javu, creo que esto lo platicamos ampliamente tiempo atrás).


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    lunes, 19 de diciembre de 2016 1:45
  • hola jose

    creo que esta figura ilustra como debes hacerlo

    lunes, 19 de diciembre de 2016 1:59