none
Como crear una tabla con PK,FK1 RRS feed

  • Pregunta

  • Buen dia,
    Tal vez la pregunta sea super basica, pero yo soy nuevo en esto y no entiendo ese concepto.

    Como creo una columna que sea PK,FK1 en una tabla?.

    Se que Cod_Proy y Cod_Emp son PK en otra tabla, pero en la tabla ProyXEmp como
    puede haber dos columnas que sean PK???

    Les adjunto una imagen para que me entiendan mejor.

    domingo, 4 de agosto de 2019 22:44

Respuestas

  • Hola TheRealJoker7:

    El concepto es muy simple. Con tu esquema, en esa tabla de relaciones n a m, tendrás por ejemplo registros del proyecto 1 varios, por tanto no puede ser clave primaria, registros del empleado 1 varios, porque pertenece a varios proyectos, por tanto no puede ser primary key, y tendrás un único registro del proyecto 1 y empleado 1, por tanto la combinación de estas dos columnas hacen que el registro sea único.

    Con esta tabla intermedia, es una manera de permitir que dos tablas se relacionen entre si n a m.

    CREATE TABLE PROYECTO (
          COD_PROY INT NOT NULL PRIMARY KEY
        , DESCRIPCION VARCHAR(100)
    );
    GO
    CREATE TABLE EMPLEADO (
    	     COD_EMP VARCHAR(10) NOT NULL PRIMARY KEY
    	   , NOMBRE VARCHAR(100)
    );
    GO
    --- SENTENCIA DE CREACIÓN DE LA TABLA CON FOREIGN KEY Y PRIMARI KEY
    CREATE TABLE PRO_EMP (
        COD_PROY INT NOT NULL FOREIGN KEY REFERENCES PROYECTO (COD_PROY),
        COD_EMP VARCHAR(10) NOT NULL FOREIGN KEY REFERENCES EMPLEADO (COD_EMP),
        HORAS_DIA INT NULL
        PRIMARY KEY (COD_PROY, COD_EMP)
    );
    GO
    --- FIN DE LO SOLICITADO

    Datos de ejemplo

    INSERT INTO PROYECTO (COD_PROY, DESCRIPCION)
    VALUES 
    (1,'PROY1'),
    (2,'PROY2');
    GO
    INSERT INTO EMPLEADO (COD_EMP, NOMBRE)
    VALUES
    ('A-001','ANA'),
    ('A-002','BEA'),
    ('A-003','ISMA'),
    ('A-004','CARLOS'),
    ('A-005','SILVIA'),
    ('A-006','FEDE'),
    ('A-007','RODRI'),
    ('A-008','EVA');
    GO
    INSERT INTO PRO_EMP(COD_PROY,COD_EMP, HORAS_DIA)
    VALUES
    (1,'A-002',5),
    (1,'A-003',4),
    (2,'A-005',NULL),
    (2,'A-006',9),
    (2,'A-007',2),
    (2,'A-008',8),
    (2,'A-003',4),
    (1,'A-007',1);

    El usuario A-003 participa en los proyectos 1 y 2, así como el A-007

    Espero te ayude

    lunes, 5 de agosto de 2019 5:55