Una empresa de fabricación de tintas nos ha pedido una base de datos.
La empresa necesita guardar información de sus clientes, concretamente el NIF y la razón social. Los clientes hacen pedidos, de los que queremos saber la fecha y la dirección de envío (calle, cp y población).
Los pedidos pueden ser de varios productos. De los productos queremos guardar la referencia, el precio y el stock que tenemos en almacén.
Por otro lado algunos productos se componen de otros productos. Para esos productos necesitamos guardar la la cantidad de cada uno de los productos de los que se componen. Por ejemplo yo puedo tener un producto tinta azul que se componga de 1 litro de disolvente, medio litro de colorante azul y 0,2 litros de espesante. Pero todos son productos.
Se pide el Modelo E-R, el modelo lógico y la implementación en base de datos (dejadla en los comentarios con vuestro nombre)
DROP TABLE IF EXISTS `clientes`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `clientes` (
`idclientes` int(11) NOT NULL AUTO_INCREMENT,
`nif` varchar(45) DEFAULT NULL,
`razonsocial` varchar(45) DEFAULT NULL,
PRIMARY KEY (`idclientes`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
—
— Dumping data for table `clientes`
—
LOCK TABLES `clientes` WRITE;
/*!40000 ALTER TABLE `clientes` DISABLE KEYS */;
/*!40000 ALTER TABLE `clientes` ENABLE KEYS */;
UNLOCK TABLES;
—
— Table structure for table `pedido_producto`
—
DROP TABLE IF EXISTS `pedido_producto`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `pedido_producto` (
`idpedido_producto` int(11) NOT NULL AUTO_INCREMENT,
`idpedido` int(11) DEFAULT NULL,
`idproducto` int(11) DEFAULT NULL,
PRIMARY KEY (`idpedido_producto`),
KEY `fk_pedido_idx` (`idpedido`),
KEY `fk_producto_idx` (`idproducto`),
CONSTRAINT `fk_pedido` FOREIGN KEY (`idpedido`) REFERENCES `pedidos` (`idpedidos`) ON UPDATE CASCADE,
CONSTRAINT `fk_producto` FOREIGN KEY (`idproducto`) REFERENCES `productos` (`idproductos`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
—
— Dumping data for table `pedido_producto`
—
LOCK TABLES `pedido_producto` WRITE;
/*!40000 ALTER TABLE `pedido_producto` DISABLE KEYS */;
/*!40000 ALTER TABLE `pedido_producto` ENABLE KEYS */;
UNLOCK TABLES;
—
— Table structure for table `pedidos`
—
DROP TABLE IF EXISTS `pedidos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `pedidos` (
`idpedidos` int(11) NOT NULL AUTO_INCREMENT,
`fecha` date DEFAULT NULL,
`calle` varchar(45) DEFAULT NULL,
`cp` varchar(45) DEFAULT NULL,
`poblacion` varchar(45) DEFAULT NULL,
`idcliente` int(11) DEFAULT NULL,
PRIMARY KEY (`idpedidos`),
KEY `fk_cliente_idx` (`idcliente`),
CONSTRAINT `fk_cliente` FOREIGN KEY (`idcliente`) REFERENCES `clientes` (`idclientes`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
—
— Dumping data for table `pedidos`
—
LOCK TABLES `pedidos` WRITE;
/*!40000 ALTER TABLE `pedidos` DISABLE KEYS */;
/*!40000 ALTER TABLE `pedidos` ENABLE KEYS */;
UNLOCK TABLES;
—
— Table structure for table `producto_producto`
—
DROP TABLE IF EXISTS `producto_producto`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `producto_producto` (
`idproducto_producto` int(11) NOT NULL AUTO_INCREMENT,
`idproductofinal` int(11) DEFAULT NULL,
`idproductocomponente` int(11) DEFAULT NULL,
`cantidad` decimal(10,4) DEFAULT NULL,
PRIMARY KEY (`idproducto_producto`),
KEY `fk_productofinal_idx` (`idproductofinal`),
KEY `fk_productocomponente_idx` (`idproductocomponente`),
CONSTRAINT `fk_productocomponente` FOREIGN KEY (`idproductocomponente`) REFERENCES `productos` (`idproductos`) ON UPDATE CASCADE,
CONSTRAINT `fk_productofinal` FOREIGN KEY (`idproductofinal`) REFERENCES `productos` (`idproductos`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
—
— Dumping data for table `producto_producto`
—
LOCK TABLES `producto_producto` WRITE;
/*!40000 ALTER TABLE `producto_producto` DISABLE KEYS */;
/*!40000 ALTER TABLE `producto_producto` ENABLE KEYS */;
UNLOCK TABLES;
—
— Table structure for table `productos`
—
DROP TABLE IF EXISTS `productos`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `productos` (
`idproductos` int(11) NOT NULL AUTO_INCREMENT,
`referencia` varchar(45) DEFAULT NULL,
`precio` decimal(10,4) DEFAULT NULL,
`stock` decimal(10,4) DEFAULT NULL,
PRIMARY KEY (`idproductos`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;