Skip to content

Instantly share code, notes, and snippets.

@siiky
Created May 7, 2019 23:12
Show Gist options
  • Save siiky/cff02ddae61561a31c6c1135080406a9 to your computer and use it in GitHub Desktop.
Save siiky/cff02ddae61561a31c6c1135080406a9 to your computer and use it in GitHub Desktop.
ちっちゃいなscript to generate random data for a database
(import srfi-1
(chicken format)
(chicken random)
(chicken string))
(define-constant *NAULAS* 150)
(define-constant *NCLIENTES* 100)
(define-constant *NFUNCS* 10)
(define-constant *NINSTRS* 80)
(define-constant *NVENDAS* 40)
(define-constant TYPE-CORDAS '((0 "'guitarra'") (1 "'baixo'") (2 "'banjo'") (3 "'cravo'")))
(define-constant TYPE-PERCUSSAO '((4 "'bateria'") (5 "'triangulo'")))
(define-constant TYPE-SOPRO '((6 "'kazoo'") (7 "'gaita de foles'") (8 "'harmonica'") (9 "'orgao'")))
(define-constant ALL-TYPES `(,@(map (lambda (t) (append t '(0))) TYPE-CORDAS)
,@(map (lambda (t) (append t '(1))) TYPE-PERCUSSAO)
,@(map (lambda (t) (append t '(2))) TYPE-SOPRO)))
(define (left-pad w c n)
(let ((s (sprintf "~A" n)))
(let ((l (string-length s)))
(let ((m (- w l)))
(if (<= l w)
(string-append (make-string m c) s)
s)))))
;;;
;;; PRINT PROCEDURES
;;;
(define (print-values vals)
(define (print-entry entry)
(string-append
" ("
(string-intersperse (map ->string entry) ", ")
")"))
(string-intersperse (map print-entry vals) ",\n"))
(define (print-table-entries table schema entries)
(string-append
"\nINSERT INTO " table "\n"
" " schema "\n"
" VALUES\n"
entries
";\n"))
(define (print-funcionarios-sql funcionarios)
(print-table-entries
"Funcionario"
"(NrFunc, Nome, NIF, Tele, Salario, Prof, Morada)"
(print-values funcionarios)))
(define (print-clientes-sql clientes)
(print-table-entries
"Cliente"
"(NrClnt, Nome, NIF, Tele, Email, Aluno, Morada)"
(print-values clientes)))
(define (print-aulas-sql aulas)
(print-table-entries
"Aula"
"(IdAula, Data, Preco, NumAls, Tipo, Funcionario)"
(print-values aulas)))
(define (print-vendas-sql vendas)
(string-append "\n" (string-intersperse vendas "\n") "\n"))
(define (print-aulas-marcadas-sql marcadas)
(string-append "\n" (string-intersperse marcadas "\n") "\n"))
(define (print-moradas-sql moradas)
(print-table-entries
"Morada"
"(idMorada, Rua, CodPost, Localidade)"
(print-values moradas)))
(define (print-instrumentos-sql insts)
(print-table-entries
"Instrumento"
"(IdInst, Modelo, Marca, Material, Preco, Stock, Tipo)"
(print-values insts)))
(define (print-categorias-sql cats)
(print-table-entries
"Categoria"
"(idCat, Designacao)"
(print-values cats)))
(define (print-tipos-sql types)
(print-table-entries
"Tipo"
"(IdTipo, Designacao, Categoria)"
(print-values types)))
;;;
;;; RANDOM PROCEDURES
;;;
(define (random-bool)
(zero? (random-int-between 0 2)))
(define (random-int-between from to)
(let ((N (- to from)))
(+ (pseudo-random-integer N) from)))
(define (random-list n proc #!optional args)
(define (random-list-int ret n proc args)
(if (zero? n)
ret
(random-list-int
(cons (if args (proc args) (proc))
ret)
(- n 1)
proc
args)))
(random-list-int '() n proc args))
(define (random-date-between from to)
(let ((y0 (car from))
(m0 (cadr from))
(d0 (caddr from))
(y1 (car to))
(m1 (cadr to))
(d1 (caddr to)))
(string-append
"'"
(string-intersperse
`(,(left-pad 4 #\0 (random-int-between y0 y1))
,(left-pad 2 #\0 (random-int-between m0 m1))
,(left-pad 2 #\0 (random-int-between d0 d1)))
"-")
"'")))
(define (random-elem list)
(let ((len (length list)))
(let ((N (random-int-between 0 len)))
(list-ref list N))))
(define *FNAMES* '("Aarao" "Abel" "Abelardo" "Abilio" "Acacio" "Acursio" "Adao" "Adelina" "Adelino" "Adelio" "Adolfo" "Adorinda" "Adriana" "Adriano" "Adriao" "Afonso" "Agata" "Agostinha" "Agostinho" "Agueda" "Aires" "Albano" "Albertino" "Alberto" "Albina" "Albino" "Alceu" "Aldonca" "Aleixo" "Alexandra" "Alexandre" "Alexandrina" "Alexandrino" "Alfredo" "Alonso" "Alvaro" "Amadeu" "Amador" "Amara" "Amaro" "Ambrosio" "Amelia" "Americo" "Amilcar" "Ana" "Anacleto" "Anastacia" "Anastacio" "Anastasia" "Andre" "Andresa" "Andreza" "Angela" "Angelica" "Angelico" "Angelina" "Angelo" "Anibal" "Aniceto" "Anselmo" "Antao" "Antonia" "Antonino" "Antonio" "Apelonia" "Apolinaria" "Apolinario" "Apolonia" "Aprigio" "Aquilino" "Arcangela" "Arcanja" "Arcanjo" "Armando" "Arminda" "Armindo" "Arnaldo" "Artur" "Ascencao" "Ascencia" "Ascencio" "Assuncao" "Atanasio" "Atenodoro" "Augusta" "Augusto" "Aurelia" "Aureliano" "Aurelio" "Avelino" "Balbina" "Balbino" "Baltazar" "Balteria" "Barbara" "Barnabe" "Bartolomeu" "Barzeliza" "Basilio" "Batista" "Beatris" "Beatriz" "Bebiana" "Belchior" "Belizenda" "Belmira" "Benedita" "Benedito" "Benigno" "Benilde" "Benjamim" "Benta" "Bento" "Bernarda" "Bernardina" "Bernardino" "Bernardo" "Boaventura" "Bonifacio" "Branca" "Bras" "Brasia" "Brigida" "Briolanja" "Brisida" "Brisisa" "Brites" "Brizida" "Bruno" "Caetana" "Caetano" "Calisto" "Camila" "Camilo" "Candida" "Candido" "Carlos" "Carlota" "Carolina" "Casimira" "Casimiro" "Catarina" "Cecilia" "Celestino" "Celidonio" "Cesario" "Cipriana" "Cipriano" "Cipriao" "Clara" "Clarina" "Claudia" "Claudina" "Claudino" "Claudio" "Clemencia" "Clemente" "Clementina" "Clementino" "Cleto" "Clidonia" "Comba" "Conceicao" "Constanca" "Constancia" "Constantina" "Constantino" "Cosme" "Crescencia" "Cribonio" "Crisostomo" "Crispiana" "Crispiano" "Crispim" "Crispina" "Cristina" "Cristovao" "Cruz" "Custodia" "Custodio" "Damasa" "Damasia" "Damaso" "Damiana" "Damiao" "Daniel" "Daniela" "David" "Delfim" "Delfina" "Delmira" "Deolinda" "Desiderio" "Dinis" "Diogo" "Dionisia" "Dionisio" "Domingas" "Domingos" "Domitila" "Dona" "Donato" "Doroteia" "Duarte" "Edelmira" "Eduarda" "Eduardo" "Efigenia" "Egas" "Egidio" "Eleuterio" "Elias" "Elisa" "Eliseu" "Elvira" "Elziario" "Emerencia" "Emerenciana" "Emilia" "Emiliana" "Emilio" "Eminencia" "Engracia" "Epifanio" "Ermelinda" "Erminda" "Ernesto" "Escolastica" "Esmenia" "Esperanca" "Estacia" "Estacio" "Estanislau" "Estefania" "Esteva" "Estevao" "Eufemia" "Eufrasia" "Eugenia" "Eugenio" "Eulalia" "Eurico" "Eusebia" "Eusebio" "Eva" "Evaristo" "Ezequiel" "Fabiana" "Fabiao" "Facundo" "Faustina" "Faustino" "Felicia" "Feliciana" "Feliciano" "Felicidade" "Felicio" "Felicissimo" "Felisberta" "Felisberto" "Felisbina" "Felisbino" "Felix" "Felizarda" "Felizardo" "Fernando" "Fernao" "Fiel" "Filipa" "Filipe" "Filomena" "Firmina" "Firmino" "Flaviana" "Flaviano" "Flora" "Florenca" "Florencia" "Florencio" "Florentino" "Floriana" "Florida" "Florinda" "Fortunata" "Fortunato" "Fradique" "Francisca" "Francisco" "Frederico" "Frutuosa" "Frutuoso" "Gabriel" "Gabriela" "Garcia" "Gaspar" "Gastao" "Gaudencio" "Genebra" "Genoveva" "Geralda" "Geraldo" "Gerardo" "Germana" "Germano" "Germao" "Gertrudes" "Gervasio" "Gil" "Godinha" "Gomes" "Goncalo" "Gracia" "Gracinda" "Gregoria" "Gregorio" "Grimaneza" "Gualter" "Guilherme" "Guilhermina" "Guiomanesa" "Guiomar" "Heitor" "Helena" "Heliodoro" "Henrique" "Henriqueta" "Herculano" "Hermano" "Hermenegildo" "Hermogena" "Higinio" "Hilaria" "Hilario" "Hipolita" "Hipolito" "Hizinio" "Hortensia" "Ilidio" "Inacia" "Inacio" "Ines" "Inocencia" "Inocencio" "Isabel" "Isac" "Isidorio" "Isidoro" "Isidro" "Ismael" "Jacinta" "Jacinto" "Jacob" "Jacoma" "Jacome" "Jaime" "Jaimes" "Janes" "Januario" "Jasme" "Jeremias" "Jeronima" "Jeronimo" "Joana" "Joao" "Joaquim" "Joaquina" "Jorge" "Jose" "Josefa" "Josefina" "Julia" "Juliana" "Juliao" "Julio" "Justa" "Justina" "Justiniano" "Justino" "Laura" "Laureana" "Laureano" "Laurentino" "Lauriana" "Laurinda" "Lazaro" "Leandra" "Leandro" "Leao" "Leocadia" "Leonarda" "Leonardo" "Leonel" "Leonesa" "Leonor" "Leopoldina" "Leopoldino" "Leopoldo" "Libania" "Liberata" "Lidorio" "Lina" "Lino" "Lizardo" "Lopo" "Lourenca" "Lourenciana" "Lourenco" "Lucas" "Lucia" "Luciana" "Luciano" "Lucinda" "Lucio" "Lucrecia" "Ludovica" "Ludovina" "Luis" "Luisa" "Lusia" "Luzia" "Madalena" "Mafalda" "Maior" "Maker" "Mamede" "Manuel" "Manuela" "Marcal" "Marcalo" "Marcela" "Marceliano" "Marcelina" "Marcelino" "Marcelo" "Marciana" "Marcos" "Margarida" "Maria" "Mariana" "Marilia" "Marinha" "Marinho" "Mario" "Marquesa" "Marta" "Martim" "Martina" "Martinho" "Martiniano" "Matea" "Mateia" "Mateus" "Matias" "Matilde" "Matildes" "Mauricia" "Mauricio" "Maxima" "Maximiano" "Maximino" "Maximo" "Mecia" "Meletina" "Mendo" "Merencia" "Merenciana" "Metilde" "Metildes" "Mexia" "Micaela" "Miguel" "Miquelina" "Monica" "Narcisa" "Narciso" "Natalia" "Nazario" "Neutel" "Neves" "Nicolacia" "Nicolaia" "Nicolau" "Nuno" "Olimpia" "Oscar" "Ovidio" "Paio" "Pantaleao" "Pascoa" "Pascoal" "Patricia" "Patricio" "Patronilha" "Paula" "Paulino" "Paulo" "Pedro" "Pelonia" "Pero" "Perpetua" "Placida" "Placido" "Policarpo" "Policena" "Polidoro" "Polonia" "Ponciano" "Porcina" "Porfirio" "Possidonio" "Potencia" "Potenciana" "Praxedes" "Prospero" "Prudencia" "Prudenciana" "Prudencio" "Pulqueria" "Purissima" "Querubina" "Quintiliano" "Quirino" "Quiteria" "Rafael" "Rafaela" "Raimundo" "Ramos" "Raquel" "Raul" "Rebocata" "Reinaldo" "Remigia" "Remigio" "Ricardo" "Rita" "Roberto" "Rodrigo" "Romao" "Romualdo" "Roque" "Rosa" "Rosalia" "Rosalina" "Rosaria" "Rosenda" "Rosendo" "Rubriano" "Rufina" "Rufino" "Rui" "Sabina" "Salustiano" "Salvador" "Sancho" "Sancia" "Santas" "Santos" "Sebastiana" "Sebastiao" "Secundino" "Sencio" "Senhorinha" "Serafim" "Serafina" "Serafino" "Sergio" "Severina" "Severino" "Silvana" "Silvano" "Silveria" "Silverio" "Silvestre" "Silvina" "Silvino" "Simao" "Simeao" "Simoa" "Sinfronio" "Sinfrosia" "Sofia" "Soledade" "Susana" "Tadeu" "Tecla" "Teobaldo" "Teodora" "Teodoria" "Teodoro" "Teodosia" "Teodosio" "Teofilo" "Teotonia" "Teotonio" "Teresa" "Tiago" "Timoteo" "Tomas" "Tomasia" "Tome" "Torcato" "Tristao" "Umbelina" "Urbana" "Urbano" "Ursula" "Valentim" "Valentina" "Valentino" "Valeria" "Valeriano" "Valerio" "Vasco" "Venancia" "Venancio" "Venceslau" "Ventura" "Verissima" "Verissimo" "Veronica" "Vicencia" "Vicente" "Vidal" "Violante" "Virgilio" "Virginia" "Vital" "Vitor" "Vitoria" "Vitoriana" "Vitoriano" "Vitorina" "Vitorino" "Vitorio" "Xaviela" "Xavier" "Xisto" "Zacarias" "Zeferino"))
(define *LNAMES* '("Aarao" "Abade" "Abo" "Aborim" "Abreu" "Adaes" "Adao" "Afonseca" "Afonso" "Agonia" "Agostinha" "Agra" "Agrela" "Agro" "Aguda" "Aguia" "Aguiao" "Aguiar" "Aguilar" "Aguirra" "Aiala" "Aires" "Airosa" "Ajuda" "Alagao" "Alaio" "Alamao" "Alarcao" "Alberto" "Albina" "Albuquerque" "Alcacova" "Alcantara" "Alcoforado" "Aldeia" "Alegre" "Aleluia" "Alemao" "Alencastro" "Ales" "Alexandre" "Alexandria" "Alferes" "Alho" "Almacana" "Almada" "Almanca" "Almassana" "Almeida" "Alonso" "Alpoim" "Alquimin" "Altamirano" "Alvadia" "Alvao" "Alvar" "Alvarenga" "Alvares" "Alvelos" "Alves" "Alvim" "Amada" "Amado" "Amador" "Amaral" "Amarante" "Amaro" "Ambrois" "Ambrosia" "Ambrosio" "Ameeiro" "Amieiro" "Amil" "Amorim" "Amorosa" "Ana" "Anacleto" "Anadia" "Andrada" "Andrade" "Andre" "Andres" "Andresa" "Aneiros" "Anes" "Angelica" "Angelina" "Angustias" "Aniceto" "Anjo" "Anjos" "Antao" "Antas" "Antonia" "Antonio" "Antunes" "Anunciacao" "Anunciada" "Aparecida" "Aparicio" "Apolinario" "Apolonia" "Apresentacao" "Aragao" "Aral" "Aranha" "Arantes" "Arao" "Araujo" "Areal" "Areia" "Areias" "Arezes" "Argainha" "Arias" "Arieiro" "Armada" "Arriscado" "Arrochela" "Artilheiro" "Arvedora" "Ascencao" "Ascenso" "Aspera" "Assuncao" "Ataide" "Augusta" "Augusto" "Avela" "Aveles" "Avelina" "Avelino" "Avila" "Avilez" "Ayala" "Azambuja" "Azamor" "Azeredo" "Azevedo" "Azurar" "Babo" "Bacelar" "Bacelo" "Bacelos" "Baeta" "Baia" "Baiao" "Bairro" "Balareiro" "Balazar" "Balazeiro" "Balbina" "Baldaia" "Baldejao" "Ballesteros" "Baltazar" "Bamba" "Bandeira" "Bangeiro" "Banha" "Barao" "Barbara" "Barbeita" "Barbeito" "Barbeitos" "Barbosa" "Barca" "Barcelos" "Barge" "Barqueira" "Barral" "Barreira" "Barreiro" "Barreiros" "Barreto" "Barria" "Barriga" "Barrinhos" "Barrios" "Barroca" "Barroco" "Barros" "Barrosa" "Barroso" "Barzia" "Basto" "Bastos" "Batista" "Bazani" "Beca" "Bela" "Belchior" "Belem" "Beleza" "Beliago" "Beliagua" "Belinho" "Belo" "Belos" "Benavides" "Benedita" "Benevides" "Benites" "Bensao" "Benta" "Bento" "Berardo" "Berguas" "Bernarda" "Bernardes" "Bernardina" "Bernardino" "Bernardo" "Berredo" "Bertanda" "Bessa" "Besteiro" "Besteiros" "Betencourt" "Bezerra" "Bicho" "Bieites" "Biscaia" "Bispo" "Boas" "Boaventura" "Boavista" "Bogado" "Bogarim" "Bolela" "Bolhoes" "Bonito" "Borba" "Borges" "Borja" "Borlento" "Borlido" "Borraja" "Borrajo" "Borralheiro" "Bossion" "Botao" "Botelho" "Boto" "Bouca" "Boucas" "Boucos" "Bourbon" "Bouro" "Boussos" "Braga" "Braganca" "Branca" "Branco" "Brandao" "Brandoa" "Bras" "Brasao" "Brasileira" "Bravo" "Brenha" "Bretas" "Brindeiro" "Briote" "Brisida" "Briteiros" "Brito" "Brochado" "Broeiro" "Bugalhosa" "Buitrago" "Bulas" "Bulhoes" "Burgos" "Burgueira" "Cabada" "Cabecas" "Cabo" "Cabral" "Cabreira" "Cacais" "Cachapas" "Cachico" "Cadima" "Caetana" "Caetano" "Caide" "Cairrao" "Calado" "Calcada" "Caldas" "Caldeira" "Caldeirao" "Calderon" "Calhau" "Calheiros" "Calvao" "Calveiro" "Calvinho" "Calvo" "Calvos" "Cam" "Camara" "Cambeses" "Camelo" "Caminha" "Camisao" "Camoes" "Campanel" "Campaner" "Campeao" "Campelina" "Campelo" "Campilho" "Campo" "Campos" "Cana" "Canas" "Canavarro" "Cancela" "Cancelinha" "Cancelo" "Candeias" "Candida" "Candido" "Canedo" "Canelas" "Canelo" "Canhoto" "Canisso" "Cansado" "Canto" "Capam" "Capela" "Capelo" "Capitao" "Capoa" "Capucho" "Caracena" "Caravana" "Cardanha" "Cardeira" "Cardida" "Cardona" "Cardoso" "Cardote" "Caridade" "Carlos" "Carlota" "Carmo" "Carmona" "Carneira" "Carneiro" "Carnoto" "Carolina" "Carqueijo" "Carrazedo" "Carreco" "Carreira" "Carreiras" "Carreiro" "Carrela" "Carrelas" "Carrelo" "Carrero" "Carrico" "Carrilho" "Carteado" "Caruco" "Carvalhaes" "Carvalhais" "Carvalhal" "Carvalhido" "Carvalho" "Carvalhosa" "Casa" "Casada" "Casado" "Casal" "Casanova" "Casavedra" "Cascao" "Casimira" "Cassao" "Cassia" "Castanheira" "Castanheirinho" "Castanho" "Castelao" "Castelo" "Castico" "Castilho" "Castinheiro" "Castro" "Catalao" "Catarina" "Cavaleiro" "Caveira" "Ceia" "Celeiros" "Celestino" "Cepa" "Cepeda" "Cerdal" "Cerdeira" "Cerdeiras" "Cerejeira" "Cerimonias" "Cerqueira" "Cerquido" "Cerquinho" "Cerva" "Cerveira" "Cervos" "Ceuta" "Chagas" "Chanca" "Chapus" "Chaves" "Chouzal" "Chumbo" "Cibrao" "Cintrao" "Cirne" "Citara" "Citra" "Clara" "Claro" "Clemencia" "Clemente" "Clementina" "Cobelos" "Codeceira" "Codessa" "Codesseira" "Codesso" "Codilho" "Coelho" "Coentrao" "Cogominho" "Coimbra" "Colaco" "Conceicao" "Conde" "Condessa" "Condinha" "Consciencia" "Cordeiro" "Coreixas" "Corgo" "Corisco" "Correia" "Corte" "Cortelhao" "Cortes" "Cortez" "Cortinhal" "Cortinhas" "Corucho" "Cosme" "Cosquete" "Costa" "Costado" "Costas" "Costeira" "Costinha" "Cota" "Cotas" "Cotrim" "Couceiro" "Coura" "Couraca" "Couracas" "Courao" "Couras" "Couros" "Cousso" "Coutada" "Coutinho" "Couto" "Covas" "Covelas" "Covelo" "Covenco" "Covo" "Cracel" "Crasto" "Craveiro" "Cravo" "Crescencia" "Crespo" "Crestino" "Crisostomo" "Cristina" "Cristo" "Cristovao" "Cruz" "Cruzeiro" "Cubal" "Cumeeira" "Cunha" "Curto" "Custodia" "Custodio" "Cutilada" "Dadim" "Damaso" "Damiana" "Damiao" "Dantas" "Delfina" "Delgada" "Delgado" "Dentes" "Desamparados" "Desgranges" "Desterro" "Deus" "Dias" "Dinis" "Diogo" "Dionisio" "Direito" "Disse" "Divino" "Doce" "Doia" "Domingas" "Domingos" "Domingues" "Donis" "Dores" "Dourado" "Douro" "Douteiro" "Drago" "Duarte" "Duque" "Dura" "Duraes" "Durao" "Duro" "Eca" "Eira" "Eirado" "Eiras" "Eiro" "Elias" "Emilia" "Emperadeira" "Encarnacao" "Enes" "Engracia" "Ermelao" "Erosa" "Ervalho" "Ervedosa" "Escaleira" "Escobar" "Escolastica" "Escovar" "Escura" "Esmeriz" "Esperanca" "Espinheira" "Espinhel" "Espinhosa" "Espinosa" "Estacio" "Esteves" "Eufrasia" "Eugenia" "Eusebia" "Euteda" "Evangelista" "Evaristo" "Expectacao" "Facanha" "Facas" "Faciel" "Fagundes" "Faia" "Faial" "Faiao" "Fajarda" "Fajardo" "Falances" "Falcao" "Fanha" "Faria" "Farinha" "Farinhota" "Farinhote" "Faro" "Faron" "Farramila" "Farroma" "Farrula" "Favarote" "Feijo" "Feio" "Feital" "Felgas" "Felgueira" "Felgueiras" "Felicia" "Feliciana" "Felix" "Felizarda" "Felizardo" "Feris" "Fernandes" "Ferrao" "Ferraz" "Ferreira" "Ferreiro" "Ferreiros" "Ferro" "Ferroa" "Ferros" "Festas" "Fialho" "Fidalgo" "Fieis" "Figueira" "Figueiras" "Figueiredo" "Figueiro" "Figueiroa" "Filgueira" "Filgueiras" "Filipe" "Fins" "Fiuza" "Flor" "Flores" "Florim" "Florinda" "Folgueira" "Fonseca" "Fontainha" "Fontao" "Fonte" "Fonteita" "Fontela" "Fontelas" "Fontelo" "Fontes" "Fontinha" "Fontoura" "Formariz" "Formosa" "Fornelos" "Forte" "Fortes" "Fortuna" "Fortunato" "Frade" "Fradinho" "Fradique" "Fraga" "Fragoas" "Fragoso" "Franca" "Francisca" "Francisco" "Franco" "Franqueira" "Frazao" "Freire" "Freitas" "Freixo" "Frias" "Froes" "Frutuoso" "Fumo" "Furtado" "Gabriel" "Gachineiro" "Gago" "Gaia" "Gaio" "Gaiolas" "Gaioso" "Galas" "Gale" "Galeao" "Galee" "Galega" "Gales" "Galhardo" "Gallaci" "Galo" "Galvao" "Gama" "Gamardo" "Gambino" "Gamboa" "Ganca" "Gandaral" "Gandavo" "Gandras" "Garces" "Garcia" "Garfejo" "Garnel" "Garneria" "Garnier" "Garrido" "Gaspar" "Gavaias" "Gaviao" "Gavinho" "Geaes" "Genoveva" "Gentil" "Geraldes" "Gertrudes" "Giestas" "Giesteira" "Gigante" "Gil" "Gilpado" "Girao" "Gloria" "Godinho" "Godins" "Goia" "Goios" "Gois" "Goja" "Golias" "Gomes" "Goncalves" "Gondar" "Gondim" "Gordo" "Gorjao" "Gouveia" "Graca" "Gracia" "Gralho" "Gramacha" "Gramoso" "Grande" "Grandinho" "Granja" "Granjeiro" "Granjo" "Gregorio" "Grifo" "Grilo" "Grimanesa" "Guarda" "Gueda" "Guedelha" "Guedes" "Guerra" "Guerreira" "Guerreiro" "Guia" "Guilherme" "Guilhermina" "Guimaraes" "Guimil" "Guiomar" "Gusmao" "Hegesippo" "Heitor" "Helena" "Heleno" "Henrique" "Henriques" "Hipolito" "Homem" "Huet" "Hure" "Idoberje" "Igreja" "Ilhao" "Imbra" "Imperadeiro" "Inacia" "Inacio" "Inocencia" "Insuelas" "Isabel" "Isidora" "Jacinta" "Jacinto" "Jacob" "Jacome" "Jaen" "Jales" "Janeiro" "Jardim" "Jeronima" "Jeronimo" "Jesus" "Joana" "Joao" "Joaquim" "Joaquina" "Jordao" "Jorge" "Jose" "Josefa" "Julia" "Junior" "Junqueira" "Justiniano" "Justino" "Justo" "Laborao" "Lacerda" "Lage" "Lageas" "Lageira" "Lages" "Lagida" "Lagido" "Lago" "Lagos" "Laguez" "Laje" "Lama" "Lamas" "Lamedo" "Lamego" "Lameira" "Lameiras" "Lamela" "Lamosa" "Lancoes" "Landim" "Lanhas" "Lanhoso" "Lapa" "Lapela" "Lapenha" "Lara" "Laranjeira" "Laranjo" "Lata" "Lavradas" "Leal" "Leao" "Lebre" "Leda" "Ledo" "Leiras" "Leiraz" "Leiros" "Leitao" "Leite" "Leituga" "Leiva" "Lemos" "Lencastre" "Lenoble" "Leonarda" "Leonardo" "Leones" "Leonor" "Leopoldina" "Levada" "Levado" "Libana" "Liberal" "Liberata" "Liberio" "Lima" "Limana" "Limao" "Lina" "Linhares" "Lino" "Lira" "Lirio" "Lisboa" "Lixa" "Liz" "Lizes" "Lobao" "Lobarinhas" "Lobarinhos" "Lobato" "Lobera" "Lobo" "Loborao" "Lobrinho" "Lomba" "Lombeiro" "Lombinho" "Lombo" "Lopes" "Lorena" "Losada" "Loucao" "Loureira" "Loureiro" "Lourenca" "Lourenco" "Louro" "Lousada" "Lucas" "Lucena" "Lucia" "Luciana" "Luciano" "Ludovina" "Luis" "Luisa" "Luna" "Luz" "Luzio" "Macau" "Macedo" "Maceira" "Maceiro" "Machado" "Macieira" "Maciel" "Madahil" "Madalena" "Madeira" "Madris" "Madureira" "Maduro" "Magalhaes" "Magar" "Magna" "Magrico" "Magrinho" "Magro" "Maia" "Mainarte" "Maio" "Malafaia" "Malanfant" "Maldonado" "Malheiro" "Malhoto" "Maltez" "Mamede" "Mancilha" "Manga" "Mano" "Manojo" "Manrique" "Manso" "Manuel" "Manuela" "Maravilhas" "Marcelina" "Marcos" "Margarida" "Margaride" "Margulhao" "Maria" "Mariana" "Marinha" "Marinhas" "Marinho" "Marinhoto" "Maris" "Mariz" "Marnoco" "Marques" "Marrao" "Marraxo" "Marreco" "Marreiro" "Marrocos" "Marrucho" "Marta" "Martelo" "Martinha" "Martinho" "Martins" "Mascarenhas" "Masoulas" "Mateus" "Matias" "Matildes" "Matos" "Mauro" "Medeiros" "Medela" "Medonha" "Medranho" "Meira" "Meireis" "Meireles" "Meirim" "Meirinho" "Meixeira" "Meleira" "Meleiro" "Melendas" "Melgaco" "Melim" "Melo" "Melra" "Melro" "Mendanha" "Mendes" "Mendonca" "Meneses" "Merces" "Merencia" "Merense" "Mesquita" "Mexia" "Micael" "Micaela" "Migueis" "Miguel" "Milagres" "Milheiro" "Mimoso" "Minado" "Minhava" "Miquelina" "Miranda" "Mitra" "Mochacho" "Modesta" "Mogueimes" "Moinhos" "Mole" "Moledo" "Molho" "Moncao" "Mondego" "Mondim" "Monis" "Moniz" "Montalvao" "Montarroio" "Monte" "Monteiro" "Montenegro" "Montes" "Morada" "Morais" "Moreira" "Moreiras" "Morena" "Moreno" "Morgade" "Morgado" "Morim" "Mos" "Moscoso" "Moses" "Mosqueira" "Mosquera" "Mosteiro" "Mota" "Moulhinha" "Moura" "Mourao" "Moure" "Mouta" "Mouteira" "Moutinha" "Moutinho" "Murada" "Murca" "Murta" "Nagoselo" "Naio" "Nantes" "Napoles" "Narcisa" "Narciso" "Nascimento" "Nataria" "Natario" "Natividade" "Navais" "Naval" "Navalho" "Navarro" "Negrao" "Negreiros" "Neiva" "Nepomuceno" "Neri" "Neta" "Neto" "Neves" "Nevoa" "Nicolau" "Nicos" "Nilo" "Nina" "Nis" "Nisa" "Niza" "Noble" "Nobre" "Nobrega" "Nogueira" "Nora" "Noronha" "Norton" "Noura" "Nova" "Novais" "Novo" "Novoa" "Nunes" "Oca" "Ochoa" "Oia" "Oleiro" "Oliveira" "Ortega" "Osorio" "Ougea" "Outao" "Outeiro" "Pacanha" "Pacheco" "Paco" "Pacos" "Pades" "Padilha" "Padrao" "Padroa" "Padroso" "Paincais" "Painho" "Paio" "Pais" "Paiva" "Paixao" "Palacio" "Palao" "Palha" "Palhao" "Palhares" "Palma" "Palmeira" "Palmeirao" "Panasco" "Pancada" "Pao" "Paraiso" "Paramos" "Pardelhas" "Paredes" "Parente" "Parga" "Paris" "Parola" "Pascoa" "Passanha" "Passo" "Passos" "Pastor" "Pateira" "Pato" "Patorro" "Patricio" "Patrocinio" "Patronilho" "Paula" "Paulino" "Paulo" "Paz" "Pedra" "Pedracho" "Pedras" "Pedreira" "Pedreiro" "Pedro" "Pedrosa" "Pedroso" "Pegarra" "Pegeiro" "Pego" "Peito" "Peixe" "Peixoto" "Peleteira" "Pelho" "Pena" "Peneda" "Penedo" "Penedos" "Penela" "Penha" "Penso" "Penteado" "Penteao" "Pepino" "Pequeno" "Perdigao" "Peregrino" "Pereira" "Pereiro" "Peres" "Perestrelo" "Perpetua" "Perpetuo" "Perre" "Pessanha" "Pessoa" "Pessos" "Petejo" "Petis" "Pial" "Pias" "Picado" "Picao" "Picarro" "Piedade" "Pigarra" "Pilar" "Pimenta" "Pimentel" "Pina" "Pinhao" "Pinheiro" "Pinho" "Pinto" "Pipa" "Pires" "Pisco" "Pita" "Pizarro" "Placido" "Pocas" "Poco" "Podre" "Poeja" "Pojeira" "Polencia" "Poligra" "Polonia" "Pona" "Ponte" "Pontes" "Pontizelas" "Porbem" "Portal" "Portela" "Portilho" "Porto" "Portocarrero" "Portugal" "Portugues" "Povila" "Povoa" "Praca" "Prada" "Prado" "Prassa" "Prazeres" "Prego" "Presepio" "Presigo" "Prestes" "Preta" "Preto" "Preza" "Prieto" "Principe" "Proenca" "Puga" "Pugas" "Pulia" "Pupe" "Purificacao" "Quadros" "Quaresma" "Quarto" "Queiro" "Queiroga" "Queiros" "Quelha" "Querido" "Quesado" "Quezado" "Quinta" "Quintao" "Quintas" "Quinteiro" "Quintela" "Quiteria" "Raimundo" "Rainha" "Raio" "Ralha" "Ralo" "Ramalheira" "Ramalhete" "Ramalho" "Ramalhosa" "Ramilha" "Ramires" "Ramo" "Ramos" "Rangel" "Ranhada" "Raposo" "Rasca" "Rasco" "Raso" "Rates" "Rato" "Real" "Rebelo" "Rebordelo" "Rebouca" "Redondo" "Refonteira" "Regada" "Regadas" "Regalo" "Rego" "Regueira" "Rei" "Reigoso" "Reimao" "Reimonde" "Reine" "Reis" "Reitor" "Relva" "Relvas" "Remedios" "Remildes" "Renda" "Rendeiro" "Rendufe" "Requiao" "Resende" "Ressurreicao" "Riba" "Ribas" "Ribeira" "Ribeiro" "Ricalde" "Rigueira" "Rigueiro" "Rio" "Rios" "Rita" "Rithe" "Roberto" "Robim" "Rocadas" "Rocas" "Rocha" "Rocho" "Roda" "Rodrigues" "Rola" "Roma" "Romana" "Romano" "Romao" "Romeira" "Romeu" "Roque" "Roriz" "Rosa" "Rosado" "Rosalia" "Rosaria" "Rosario" "Roseira" "Rosendo" "Roso" "Roteia" "Roumate" "Roxo" "Rua" "Rubiao" "Rubim" "Rubio" "Rufo" "Ruivo" "Sa" "Saavedra" "Sabina" "Sacramento" "Saganha" "Saias" "Salazar" "Saldanha" "Saleiro" "Sales" "Salgada" "Salgado" "Salgueira" "Salgueiro" "Salvador" "Samarao" "Samora" "Sampaio" "Sanches" "Sande" "Sanfins" "Sanhudo" "Saninha" "Santa" "Santana" "Santarem" "Santiago" "Santil" "Santissimo" "Santo" "Santos" "Saraiva" "Sardinha" "Sarmento" "Sarrela" "Sarrelo" "Saturnino" "Seabra" "Seara" "Sebastiana" "Sebastiao" "Segura" "Seixas" "Seixo" "Sela" "Sena" "Seneca" "Senhim" "Senhor" "Senhorinha" "Senhorinho" "Senica" "Senra" "Senteno" "Sepulveda" "Sequeira" "Sequeiros" "Serafim" "Serafina" "Serafins" "Sereno" "Sermaes" "Sernache" "Serodio" "Serpe" "Serra" "Serrano" "Serrao" "Serro" "Serva" "Serveira" "Seves" "Silva" "Silvares" "Silveira" "Silveria" "Silvestre" "Silvoza" "Simao" "Simoes" "Sinal" "Sirgo" "Soares" "Sobral" "Sobreira" "Sobrinha" "Sobrinho" "Socorro" "Sodre" "Soeiro" "Soledade" "Solha" "Sonhim" "Soromenho" "Sotil" "Soto" "Sotomaior" "Sousa" "Soutinho" "Souto" "Subida" "Tabarca" "Taborda" "Tabuas" "Tadim" "Talina" "Tamel" "Tapada" "Tapado" "Tarefa" "Tarrio" "Tavares" "Taveira" "Tavora" "Taxa" "Teive" "Teixeira" "Teles" "Telhada" "Temeroso" "Temudo" "Tenda" "Tenreiro" "Tenseiro" "Teodora" "Teodoreto" "Teodoro" "Teodosio" "Teotonio" "Tercas" "Terco" "Teresa" "Terreiro" "Teso" "Tiago" "Ticao" "Tigre" "Tilde" "Tinoco" "Tojeira" "Tomas" "Tomasia" "Tome" "Torgo" "Torrado" "Torrao" "Torre" "Torres" "Torrinha" "Toscana" "Touca" "Tourinho" "Touro" "Trancoso" "Travassos" "Travessa" "Trigo" "Trigueira" "Trigueiro" "Trindade" "Trocado" "Trovisco" "Trovisqueira" "Truao" "Truta" "Tulha" "Turiz" "Turra" "Urzal" "Vacela" "Valadares" "Valadoura" "Valbom" "Vale" "Valenca" "Valente" "Valentim" "Valerio" "Valinho" "Varajao" "Varanda" "Varandas" "Varela" "Varem" "Vargas" "Varges" "Varze" "Varziela" "Varzim" "Vasco" "Vasconcelos" "Vasques" "Vassalo" "Vaz" "Veiga" "Velasco" "Velha" "Velhas" "Velho" "Velico" "Veloso" "Venade" "Venda" "Ventura" "Veras" "Vergar" "Verneda" "Vernei" "Vessadas" "Viana" "Vicencia" "Vicente" "Vidal" "Videira" "Vidinha" "Viegas" "Vieira" "Vieites" "Vieito" "Vige" "Vila" "Vilaca" "Vilalobos" "Vilar" "Vilares" "Vilarinha" "Vilarinho" "Vilas" "Vilasboas" "Vilela" "Vilhena" "Vinha" "Violanta" "Violante" "Viraes" "Virgens" "Visa" "Viso" "Viterbo" "Vitoria" "Vitorina" "Vitorinho" "Vitorino" "Viva" "Vivas" "Vogado" "Warneken" "Xavier" "Xisto" "Zacarias" "Zamith" "Zenha" "Zuniga" "Zuzarte"))
(define (random-name)
(let ((fname (random-elem *FNAMES*))
(lname (random-elem *LNAMES*)))
`(,fname . ,(string-append "'" fname " " lname "'"))))
(define (random-nif)
(left-pad 9 #\0 (random-int-between 0 1000000000)))
(define (random-tlm)
(string-append
"'+"
(left-pad 3 #\0 (random-int-between 0 1000))
(left-pad 9 #\9 (random-int-between 0 1000000000))
"'"))
(define (random-sn)
(if (random-bool) "'S'" "'N'"))
(define morada-id 0)
(define (random-morada)
(define (random-rua)
(define MORADA '("Rua" "Avenida"))
(string-append
"'"
(string-intersperse
`(,(random-elem MORADA)
,(random-elem *FNAMES*)
,(random-elem *LNAMES*)
,(->string (random-int-between 1 70)))
" ")
"'"))
(define (random-codigo-postal)
(string-append
"'"
(left-pad 4 #\0 (random-int-between 0 10000))
"-"
(left-pad 3 #\0 (random-int-between 0 1000))
"'"))
(define (random-local)
(define LOCALS '("'Amares'" "'Arganil'" "'Barcelos'" "'Braga'" "'Cabeceiras de Basto'" "'Cantanhede'" "'Celorico de Basto'" "'Coimbra'" "'Condeixa-a-Nova'" "'Esposende'" "'Fafe'" "'Figueira da Foz'" "'Guimaraes'" "'Mira'" "'Miranda do Corvo'" "'Montemor-o-Velho'" "'Oliveira do Hospital'" "'Pampilhosa da Serra'" "'Penacova'" "'Penela'" "'Povoa de Lanhoso'" "'Soure'" "'Tabua'" "'Terras de Bouro'" "'Vieira do Minho'" "'Vila Nova de Poiares'" "'Vila Verde'" "'Vizela'"))
(random-elem LOCALS))
(let ((id morada-id)
(rua (random-rua))
(cp (random-codigo-postal))
(local (random-local)))
(set! morada-id (+ 1 morada-id))
`(,id ,rua ,cp ,local)))
(define morada-id-used 0)
(define cliente-id 0)
(define (random-cliente)
(define (random-email fname)
(define SLD '("gmail" "hotmail" "outlook" "portugalmail" "sapo"))
(define TLD '("com" "pt" "eu"))
(string-append
"'"
fname
(->string (random-int-between 0 70))
"@"
(random-elem SLD)
"."
(random-elem TLD)
"'"))
(let ((id cliente-id)
(nome (random-name))
(nif (random-nif))
(tele (random-tlm))
(aluno (random-sn))
(morada morada-id-used))
(let ((email (random-email (car nome))))
(set! cliente-id (+ 1 cliente-id))
(set! morada-id-used (+ 1 morada-id-used))
`(,id ,(cdr nome) ,nif ,tele ,email ,aluno ,morada))))
(define (aluno? c)
(list-ref c 5))
(define funcionario-id 0)
(define (random-funcionario)
(let ((id funcionario-id)
(nome (random-name))
(nif (random-nif))
(tlm (random-tlm))
(salario (random-int-between 400 800))
(prof (random-sn))
(morada morada-id-used))
(set! funcionario-id (+ 1 funcionario-id))
(set! morada-id-used (+ 1 morada-id-used))
`(,id ,(cdr nome) ,nif ,tlm ,salario ,prof ,morada)))
(define (prof? f)
(list-ref f 5))
(define (random-type #!optional cat)
(define (random-type-cat cat)
(cond
((= cat 0) (random-elem TYPE-CORDAS))
((= cat 1) (random-elem TYPE-PERCUSSAO))
((= cat 2) (random-elem TYPE-SOPRO))))
(if cat
(random-type-cat cat)
(random-elem ALL-TYPES)))
(define instrumento-id 0)
(define ALL-CATS
'((0 "'cordas'") (1 "'percussao'") (2 "'sopro'")))
(define (random-instrumento)
(define (random-instrumento-cat)
(car (random-elem ALL-CATS)))
(define (random-instrumento-marca cat)
(cond
((= cat 0) (random-elem '("'fender'" "'gibson'" "'ibanez'" "'esp'" "'harley benton'" "'epiphone'" "'roland'" "'hemingway'" "'yamaha'" "'korg'" "'moog'" "'mellotron'")))
((= cat 1) (random-elem '("'mapex'" "'tama'" "'yamaha'" "'pearl'" "'ddrum'" "'dw'" "'gretsch'" "'roland'" "'ludwig'" "'alesis'" "'millenium'")))
((= cat 2) (random-elem '("'thomann'" "'clarke'" "'yamaha'" "'muramatsu'" "'selmer'" "'yanagisawa'" "'keilwerth'")))))
(define (random-instrumento-modelo cat)
(cond
((= cat 0) (random-elem '("'les paul'" "'stratocaster'" "'telecaster'" "'sg'" "'jazz master'" "'cb-60sce a-bass'" "'t-bucket 300ce'" "'aeb5e-bk'" "'avnb1e-bv'" "'pcbe12-opn'")))
((= cat 1) (random-elem '("'horizon'" "'black panther blaster'" "'star drum walnut'" "'starclassic maple lars ulrich'" "'masterworks sapphire'" "'reference pure rock'" "'broadkaster vb jazz antique'")))
((= cat 2) (random-elem '("'yfl-282'" "'ytr-3335'" "'ytr-8310 z'" "'ytr-4335 gii'" "'ytr-8335la'" "'ds-rbeo'" "'ex-iii-rbe'" "'yfl-472h'" "'yas-480'" "'a-wo1'" "'a-wo20'" "'a-wo10'" "'melodion 44'" "'melodion bass b-24h'" "'mc big bagpipes cocus l'")))))
(define (random-instrumento-material)
(random-elem '("'madeira'" "'metal'" "'plastico'")))
(let ((cat (random-instrumento-cat))) ; sopro/cordas/percussao
(let ((id instrumento-id)
(modelo (random-instrumento-modelo cat))
(marca (random-instrumento-marca cat))
(material (random-instrumento-material))
(preco (random-int-between 500 10000))
(stock (random-int-between 0 3))
(type (car (random-type cat)))) ; guitarra/flauta/...
(set! instrumento-id (+ 1 instrumento-id))
`(,id ,modelo ,marca ,material ,preco ,stock ,type))))
(define aula-id 0)
(define (random-aula profs)
(let ((id aula-id)
(data (random-date-between '(2018 1 1) '(2020 13 29)))
(preco (random-int-between 5 21))
(numals 0)
(type (car (random-type)))
(nrfunc (car (random-elem profs))))
(set! aula-id (+ 1 aula-id))
`(,id ,data ,preco ,numals ,type ,nrfunc)))
(define (random-venda nf nc ni)
(let ((inst (random-int-between 0 ni))
(comprador (random-int-between 0 nc))
(vendedor (random-int-between 0 nf)))
(sprintf "CALL Vender(~A, ~A, ~A);" vendedor comprador inst)))
(define (random-marcar-aula na nc)
(let ((a (random-int-between 0 na))
(c (random-int-between 0 nc)))
(sprintf "CALL MarcarAula(~A, ~A);" a c)))
(define (main)
(let ((moradas (random-list (+ *NCLIENTES* *NFUNCS*) random-morada))
(instrumentos (random-list *NINSTRS* random-instrumento)))
(let ((clientes (random-list *NCLIENTES* random-cliente))
(funcionarios (random-list *NFUNCS* random-funcionario)))
(let ((alunos (filter aluno? clientes))
(profs (filter prof? funcionarios)))
(let ((vendas (random-list *NVENDAS* (lambda () (random-venda *NFUNCS* *NCLIENTES* *NINSTRS*))))
(aulas (random-list *NAULAS* random-aula profs))
(marcadas (random-list (* 2 *NAULAS*) (lambda () (random-marcar-aula *NAULAS* *NCLIENTES*)))))
(print
(string-append
"/*\n"
" * Dados gerados aleatoriamente por um programa de ***** (y)\n"
" */\n"
(print-categorias-sql ALL-CATS)
(print-tipos-sql ALL-TYPES)
(print-instrumentos-sql instrumentos)
(print-moradas-sql moradas)
(print-clientes-sql clientes)
(print-funcionarios-sql funcionarios)
(print-aulas-sql aulas)
(print-vendas-sql vendas)
(print-aulas-marcadas-sql marcadas)
)))))))
(main)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment