none
Relacion de columnas que no son llave primaria RRS feed

  • Pregunta

  • Buenas noches estoy realizando una BD donde tengo dos tablas

    CREATE TABLE Proveedores
    (
    ProveedoresID INT PRIMARY KEY IDENTITY (1,1),
    Nombre VARCHAR (20) NOT NULL,
    Direccion NVARCHAR (25) NOT NULL,
    Provincia NVARCHAR (10) NOT NULL,
    Correo NVARCHAR (30) NOT NULL,
    Telefono NVARCHAR (15) NOT NULL,
    [Codigo postal] NVARCHAR (5) NOT NULL
    )

    CREATE TABLE Inventario
    (
    InventarioID INT PRIMARY KEY IDENTITY (1,1),
    [# Codigo de barras] INT NOT NULL,
    Nombre VARCHAR (20) NOT NULL,
    [Numero de factura o ticket] INT NOT NULL,
    Articulo VARCHAR (30) NOT NULL,
    Precio INT NOT NULL,
    CONSTRAINT FK_Inventario_Proveedores FOREIGN KEY (Proveedor) REFERENCES Proveedores (Nombre),
    Stock INT NOT NULL
    )

    Mi duda es como puedo relacionar las dos culmnas ya que de mi tabla proveedores la columna Nombre no es llave primaria ?

    jueves, 10 de enero de 2019 4:55

Respuestas

Todas las respuestas

  • Hola Oscar956:

    Eso que estas intentando va contra la normalización de bases de datos.

    El camino a seguir, es que tu tabla de inventario tenga el id del proveedor, y ese id, es el de la foreign key.

    Cuando extraes la información, entonces, es cuando obtienes el nombre de la tabla de proveedores.

    CREATE TABLE Proveedores
    (
    ProveedoresID INT PRIMARY KEY IDENTITY (1,1),
    Nombre VARCHAR (20) NOT NULL,
    Direccion NVARCHAR (25) NOT NULL,
    Provincia NVARCHAR (10) NOT NULL,
    Correo NVARCHAR (30) NOT NULL,
    Telefono NVARCHAR (15) NOT NULL,
    [Codigo postal] NVARCHAR (5) NOT NULL
    )
    go
    CREATE TABLE Inventario
    (
    InventarioID INT PRIMARY KEY IDENTITY (1,1),
    [# Codigo de barras] INT NOT NULL,
    ProveedoresId int not null,
    [Numero de factura o ticket] INT NOT NULL,
    Articulo VARCHAR (30) NOT NULL,
    Precio INT NOT NULL,
    CONSTRAINT FK_Inventario_Proveedores FOREIGN KEY (ProveedoresId) REFERENCES Proveedores (ProveedoresId),
    Stock INT NOT NULL
    ) 

    Si necesito sacar datos de inventario

    select 
    i.InventarioID,
    i.[# Codigo de barras],
    p.Nombre,
    i.[Numero de factura o ticket],
    i.Articulo,
    i.Precio,
    Stock
    FROM inventario i inner join proveedores p
    on i.proveedoresId = p.proveedoresId

    Normalizar Base de datos

    https://support.microsoft.com/es-es/help/283878/description-of-the-database-normalization-basics

    https://platzi.com/blog/normalizar-una-base-de-datos-y-no-morir-en-el-intento/


    jueves, 10 de enero de 2019 5:22
  • Muchas gracias me sirvio mucho tu informacion 
    jueves, 10 de enero de 2019 15:48
  • De nada.
    jueves, 10 de enero de 2019 16:17