Base de Datos - Relación Muchos a Muchos - Clave primaria compuesta (concatenada)

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ม.ค. 2025

ความคิดเห็น • 58

  • @SebaV239
    @SebaV239 3 หลายเดือนก่อน +1

    Muchas gracias por la explicación!!

    • @programacionymas
      @programacionymas  3 หลายเดือนก่อน

      Gracias también por comentar!

  • @germanastudillo3664
    @germanastudillo3664 2 ปีที่แล้ว +2

    Me sacaste de una duda que he tenido todo el día, muchas gracias bro. Explicas muy bien !

    • @programacionymas
      @programacionymas  2 ปีที่แล้ว

      Con gusto compañero! Gracias por el comentario también.

  • @julianhernandez5873
    @julianhernandez5873 5 ปีที่แล้ว +2

    Buenísimo video, muy bien explicado. Te felicito 👏🏻👏🏻

  • @gTosca_666
    @gTosca_666 4 ปีที่แล้ว +1

    Muy buena explicación colega. Suficiente para empezar y crear algo grande.

  • @yomisionero
    @yomisionero 3 หลายเดือนก่อน +1

    Buenas quería preguntarte si las relaciones M:N son siempre identificatorias. Iguales que la que muestras aquí. También, si uso la notación clásica con Rombos, he visto gente que las recuadra, vamos que parece una mezcla de entidad y relación, ya que hay un recuadro y un rombo dentro. ¿Me lo puedes confirmar?. Y una última pregunta. Hoy en día, dada la extensión y distancia del MERE con respecto al MER, todos empleamos la palabra MER, pero estamos usando el MERE, ¿correcto?... Me recuerda un poco al uso de la palabra entidad, relación, en lugar de conjunto de entidades y conjunto de relaciones, ya abreviamos y todos nos entendemos igualmente ¿no?.. ¿Tú recomiendas estas "abreviaciones"?
    . Gracias.

    • @programacionymas
      @programacionymas  3 หลายเดือนก่อน

      Hola. No siempre son identificatorias.
      Por ejemplo Libro y Autor, un libro puede ser escrito por various autores, y cada uno de ellos puede haber publicado varios libros.
      Para esos casos sin embargo, nos vamos a encontrar con tablas intermedias.

  • @agenciainformaticamx8198
    @agenciainformaticamx8198 3 ปีที่แล้ว +1

    Perfecto maestro, muy buen analisis cognitivo, tienes toda la razon la relacion Muchos a Muchos NO existe, es mas bien 2 relaciones

  • @hacmgt5675
    @hacmgt5675 8 ปีที่แล้ว +1

    Joder Bro Me has ayudado con tus videos muchas gracias por compartir con nosotros vuestro tiempo y conocimiento gracias saludos,....

  • @MrSamuelMora
    @MrSamuelMora 6 ปีที่แล้ว +1

    Excelente. Gracias....

  • @pauloayala4317
    @pauloayala4317 ปีที่แล้ว +1

    Tengo una duda. Aquí la tabla producto, hace referencia entiendo a un subgrupo de productos, o sea Tipo de Producto->Mouse, Subgrupo->Mouse Logitech GTX10600 (Tabla Producto), pero no hace referencia al producto único en sí, que suelen identificarse con un código de serie. Y porque además en la tabla de detalleVentas no podrías poner que vendiste dos o más productos con el mismo codigo de serie porque son únicos, a diferencia que si lo haces con las unidades de la tabla producto.
    Estoy en lo correcto?? Y Sería bueno saber como se agregaría una tabla que identifica a un único producto. Gracias.

    • @programacionymas
      @programacionymas  ปีที่แล้ว

      Hola Paulo. Tienes mucha razón. La tabla de productos no es suficiente para representar las existencias reales.
      Puedes crear una tabla llamada Existencias, o Inventario. Esta tabla tendría relación con el tipo de producto o subgrupo como lo llamas, y adicionalmente tendría una columna sku (o código único de serie).

  • @i310233
    @i310233 3 ปีที่แล้ว +1

    Hola, cordiales saludos, tengo una consulta y es la siguiente: Cuando creas un producto, lo haces con un id, descripción, precio de compra y venta respectivamente. Estos dos últimos campos, necesariamente deben ir al crear un producto nuevo? Lo pregunto ya que al realizar una compra, que tiene fecha diferente a la creación de un producto, este toma otro precio de compra y en consecuencia, un nuevo precio de venta. En este punto, imagino que haces un update en los campos involucrados al producto, verdad?

    • @programacionymas
      @programacionymas  3 ปีที่แล้ว

      Hola Edgar es una muy buena pregunta.
      En la tabla Productos guardamos el precio de compra y venta actual.
      Si los precios cambian, debemos actualizar en Productos.
      Pero al registrar una Venta también es importante guardar el precio, de modo que si los precios de un Producto cambian, afecten a las operaciones de Venta futuras, pero las antiguas conserven el valor que se tuvo al momento de realizar la venta.

  • @fanygomez3689
    @fanygomez3689 8 ปีที่แล้ว +1

    hola hola! necesito su ayuda!! tengo una tabla solicitud que va orientada datos de ingreso y el curso o carrera. Dicha tabla se alimenta de otras tablas pero al momento de eligir curso o carrera ( ya que son tablas separadas, las carreras no necesariamente tienen que pertenecer a un curso y viceversa).Tengo las tres tablas solicitud (id_solicitud,id_curso,id_carrera),curso y carrera pero no se como hacer , ya que si elijo curso iría null el id de carrera lo cual no es posible xq es fk.

    • @programacionymas
      @programacionymas  8 ปีที่แล้ว +1

      Hola. Es posible declarar una FK que acepte valores NULL.

    • @fanygomez3689
      @fanygomez3689 8 ปีที่แล้ว +1

      No habría problema si va en null, no rompo ninguna regla o si?
      #GraciasPorResponder

    • @programacionymas
      @programacionymas  8 ปีที่แล้ว +1

      No hay problema. Aquí un ejemplo:
      Varias páginas que ofrecen servicios tienen una sección de soporte, donde el cliente puede crear tickets explicando su duda o un problema que han tenido. Este ticket se crea con una clave foránea (FK) asociada al cliente, pero adicionalmente tiene una FK en null asociada a un personal de soporte.
      Esto tiene sentido, porque al inicio el ticket no se ha asignado a ningún personal de soporte, y es necesario crear en ese momento el ticket en la base de datos. Cuando un personal es asignado la FK se actualiza y deja de ser null, pero esto demuestra que los valores null se deben permitir para situaciones especiales.

    • @fanygomez3689
      @fanygomez3689 8 ปีที่แล้ว

      tengo algo así similar a como en el ejemplo que plantea usted, lo hice de esa manera, pero ya en otro lo realice en el primer registro de la tabla fuerte deje por ejemplo id = 1, nombre = Sin especificar , ya en la tabla dependiente en caso de ser null insertaba el id = 1. Para no dejar vació el campo. Ambas son validas?

    • @programacionymas
      @programacionymas  8 ปีที่แล้ว +1

      Mientras no te confundas y comprendas la lógica que sigues incluso si lo ves un par de meses después todo bien :)

  • @programacionymas
    @programacionymas  10 ปีที่แล้ว

    Jorge G Hola, el programa se llama ERwin Data Modeler

  • @thelobitoxd9170
    @thelobitoxd9170 4 ปีที่แล้ว +1

    man mi profe dice que en erwin detalle venta sus claves foraneas no deben tener el icono de clave primario, y dice q cuando lo exportas a sql server va haber errores... q dices?

    • @programacionymas
      @programacionymas  4 ปีที่แล้ว

      Hola. Generalmente no recomiendo exportar diagramas a código SQL.
      Es preferible escribir el código manualmente, sobretodo cuando uno recién empieza a usar bases de datos.
      Ya en temas de desarrollo existen herramientas para definir el esquema de una BD, por ejemplo, Laravel permite hacer uso de migraciones.

    • @thelobitoxd9170
      @thelobitoxd9170 4 ปีที่แล้ว

      @@programacionymas eso de la exportacion lo entiendo, pero las FK de DETALLE_VENTA tienen el icono de clave primaria

  • @arturodominguez989
    @arturodominguez989 8 ปีที่แล้ว

    lo q pasa q yo cuando cree la tabla " detalleVenta" como tu lo isiste....se crea dentro de esa tabla las clave foraneas " codCliente y codEmpleado" osea tengo cuatro clave foranea dentro de mi tabla " detalleVenta" eso es normal?? o solo debe estar la foranea "codVenta y codProducto" responde porfa

  • @albertocime6327
    @albertocime6327 6 ปีที่แล้ว

    Hola amigo, buen video, una pregunta, ¿ como se realizaria la busqueda a traves de sql? buscando directamente en la tabla pivote o buscando en la tabla correspondiente: select * from productos where codVenta=3, o ¿ como se haria?

    • @programacionymas
      @programacionymas  6 ปีที่แล้ว

      Hola Alberto.
      La consulta que has puesto busca productos con relación a un codVenta.
      ¿Qué es lo que quieres buscar?
      Porque las búsquedas las puedes hacer directamente sobre una tabla, o partiendo desde otra y usando JOINs: th-cam.com/video/eNikUI0Y8y8/w-d-xo.html

  • @donfreecss1803
    @donfreecss1803 4 ปีที่แล้ว +1

    hola 2 preguntas en la tabla DetalleVenta; si yo relleno los registros de las VENTAS y PRODUCTOS, la tabla se rellena sola o tengo que hacer un triger o esas cosas para que la tabla se rellene sola?
    Mi segunda consulta es porque estoy en una tarea de universidad. OK, digamos que la tabla detalleVeNTA se rellene sola, (tal vez no)
    Si yo quiero hacer una consulta para que me todos los productos de una factura específica::::::::: no existe en una sola tabla y por lo tanto debo hacer un procedimiento almacenado para que junte las 3 tablas??????? OOOOOOOOOOOO
    O es que en la tabla ventas debo poner el codVenta yCodProducto como parra tenerlo ya en la tabla y el sistema lo pueda leer?

    • @programacionymas
      @programacionymas  4 ปีที่แล้ว

      Hola. Respecto a la pregunta (1), tú tienes que proporcionar los datos a una consulta INSERT para crear los registros correspondientes en la tabla DetalleVenta.
      Los triggers se usan para desencadenar acciones en otras tablas. Por ejemplo, si tienes una tabla stock, allí podrían aplicarse.
      Respecto a la consulta (2), si una Venta es equivalente a una Factura, entonces sólo necesitas hacer un SELECT de la tabla Venta, para obtener información general (como el vendedor y el cliente), y luego otro SELECT para traer los detalles. También podrías hacer un sólo SELECT y juntar la información de otras tablas usando JOINs.
      Te recomiendo ver este video que explica sobre la cláusula JOIN: th-cam.com/video/eNikUI0Y8y8/w-d-xo.html

  • @deboranicolebustamante8244
    @deboranicolebustamante8244 4 ปีที่แล้ว

    Una pregunta y como se agregaría los datos en SQL? Inserta into tabla values ( ' las dos llaves primarias aquí juntas')?

    • @programacionymas
      @programacionymas  4 ปีที่แล้ว

      Hola. Sí... aunque en realidad no importa el orden, pero los valores deben proporcionarse.
      Por ejemplo, puedes usar INSERT INTO tabla (col1, col2, ...) VALUES (val1, val2, ...);

  • @outofcontrol1342
    @outofcontrol1342 4 ปีที่แล้ว +1

    para evitar eso no sería solución acuñar un "Id" en todas las tablas dejando el código que viene de otras tablas?

    • @programacionymas
      @programacionymas  4 ปีที่แล้ว

      Correcto. Añadir un id entero como PK, sin signo, autoincremental, es una práctica muy usada en el modelado de bases de datos relacionales.

  • @74372456
    @74372456 10 ปีที่แล้ว

    Hola , que interesante...
    Que programa usas para graficar la E/R de las tablas?

  • @davidbazan9139
    @davidbazan9139 7 ปีที่แล้ว +1

    Hola, en tu ejemplo muestras dos claves primarias en una tabla detalle... Tengo una duda ¿Puede haber más de 2 claves primarias en una tabla?

    • @programacionymas
      @programacionymas  7 ปีที่แล้ว +1

      Hola David. Sí es posible. A eso se le conoce como tener una "clave primaria compuesta".
      Sin embargo, en la práctica no se aconseja tener muchas PK.

    • @davidbazan9139
      @davidbazan9139 7 ปีที่แล้ว +2

      Programación y más ¡Gracias por la respuesta!

  • @judithdazahurtado250
    @judithdazahurtado250 7 ปีที่แล้ว +1

    hola..sería correcto crear un campo adicional en la tabla detalle como pk

    • @programacionymas
      @programacionymas  7 ปีที่แล้ว

      Hola Judith. Depende de lo que estés intentando lograr.
      Desde un punto de vista general, esta columna pk es innecesaria, pero tal vez la necesites o te ayude en algo, en ese caso no está mal hacerlo.
      Recuerda que al final lo que importa es que la bd sea segura y no complique el desarrollo de las aplicaciones que estarán asociadas con la bd.

  • @lacuevadelinsecto
    @lacuevadelinsecto 6 ปีที่แล้ว

    El concepto lo entendí perfectamente, lo que no entiendo es cómo funciona en SQL hacer una llave foránea, de lo que sería una llave compuesta de una entidad fuerte. Ej: (fuerte) create table a(
    Id integer not null auto_increment, document varchar(12) not null,
    primary key (id, document)
    );
    (debil) create table b(
    id integer not null,
    document varchar (12)
    );
    alter table b add constraint fk_b foreign key id references a (id);
    alter table b add constraint fk_b2 foreign key document references a (document);
    No me permite agregar la segunda.

    • @programacionymas
      @programacionymas  6 ปีที่แล้ว

      Hola. Lo siento por la demora en mi respuesta.
      En la tabla "a" el campo "document" se define como not null.
      En la tabla "b" el campo no tiene esa definición.
      Ambos deben coincidir totalmente para que se pueda definir la relación.

  • @Str4tc4str
    @Str4tc4str 3 ปีที่แล้ว

    hola que tal, como se llena la tabla "DetalleVenta"?, saludos

    • @programacionymas
      @programacionymas  3 ปีที่แล้ว

      Hola. Puedes usar un INSERT como con cualquier otra tabla, solo tener cuidado de enviar los valores correctos.

  • @mayerlibetancourt9155
    @mayerlibetancourt9155 3 ปีที่แล้ว +1

    HOLA YO LO HICE Y ME HAN CALIFICADOMAL ME DICE ESTO EL PROFESOR Y NO LE ENTIENDO PODRIAS AYUDARME POR FAVOR,GRACIAS: No introduce una tabla entre la tabla ventas y productos que ayuda a evitar la relación muchos a muchos con todos los campos de información requeridos.

    • @mayerlibetancourt9155
      @mayerlibetancourt9155 3 ปีที่แล้ว +1

      Se visualiza un alto porcentaje de percepción del estudio de caso. Asocia un alto porcentaje de los elementos requeridos en la actividad. Asocia información en un modelo entidad y relación teniendo en cuenta un alto porcentaje de las pautas planteadas. Elabora la tabla clientes con un alto porcentaje de los campos de información requeridos. Elabora la tabla productos con un alto porcentaje de los campos de información requeridos. Elabora la tabla ventas con un alto porcentaje de los campos de información requeridos. Elabora la tabla descuentos con un alto porcentaje de los campos de información requeridos. No introduce una tabla entre la tabla ventas y productos que ayuda a evitar la relación muchos a muchos con todos los campos de información requeridos. Elabora una relación correcta entre la tabla venta y la tabla descuentos. Elabora una relación correcta entre la tabla venta y la tabla cliente.

    • @programacionymas
      @programacionymas  3 ปีที่แล้ว

      Hola. Tendría que ver el modelado que presentaste para entender mejor el contexto.

  • @arturodominguez989
    @arturodominguez989 8 ปีที่แล้ว

    empleado y ventas mantine relacion de uno a muchos o de muchos a muchos? y por q

    • @programacionymas
      @programacionymas  8 ปีที่แล้ว

      La relación es de uno a muchos, porque cada empleado puede realizar muchas ventas.
      Muchos a muchos indicaría que una venta puede ser registrada por varios empleados a la vez.

    • @arturodominguez989
      @arturodominguez989 8 ปีที่แล้ว

      gracias amigo muy amable de donde es usted amigo cual su correo gmail amigo :) aver si me ayuda en otro momento

  • @arturodominguez989
    @arturodominguez989 8 ปีที่แล้ว

    nose si te podria mandar mi erwin q hize para k me ayudes amigo !!!

  • @agustin7105
    @agustin7105 3 ปีที่แล้ว +1

    willyrex