La Estructura que Simula una Base de Datos en PHP

 

Arrays Asociativos: La Estructura que Simula una Base de Datos en PHP

¡Excelente pregunta! Efectivamente, los arrays asociativos son los que más se parecen a una base de datos porque permiten una estructura organizada con claves y valores, similar a una tabla.

🏗️ Simulando una Tabla de Base de Datos

php
<?php
// Estructura que simula una tabla de usuarios en una BD
$usuarios = [
    [
        "id" => 1,
        "nombre" => "Ana García",
        "email" => "ana@email.com",
        "edad" => 28,
        "activo" => true,
        "fecha_registro" => "2024-01-15"
    ],
    [
        "id" => 2,
        "nombre" => "Carlos López",
        "email" => "carlos@email.com",
        "edad" => 35,
        "activo" => false,
        "fecha_registro" => "2023-11-20"
    ],
    [
        "id" => 3,
        "nombre" => "María Rodríguez",
        "email" => "maria@email.com",
        "edad" => 42,
        "activo" => true,
        "fecha_registro" => "2024-03-05"
    ]
];

// Acceso similar a consulta SQL
echo $usuarios[0]["nombre"]; // Ana García
echo $usuarios[1]["email"];  // carlos@email.com
?>

🔍 Operaciones Tipo CRUD con Arrays Asociativos

CREATE - Agregar nuevo registro

php
<?php
$nuevoUsuario = [
    "id" => 4,
    "nombre" => "Pedro Martínez",
    "email" => "pedro@email.com",
    "edad" => 31,
    "activo" => true,
    "fecha_registro" => date('Y-m-d')
];

$usuarios[] = $nuevoUsuario;
?>

READ - Buscar y leer datos

php
<?php
// Buscar usuario por ID (similar a SELECT * FROM usuarios WHERE id = 2)
function buscarUsuarioPorId($id, $usuarios) {
    foreach ($usuarios as $usuario) {
        if ($usuario["id"] == $id) {
            return $usuario;
        }
    }
    return null;
}

$usuarioBuscado = buscarUsuarioPorId(2, $usuarios);
print_r($usuarioBuscado);
?>

UPDATE - Actualizar registro

php
<?php
// Actualizar email del usuario con ID 1
foreach ($usuarios as &$usuario) {
    if ($usuario["id"] == 1) {
        $usuario["email"] = "nuevo_email@email.com";
        $usuario["activo"] = false;
        break;
    }
}
?>

DELETE - Eliminar registro

php
<?php
// Eliminar usuario con ID 3
foreach ($usuarios as $key => $usuario) {
    if ($usuario["id"] == 3) {
        unset($usuarios[$key]);
        break;
    }
}
// Reindexar array
$usuarios = array_values($usuarios);
?>

📈 Estructura Completa de Múltiples Tablas

php
<?php
// Base de datos completa en arrays asociativos
$baseDatos = [
    "usuarios" => [
        [
            "id" => 1,
            "nombre" => "Ana García",
            "rol_id" => 2
        ],
        [
            "id" => 2,
            "nombre" => "Carlos López", 
            "rol_id" => 1
        ]
    ],
    
    "roles" => [
        [
            "id" => 1,
            "nombre" => "Administrador",
            "permisos" => ["crear", "editar", "eliminar"]
        ],
        [
            "id" => 2, 
            "nombre" => "Usuario",
            "permisos" => ["leer"]
        ]
    ],
    
    "pedidos" => [
        [
            "id" => 101,
            "usuario_id" => 1,
            "producto" => "Laptop",
            "total" => 1200.50
        ]
    ]
];

// Consulta relacional (como JOIN en SQL)
function obtenerUsuarioConRol($userId, $baseDatos) {
    foreach ($baseDatos["usuarios"] as $usuario) {
        if ($usuario["id"] == $userId) {
            foreach ($baseDatos["roles"] as $rol) {
                if ($rol["id"] == $usuario["rol_id"]) {
                    $usuario["rol"] = $rol;
                    return $usuario;
                }
            }
        }
    }
    return null;
}

$usuarioCompleto = obtenerUsuarioConRol(1, $baseDatos);
print_r($usuarioCompleto);
?>

🎯 Ventajas de Usar Arrays Asociativos como BD

  1. Estructura clara - Claves descriptivas como columnas de tabla

  2. Búsqueda eficiente - Puedes buscar por cualquier campo

  3. Flexibilidad - Fácil de modificar y expandir

  4. Legibilidad - El código se auto-documenta

⚠️ Limitaciones

  • No escalable para grandes volúmenes de datos

  • Datos en memoria - Se pierden al terminar la ejecución

  • Sin transacciones - No hay ACID como en bases de datos reales

💡 Casos de Uso Ideales

  • Configuraciones de aplicación

  • Datos de prueba durante desarrollo

  • Cache simple en memoria

  • Pequeños conjuntos de datos estáticos

¿Quieres que profundice en cómo implementar alguna operación específica de base de datos con arrays? 😊

Comentarios

Entradas más populares de este blog

CMS3