Al igual que, como ocurre en la realidad, una venta tiene asociado un producto, y éste una categoría, cuando modelamos la realidad usando tablas también éstas van a estar relacionadas entre sí.
Una duda legítima que podríamos tener es si resulta necesario tener la información con la que vamos a trabajar diseminada en diferentes tablas o si, por el contrario, podríamos plantearnos el trabajar con una única tabla. Considérese, por ejemplo, la siguiente tabla de ventas:
En ella tenemos toda la información: quién fue el cliente, en qué ciudad vive, el número de unidades que adquirió, el precio de venta de cada producto, qué producto adquirió y el fabricante del producto.
El trabajar con esta única tabla tiene ventajas e inconvenientes. Concretamente, en la columna “City” hay información repetida. Si Juan vive en Madrid, el texto “Madrid” va a aparecer repetido para todas las compras de Juan. Lo mismo ocurre con el precio de venta y el fabricante: El portátil "Laptop LG Gram" gran cuesta 1.800 € y es fabricado por LG, y esta información aparece repetida para cada venta de este producto. Esto supone que los datos van a ocupar más espacio en memoria y en disco duro y, si se trata de una tabla con muchas filas, esto puede ser un problema.
Por el contrario, la ventaja de este enfoque es que no necesitamos buscar dicha información en ninguna otra tabla: si queremos saber el fabricante de la primera venta que se hizo a Juan, no tenemos más que ir a la fila en cuestión, buscar el campo “Manufacturer” y leer su contenido. Todo es mucho más rápido y eficiente que si tuviésemos que buscar esta información en otra tabla.