La idea de este script php es generar un sql DDL para generar algunas bastantes tablas en una base sql.
<?php
header('Content-Type: text/plain; charset=utf-8');
$no_tablas = 40;
$type_a = explode('|','int|varchar(20)|char(5)|decimal(10,2)|date|time');
for($i=1; $i<=$no_tablas; $i++){
$no_campos = rand(3,12);
$foreign = (rand(0,1))? true: false;
$foreign_str = '';
$campos = array();
$campos[] = "\tid int not null primary key";
for($j=1; $j<=$no_campos; $j++){
$ctype = $type_a[ rand(0,count($type_a)-1) ];
if ($foreign && $ctype=='int' && $foreign_str==''){
$dest_tbl = "tabla_".rand(1,$i-1);
$foreign_str = "\tforeign_key (campo_$j) references $dest_tbl(id)";
$nullable = 'not null';
} else {
$nullable = (rand(0,1)==1) ? 'not null': '';
}
$campos[] = "\tcampo_$j $ctype $nullable";
}
$campos_str = join(",\n",$campos);
echo <<<EOF
create table tabla_$i (
$campos_str
$foreign_str
);
EOF;
}
?>
Una muestra del archivo de salida, es algo así:
create table tabla_1 (
id int not null primary key,
campo_1 varchar(20) ,
campo_2 date not null,
campo_3 time not null,
campo_4 char(5) not null,
campo_5 char(5) ,
campo_6 date not null,
campo_7 date not null,
campo_8 int not null,
campo_9 char(5) not null,
campo_10 date not null
foreign_key (campo_8) references tabla_1(id)
);
create table tabla_2 (
id int not null primary key,
campo_1 time ,
campo_2 varchar(20) ,
campo_3 date not null,
campo_4 time ,
campo_5 char(5) ,
campo_6 decimal(10,2) ,
campo_7 time
);
create table tabla_3 (
id int not null primary key,
campo_1 varchar(20) ,
campo_2 varchar(20) not null,
campo_3 time ,
campo_4 time ,
campo_5 int ,
campo_6 time not null,
campo_7 char(5) ,
campo_8 time ,
campo_9 decimal(10,2) ,
campo_10 date
);
No hay comentarios.:
Publicar un comentario