El modelo físico es donde la teoría se convierte en práctica. Si seguimos con la analogía de construir una casa, esta etapa representa la transformación de los planos detallados en estructuras tangibles. Es aquí donde las ideas se convierten en implementaciones concretas al diseñar las entidades, los atributos y las relaciones en un nivel técnico, especificando cómo todo será implementado en el sistema.
Para construir un modelo físico, el primer paso es definir los tipos de datos para cada atributo de las entidades. Esto determina qué tipo de información puede almacenar cada columna en la base de datos y cómo se estructurará esa información. Por ejemplo, los números de identificación pueden requerir un tipo de datos numérico, mientras que los nombres de productos o clientes usarán cadenas de texto. Regresemos a nuestro ejemplo del comercio electrónico con las entidades clientes, pedidos y productos. Estas entidades deben incluir todos los atributos definidos previamente en el modelo lógico, pero ahora necesitamos agregar los detalles técnicos específicos, como los tipos de datos y las restricciones asociadas.
Un buen diseño físico no solo refleja el modelo lógico, sino que también optimiza el almacenamiento y las consultas en la base de datos. Esto implica considerar índices, particiones y otras configuraciones que puedan mejorar el rendimiento del sistema a medida que crece el volumen de datos.
Uno de los aspectos fundamentales en el diseño del modelo físico es la asignación de una clave primaria (PK, por sus siglas en inglés) a cada entidad. La clave primaria asegura que cada registro en una tabla sea único y no se repita, proporcionando una referencia confiable para identificar cualquier registro de manera inequívoca.
En el modelo de comercio electrónico, las claves primarias para las entidades principales serían:
Customer ID es la clave primaria, que identifica de manera única a cada cliente.Invoice Number es la clave primaria, que asegura que cada pedido sea único.Stock Code es la clave primaria, que identifica de manera exclusiva a cada producto en el inventario.Por ejemplo, al diseñar la tabla de productos, especificamos Stock Code como una clave primaria con un tipo de datos VARCHAR(255). Esto garantiza que cada producto tenga un identificador único que permita asociarlo con otros elementos del modelo, como los pedidos:
CREATE OR REPLACE TABLE products (
stock_code VARCHAR(255) PRIMARY KEY,
product_name VARCHAR(255),
price DECIMAL(10, 2),
quantity_available INT,
category VARCHAR(100)
);
Además, podemos agregar atributos adicionales como category para clasificar los productos y hacer que las consultas sean más flexibles. Esta estructura asegura que cada producto se registre una sola vez en la tabla, aunque pueda aparecer en múltiples pedidos a lo largo del tiempo.
El siguiente paso es establecer las relaciones entre las entidades mediante claves foráneas (FK, por sus siglas en inglés). Las claves foráneas son esenciales para crear vínculos entre tablas, utilizando las claves primarias de las tablas relacionadas. Esto permite construir un sistema relacional donde las entidades están interconectadas, reflejando las relaciones definidas en el modelo lógico.
En nuestro modelo de comercio electrónico, cada pedido puede incluir múltiples productos. Para reflejar esta relación, necesitamos agregar una clave foránea a la tabla de pedidos que haga referencia a la clave primaria de la tabla de productos. Este proceso implica dos pasos principales:
stock_code con el tipo de datos VARCHAR(255).