|
|
(9 révisions intermédiaires par un utilisateur sont masquées) |
Ligne 15 : |
Ligne 15 : |
| :: '''Manuals and case studies last updates''' | | :: '''Manuals and case studies last updates''' |
| | | |
− | ::: 2022-09-29: <font color="blue"><b>SQLfast manual</b></font> [http://bit.ly/3Wm8IZT [full text]] | + | ::: 2022-09-29: <font color="blue">SQLfast manual</font> [http://bit.ly/3Wm8IZT [full text]] |
− | ::: 2022-12-28: <font color="blue"><b>Dictionary of SQLfast commands and parameters</b></font> [http://bit.ly/3uUvLPV [full text]] | + | ::: 2022-12-28: <font color="blue">Dictionary of SQLfast commands and parameters</font> [http://bit.ly/3uUvLPV [full text]] |
| | | |
− | ::: 2023-06-04: <font color="blue"><b>Case study: Classifying objects</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case30-FCA.pdf [full text]] | + | ::: 2023-06-04: <font color="blue">Case study: Classifying objects</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case30-FCA.pdf [full text]] |
− | ::: 2022-04-14: <font color="blue"><b>Case study: The book of which you are the hero</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case14-Game-Books.pdf [full text]] | + | ::: 2022-04-14: <font color="blue">Case study: The book of which you are the hero</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case14-Game-Books.pdf [full text]] |
− | ::: 2021-10-16: <font color="blue"><b>Case study: Four hours to save the library</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case01-Small-library.pdf [full text]] | + | ::: 2021-10-16: <font color="blue">Case study: Four hours to save the library</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case01-Small-library.pdf [full text]] |
− | ::: 2021-05-05: <font color="blue"><b>Case study: Path finders, rovers and Ariadne's thread</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case31-Shortest-path.pdf [full text]] | + | ::: 2021-05-05: <font color="blue">Case study: Path finders, rovers and Ariadne's thread</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case31-Shortest-path.pdf [full text]] |
− | ::: 2020-10-04: <font color="blue"><b>Case study: Blockchains</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case34-Blockchains.pdf [full text]] | + | ::: 2020-10-04: <font color="blue">Case study: Blockchains</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case34-Blockchains.pdf [full text]] |
− | ::: 2020-09-23: <font color="blue"><b>Case study: Active databases</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case08-Active-DB.pdf [full text]] | + | ::: 2020-09-23: <font color="blue">Case study: Active databases</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case08-Active-DB.pdf [full text]] |
− | ::: 2019-08-29: <font color="blue"><b>Case study: Temporal databases - Part 2</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case10-Temporal-DB(2).pdf [full text]] | + | ::: 2020-02-01: <font color="blue">Case study: Temporal databases - Part 1</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case09-Temporal-DB(1).pdf [full text]] |
− | ::: 2020-02-01: <font color="blue"><b>Case study: Temporal databases - Part 1</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case09-Temporal-DB(1).pdf [full text]] | + | ::: 2019-08-29: <font color="blue">Case study: Temporal databases - Part 2</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case10-Temporal-DB(2).pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: From data bulk loading to database book writing</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case28-Topo-sort.pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: From data bulk loading to database book writing</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case28-Topo-sort.pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Conway's Game of Life</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case27-Life-Game.pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Conway's Game of Life</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case27-Life-Game.pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Interactive SQL interpreter</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case03-Interactive-SQL.pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Interactive SQL interpreter</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case03-Interactive-SQL.pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Schema-less databases - Part 1</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case04-Schemaless-DB(1).pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Schema-less databases - Part 1</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case04-Schemaless-DB(1).pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Schema-less databases - Part 2</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case05-Schemaless-DB(2).pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Schema-less databases - Part 2</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case05-Schemaless-DB(2).pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Schema-less databases - Part 3</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case06-Schemaless-DB(3).pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Schema-less databases - Part 3</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case06-Schemaless-DB(3).pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Kings of France - Part 1</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case11-Kings-of-France(1).pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Kings of France - Part 1</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case11-Kings-of-France(1).pdf [full text]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Kings of France - Part 2</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case12-Kings-of-France(2).pdf [full text]] [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case12-Kings-of-France-Draw.pdf [technical complement]] | + | ::: 2018-08-28: <font color="blue">Case study: Kings of France - Part 2</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case12-Kings-of-France(2).pdf [full text]] [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case12-Kings-of-France-Draw.pdf [technical complement]] |
− | ::: 2018-08-28: <font color="blue"><b>Case study: Directory management</b> </font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case15-Directory-Management.pdf [full text]] | + | ::: 2018-08-28: <font color="blue">Case study: Directory management</font> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case15-Directory-Management.pdf [full text]] |
| | | |
| | | |
Ligne 46 : |
Ligne 46 : |
| <!-- --> | | <!-- --> |
| :[http://bit.ly/3FCGGma This document (in English)] and [http://bit.ly/3Pz3yaN this one (in French)] compare the SQLfast language with standard programming languages for querying a database, interacting with the user and downloading a file. They show that '''a single SQLfast statement''' replaces from '''80 to 100 statements''' written in Java or Python. | | :[http://bit.ly/3FCGGma This document (in English)] and [http://bit.ly/3Pz3yaN this one (in French)] compare the SQLfast language with standard programming languages for querying a database, interacting with the user and downloading a file. They show that '''a single SQLfast statement''' replaces from '''80 to 100 statements''' written in Java or Python. |
− | :Despite its simplicity, the SQLfast language includes powerful features such as the full SQL language, variables, GUI, comprehensive control structures (procedures, recursive calls, if-else, for-endfor, while-endwhile, etc.), a versatile text generator, dynamic statement and script execution, external program interface, transactions, automatic metadata management, file management, web access, SMTP protocol, base64 and SHA256 conversion, debugging and much more. | + | :Despite its simplicity, the SQLfast language includes powerful features such as the full SQL language, variables, GUI, comprehensive control structures, a versatile text generator, dynamic statement and script execution, external program interface, transactions, automatic metadata management, file management, web access, SMTP protocol, base64 and SHA256 conversion, debugging and much more. |
| <!-- --> | | <!-- --> |
| *'''Description of the SQLfast software environment''' | | *'''Description of the SQLfast software environment''' |
Ligne 67 : |
Ligne 67 : |
| <!-- --> | | <!-- --> |
| :Finally, an important feature of the SQLfast environment is its <b>extendability</b>: new functions and new resources can be developed and integrated quite easily. | | :Finally, an important feature of the SQLfast environment is its <b>extendability</b>: new functions and new resources can be developed and integrated quite easily. |
− | | + | <code> </code> |
− | *'''Technical detail''': An SQLfast script (or program) is not limited in size: it can include just one statement but also several millions of statements. The environment is developed in Python with Tkinter, SQLite3 and PIL modules. Its main design objectives are to hide the complexity of database programming (connections, cursors, transactions, metadata management, etc.), of graphical interactions and of data exchange with external sources (e.g., files, web data and email) to provide very high level functions and to provide a secure user-friendly execution environment. The SQLfast language and environment comprise the following components: | + | *'''Technical detail''' |
| + | :An SQLfast script (or program) is not limited in size: it can include just one statement but also several millions of statements. The environment is developed in Python with Tkinter, SQLite3 and PIL modules. Its main design objectives are to hide the complexity of database programming (connections, cursors, transactions, metadata management, etc.), of graphical interactions and of data exchange with external sources (e.g., files, web data and email) to provide very high level functions and to provide a secure user-friendly execution environment. The SQLfast language and environment comprise the following components: |
| <!-- --> | | <!-- --> |
− | :*the full SQL language | + | :*the full SQL language (based on the SQLite3 interface) |
| + | :*new SQL functions, including additional numeric, character and time functions, cryptography, 40 ''list management'' functions, file/web functions, temporal algebra operator |
| + | :*dynamic columns: columns created through their usage instead of by DDL commands |
| + | :* about 100 system parameters to customize the interface and the behaviour of SQLfast engine |
| + | :*additional languages: |
| + | ::*'''SQLdraw''': specification of vector graphics, static (still drawing) and dynamic (animated) |
| + | ::*'''SQLtuto''': description of help documents, guides and tutorials; allows the building of complex hypertext, multimedia systems, that may include executable code fragments; |
| + | ::*'''LTemp''': algebraic temporal operators: temporal, coalescing, aggregation, interval normalization |
| <!-- --> | | <!-- --> |
− | :*variables in which data coming from a database, external files, computations, GUI or web sites can be stored. Variables are typeless and have no size limit. A variable can contain data of any kind but also script fragments. The SQLfast ''macro processor'' can (recursively) replace variable references by their values. | + | :*variables in which data coming from a database, external files, computations, GUI or web sites can be stored. Variables are typeless and have no size limit. A variable can contain data of any kind but also script fragments and complete instructions. The SQLfast pre-processor can (recursively) replace variable references by their values. |
| <!-- --> | | <!-- --> |
− | :*control structures (if-then-else, for-endfor, while-endwhile, procedure call, error management, libraries, external applications, stop, pause) | + | :*control structures (if-then-else, for-endfor, while-endwhile, procedure call, return, shutdown, error management, libraries, external applications, stop, pause) |
| <!-- --> | | <!-- --> |
| :*reading/writing in external files, encoding/decoding into secure formats (hexadecimal, base64), secure hashing, encryption | | :*reading/writing in external files, encoding/decoding into secure formats (hexadecimal, base64), secure hashing, encryption |
| <!-- --> | | <!-- --> |
− | :*large object management (text, video, sound, BLOB, geographic objects, charts, drawings) | + | :*large object management (text, video, sound, BLOB, bitmap, charts, static and dynamic vector graphics) |
| <!-- --> | | <!-- --> |
− | :*generation of complex formats (csv, xml, html, rtf, LateX, JSON, Key-value, SQL, tuples, etc.) These formats are defined by generic parameters. | + | :*generation of complex data display formats (3 tabular, csv, xml, html, rtf, LateX, JSON, Key-value, SQL, tuples, headers, text, etc.) These formats are defined by generic parameters and can be dynamically extended. |
| <!-- --> | | <!-- --> |
− | :*import processors for standard formats (e.g., dbf, csv, Access, ESRI shapefiles) | + | :*import processors for standard formats (currently dbf, csv) |
| <!-- --> | | <!-- --> |
| :*a rich extensible GUI: | | :*a rich extensible GUI: |
| <!-- --> | | <!-- --> |
− | ::*elementary boxes: messages, data entry forms, radio buttons, check buttons, text, images, drawing, charts, etc. | + | ::*elementary boxes: messages, data entry forms, radio buttons, check buttons, 2 list boxes, text, bitmap images, vector graphics, etc. |
| ::*composite dialogue boxes: made of an arbitrary number of elementary boxes | | ::*composite dialogue boxes: made of an arbitrary number of elementary boxes |
| ::*extensible through Python external libraries | | ::*extensible through Python external libraries |
| <!-- --> | | <!-- --> |
− | :*an integrated graphical engine to render SQLdraw scripts to produce still and animated drawing (charts, drawing, maps, animated simulation, etc.). SQLdraw scripts can be generated or manually produced through graphical SQLdraw Editor. | + | :*an integrated graphical engine renders SQLdraw scripts to produce still and animated drawing (charts, drawing, maps, animated simulation, etc.). |
| <!-- --> | | <!-- --> |
| :*extensibility mechanisms: | | :*extensibility mechanisms: |
− | ::*technical SQLfast scripts (e.g., parameters setting), | + | ::*SQL user-defined function |
− | ::*functional SQLfast procedures (e.g., data loading, data checking, report generation), | + | ::*user-defined and builtin technical SQLfast scripts (e.g., parameters setting), |
− | ::*Python external libraries (e.g., string manipulation, file management, geometric algorithms, web access), | + | ::*user-defined and builtin functional SQLfast procedures (e.g., data loading, data checking, report generation, rebuilding SQL-DDL code of an unknown database), |
− | ::*Python external applications (e.g., data import, interactive data conversion, complex dialogues, map digitizer, graphical engine), | + | ::*Python external libraries (e.g., string manipulation, file management, geometric algorithms, web access, FCA_Engine), |
| + | ::*Python external applications (e.g., data import, interactive data conversion, ETL, complex dialogues, map digitizer, graphical engine), |
| ::*language extension (through script precompilation) | | ::*language extension (through script precompilation) |
− | ::*external programs (web browsers, image processors, media processors, Office suite, etc.) | + | ::*calling external programs (web browsers, image processors, media processors, Office suite, etc.) |
| <!-- --> | | <!-- --> |
− | :*a built-in schema database (data dictionary) | + | :*a built-in data dictionary comprising up to 10 system tables, |
| <!-- --> | | <!-- --> |
| :*a tutorial engine, that can be called from the graphical interface or from within any script | | :*a tutorial engine, that can be called from the graphical interface or from within any script |
Ligne 106 : |
Ligne 115 : |
| :*reflexivity: an SQLfast script can generate, examine, modify and execute SQLfast scripts, including itself. | | :*reflexivity: an SQLfast script can generate, examine, modify and execute SQLfast scripts, including itself. |
| <!-- --> | | <!-- --> |
− | :*development and debugging tools | + | :*development and debugging tools: error reporting; variable dumping, powerful tracing subsystem for SQLfast commands, SQL queries and SQL triggers; trace analysis through SQL queries, |
| | | |
− | *'''Requirements''': Windows from Vista to Win11 (64 bits). All the resources needed are included in the distribution. | + | :*'''Requirements''': Windows from Vista to Win11 (64 bits). All the resources needed are included in the distribution. |
| | | |
− | *'''Date''': 2012- | + | :*'''Date''': 2012- |
− | *'''Status''': ongoing. Version 5 available. | + | :*'''Status''': ongoing. Version 5 available. |
− | *'''Availability''': From the [[DUNOD2015_SQLfast|SQLfast web page]]. | + | :*'''Availability''': From the [[DUNOD2015_SQLfast|SQLfast web page]]. |
| | | |
− | *'''Main references and resources''': | + | :*'''Main references and resources''': |
| <!-- --> | | <!-- --> |
− | **SQLfast environment for Windows. [[DUNOD2015_SQLfast|Get it from the SQLfast web page]]. | + | :**SQLfast environment for Windows. [[DUNOD2015_SQLfast|Get it from the SQLfast web page]]. |
− | **Python 2.7. Not required to execute SQLfast. Must be used to develop extensions to SQLfast. | + | :**Python 2.7 (conversion to Python 3 in progress). Not required to execute SQLfast. Must be used to develop extensions to SQLfast. |
− | **The latest stable version of SQLite3 DBMS is included in the SQLfast distribution (file ''sqlite3.ddl'' in the SQLfast folder). As soon as a new version is available in [http://www.sqlite.org/download.html the SQLite download site], just replace the current file with the last version.. | + | :**The latest stable version of SQLite3 DBMS is included in the SQLfast distribution (file ''sqlite3.ddl'' in the SQLfast folder). As soon as a new version is available in [http://www.sqlite.org/download.html the SQLite download site], just replace the current file with the last version.. |
− | **<u>SQLfast manual - Database application programming</u> [http://bit.ly/3Wm8IZT [full text]] | + | :**<u>SQLfast manual - Database application programming</u> [http://bit.ly/3Wm8IZT [full text]] |
− | **<u>Dictionary of SQLfast commands and parameters</u> [http://bit.ly/3uUvLPV [full text]]. | + | :**<u>Dictionary of SQLfast commands and parameters</u> [http://bit.ly/3uUvLPV [full text]]. |
| | | |
| <!-- | | <!-- |
| *''Volume 1'': '''SQLfast Manual - Introduction to database programming''' The complete SQLfast tutorial'''. This tutorial comprises two volumes. The first one, the '''SQLfast manual''' is an introduction to database concepts and programming through SQLfast. It progressively introduces the reader to the basics of SQLfast, from elementary data manipulation through very short scripts to complex features such as metadata-based script generation, recursive programming and language extension. A large appendix collects | | *''Volume 1'': '''SQLfast Manual - Introduction to database programming''' The complete SQLfast tutorial'''. This tutorial comprises two volumes. The first one, the '''SQLfast manual''' is an introduction to database concepts and programming through SQLfast. It progressively introduces the reader to the basics of SQLfast, from elementary data manipulation through very short scripts to complex features such as metadata-based script generation, recursive programming and language extension. A large appendix collects |
| *''Volume 2'': '''Problem solving with databases - Case studies'''. This second volume currently exists as a series of case studies demonstrating how to solve a wide variety of problems with databases. It also includes some representative applications: database creation and loading, database exploration, database migration, library management, interactive SQL interpreter, a photo album manager and browser, a statistics manager and viewer, a bill of material manager, a GIS (based on ESRI shapefiles), analysis of an undocumented database, topological sorting of a relational schema, GALOIS lattice generation, automatic GUI generation, automated SQL trainer, ontology-based text indexing and retrieval, Conway's Game of Life (cellular automata), Kings of France (tree processing), schema-less (NoSQL) databases, SQL code injection, etc. Selected draft chapters are already available. | | *''Volume 2'': '''Problem solving with databases - Case studies'''. This second volume currently exists as a series of case studies demonstrating how to solve a wide variety of problems with databases. It also includes some representative applications: database creation and loading, database exploration, database migration, library management, interactive SQL interpreter, a photo album manager and browser, a statistics manager and viewer, a bill of material manager, a GIS (based on ESRI shapefiles), analysis of an undocumented database, topological sorting of a relational schema, GALOIS lattice generation, automatic GUI generation, automated SQL trainer, ontology-based text indexing and retrieval, Conway's Game of Life (cellular automata), Kings of France (tree processing), schema-less (NoSQL) databases, SQL code injection, etc. Selected draft chapters are already available. |
− |
| |
| --> | | --> |
| + | *'''SQLfast manual and case studies''' |
| + | |
| + | :The external documentation comprises two important volumes. The first one is the '''SQLfast manual''', an introduction to the development of database applications. The second one is a collection of case studies illustrating the use of database programming to solve large families of problems. |
| + | |
| <br> | | <br> |
| <!-- ------------- Part I - INTRODUCTION TO DATABASE PROGRAMMING WITH SQLfast --------------- --> | | <!-- ------------- Part I - INTRODUCTION TO DATABASE PROGRAMMING WITH SQLfast --------------- --> |
| <!-- ---------------------------------------------------------------------------------------- --> | | <!-- ---------------------------------------------------------------------------------------- --> |
− | :<big>'''Part 1: SQLfast MANUAL - INTRODUCTION TO DATABASE PROGRAMMING'''</big> | + | :'''Volume 1: SQLfast MANUAL - INTRODUCTION TO DATABASE PROGRAMMING''' |
| | | |
| <center>[http://bit.ly/3Wm8IZT [get the full text here]]</center> | | <center>[http://bit.ly/3Wm8IZT [get the full text here]]</center> |
Ligne 221 : |
Ligne 233 : |
| <!-- ------------------------------------------------------------------------------------ --> | | <!-- ------------------------------------------------------------------------------------ --> |
| <br> | | <br> |
− | :<big>'''Part 2: PROBLEM SOLVING WITH DATABASES - CASE STUDIES'''</big> | + | :'''Volume 2: PROBLEM SOLVING WITH DATABASES - CASE STUDIES''' |
− | <br>
| + | |
| | | |
| :*<font color="black"><b>Case 1. Four hours to save the library</b>, draft version, <i>November 2020.</i></font>[https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case01-Small-library.pdf [full text]] | | :*<font color="black"><b>Case 1. Four hours to save the library</b>, draft version, <i>November 2020.</i></font>[https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case01-Small-library.pdf [full text]] |
Ligne 279 : |
Ligne 290 : |
| ::The problem of fast clone detection, that is, of set of files that have exactly the same contents, is also analyzed and solved. | | ::The problem of fast clone detection, that is, of set of files that have exactly the same contents, is also analyzed and solved. |
| ::''<b>Keywords</b>'': directory structure, tree modeling, tree analysis, statistics, tree evolution, duplicate files, clone detection, secure hashing, SHA256, database performance, CTE, recursive queries. | | ::''<b>Keywords</b>'': directory structure, tree modeling, tree analysis, statistics, tree evolution, duplicate files, clone detection, secure hashing, SHA256, database performance, CTE, recursive queries. |
− |
| |
− | :*<b>Case 21. Test Database Generation</b>, obsolete version, <i>November 2020.</i>
| |
− | ::''Chapter contents'': Database performance evaluation. Generating high volume of synthetic data. Integrating heterogeneous data sources. Data cleaning. Data anonymization. Random data extraction. Executing very large scripts. Query performance.
| |
| | | |
| :*<b>Case 27. Conway's Game of Life</b>, draft version, <i>November 2020.</i> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case27-Life-Game.pdf [full text]] | | :*<b>Case 27. Conway's Game of Life</b>, draft version, <i>November 2020.</i> [https://projects.info.unamur.be/dbm/SQLfast/Case-Studies/SQLfast-Case27-Life-Game.pdf [full text]] |
Ligne 310 : |
Ligne 318 : |
| <br> | | <br> |
| <!-- ------------------------------------------------------------------------------ --> | | <!-- ------------------------------------------------------------------------------ --> |
− | <big>'''Case studies in preparation'''</big>
| + | :'''Case studies in preparation''' |
− | <br>
| + | |
| <!-- ------------------------------------------------------------------------------ --> | | <!-- ------------------------------------------------------------------------------ --> |
| :*<b>Case 2. Managing a small library: The human factor</b>, writing in progress. | | :*<b>Case 2. Managing a small library: The human factor</b>, writing in progress. |
Ligne 317 : |
Ligne 325 : |
| :*<b>Case 34. Agent modeling and simulation</b>, writing in progress. | | :*<b>Case 34. Agent modeling and simulation</b>, writing in progress. |
| <br> | | <br> |
− |
| |
− | ===DB-MAIN===
| |
− | *'''Type''': CASE and MetaCASE environment
| |
− | *'''Description''': Graphical CASE tool that supports most database engineering processes. Provides functions for conceptual information analysis, logical design, physical design, code generation, schema integration, schema normalization, quality evaluation, schema mapping, reverse engineering (for a dozen legacy and modern DBMS), schema analysis, code analysis (a.o., depency graphs, pattern searching and program slicing), data analysis, schema transformation. High speed kernel and graphical interface written in C++. New functions can be developed in Voyager 2 (the DB-MAIN external language) or in Java. DB-MAIN includes a method engine and features to extend its meta-schema. It allows the representation of data structures of various paradigms and at any level of abstraction. It relies on the GER (Generic Entity-relationship model) and on transformational operators.
| |
− | *'''Requirements''': MS Windows, Linux.
| |
− | *'''Date''': 1993-2014+
| |
− | *'''Status''': ongoing
| |
− | *'''Availability''': Free of charge (except for advanced processors). See below
| |
− | *'''References and resources''':
| |
− | :*DB-MAIN '''v6''' (free, max 500 objects)
| |
− | :**Software: [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-10/DB-MAIN-v65d-(education).zip DB-MAIN v6.5d.zip]
| |
− | :**Manual: [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-10/Manuel-DB-MAIN-v6.zip Manuel DB-MAIN v65d]
| |
− | :*DB-MAIN '''v8''' (free, max 2000 objects)
| |
− | :**Software: [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-10/DB-MAIN-82b(demo-2000).zip DB-MAIN v8.2b]
| |
− | :**Quick help: [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-10/db_main-v8.chm db_main v8.chm]
| |
− | :**Manual: [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-10/Manuel-DB-MAIN-v8.zip Manuel-DB-MAIN-v8.zip]
| |
− | :*DB-MAIN '''v9''' (nouvelle interface, gratuit, sans limitation du nombre d'objets)
| |
− | :**Software: [http://www.db-main.eu site DB-MAIN]
| |
− | :**Manual: [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-10/Manuel-DB-MAIN-v9.zip Manuel-DB-MAIN-v9.zip]
| |
− | :*First Steps with DB-MAIN (short tutorial)
| |
− | :**Hlp version: [http://www.info.fundp.ac.be/~dbm/Documents/Tutorials/First-Steps/1st-Step.hlp 1st-Step.hlp]
| |
− | :**Pdf version: [http://www.info.fundp.ac.be/~dbm/Documents/Tutorials/First-Steps/1st-Step.pdf 1st-Step.pdf]
| |
− | :**Chm version: [http://www.info.fundp.ac.be/~dbm/Documents/Tutorials/First-Steps/1st-Step.chm 1st-Step.chm]
| |
− | :*Introduction to database design with DB-MAIN (long tutorial)
| |
− | :**Pdf version: [http://www.info.fundp.ac.be/~dbm/Documents/Tutorials/DB-Design/MiniTut-2002.pdf MiniTut-2002.pdf]
| |
− | :*Visit also the DB-MAIN official site [http://www.db-main.eu www.db-main.eu] or the site of ReveR s.a. [http://www.rever.eu www.rever.eu], now in charge of the maintenance and evolution of DB-MAIN.
| |
− |
| |
− | ===TRAMIS/Master===
| |
− | *'''Type''': CASE environment
| |
− | *'''Description''': TRAMIS/Master was an extension of ORGA distributed by the small French company CONCIS. In particular, the following features were added:
| |
− | :*support for conceptual analysis
| |
− | :*a larger transformation toolbox
| |
− | :*evaluation functions (notably volume estimation)
| |
− | :*the specification database was implemented in MDBS (a CODASYL-like DBMS)
| |
− | *'''Requirements''': MS-DOS; MS Windows 3.11; MDBS
| |
− | *'''Date''': 1986-1991
| |
− | *'''Status''': discontinued; principles integrated into DB-MAIN
| |
− | *'''Availability''': software no longer available
| |
− | *'''References and resources''':
| |
− | **Jean-Luc Hainaut,Mario Cadelli,Bernard Decuyper and Olivier Marchand. <u>TRAMIS:a transformation-based database CASE tool</u>, in ''Proceedings of 5th International Conference on Software Engineering and Applications'', EC2 Publish., 1992. [http://www.fundp.ac.be/recherche/publications/page_view/41408/ [description]]
| |
− | **Jean-Luc Hainaut, Mario Cadelli, Bernard Decuyper and Olivier Marchand. <u>Database CASE Tool Architecture : Principles for Flexible Design Strategies</u>, in ''Proceedings of the 4th International Conference on Advanced Information System Engineering'' (CAiSE’92), Lecture Notes in Computer Science, Volume 593, pages 187-207, Springer-Verlag, 1992. [http://www.fundp.ac.be/recherche/publications/page_view/39252/ [description]]
| |
− |
| |
− |
| |
− | ===ORGA===
| |
− | *'''Type''': CASE environment
| |
− | *'''Description''': ORGA was a companion CASE tool of the industrial IDA environment developed by the team of professor F. Bodard in the 80's and distributed (as well as ORGA) by METSI, a small French company in Information system design. IDA was mainly devoted to the conceptual specification of various aspects of Information systems. The goal of ORGA was the translation of information conceptual schemas into DDL code according to three data models, namely relational (SQL-87), CODASYL DDL (IDS2) and standard files (COBOL). In modern words, ORGA supported the logical design and code generation processes. Three key features of ORGA:
| |
− | :*the architecture of ORGA relies on a transformational toolbox. The conceptual/logical conversion was based on three transformation plans, one for each target data model. In addition, the user was allowed to apply elementary transformations to refine the logical schema. In modern words, ORGA supported Model-Driven Engineering.
| |
− | :*ORGA was developed in C and the specification database was managed through libraries emulating dBASE III structures [http://fr.wikipedia.org/wiki/DBase] [http://en.wikipedia.org/wiki/DBase].
| |
− | :*The methodological principles of ORGA were developed in the (French) book [http://info.fundp.ac.be/~dbm/mediawiki/index.php/MASSON1986 ''Conception assistée des applications informatiques - Conception de la base de données''], published by Masson (now DUNOD) in 1986.
| |
− | *'''Requirements''': MS-DOS; hard disk (recommended!)
| |
− | *'''Date''': 1984-1985
| |
− | *'''Status''': discontinued; principles integrated into TRAMIS/Master then in DB-MAIN
| |
− | *'''Availability''': software no longer available
| |
− | *'''References and resources''':
| |
− | ** see TRAMIS/Master
| |
− |
| |
− |
| |
− | ===PHENIX===
| |
− | *'''Type''': Reverse Engineering CASE environment
| |
− | *'''Description''': PHENIX was a CASE tool devoted to the reverse engineering of the file structures of large COBOL applications. It was developed with powerful knowledge management systems (which were very popular in the 80's and 90's), a decision which accounted for the poor performance of the code analyzer. In particular, it included:
| |
− | :*a code analyzer that detected program patterns
| |
− | :*a large transformation toolbox
| |
− | :*an inference engine to detect and identify implicit constructs.
| |
− | *'''Requirements''': Unix, LeLisp, SMECI, Aida/Masai
| |
− | *'''Date''': 1989-1992
| |
− | *'''Status''': discontinued; principles integrated into DB-MAIN
| |
− | *'''Availability''': software no longer available
| |
− | *'''References and resources''':
| |
− | **Jean-Luc Hainaut, Catherine Tonneau, Michel Joris and Muriel Chandelon. <u>Transformation-based Database Reverse Engineering</u>, in ''Proceedings of 12th International Conference on Entity-Relationship Approach (ER’93)'', Lecture Notes in Computer Science, Volume 823, pages 364-375, Springer-Verlag, 1994. [http://www.fundp.ac.be/recherche/publications/page_view/42756/ [description]]
| |
− | **Jean-Luc Hainaut, Muriel Chandelon, Catherine Tonneau and Michel Joris. <u>Contribution to a Theory of Database Reverse Engineering</u>, in ''Proceedings of the 1st Working Conference on Reverse Engineering'' (WCRE’93), pages 161-170, IEEE Computer Society, 1993. [http://www.fundp.ac.be/recherche/publications/page_view/39255/ [description]]
| |
− | **Jean-Luc Hainaut, Catherine Tonneau, Michel Joris and Muriel Chandelon. <u>Schema Transformation Techniques for Database Reverse Engineering</u>, in ''Proceedings of 12th International Conference on the Entity-Relationship Approach'' (ER’93), pages 353-372, E/R Institute Publish., 1993. [http://www.fundp.ac.be/recherche/publications/page_view/39256/ [description]]
| |
− | **Michel Joris, R. Hoe, Jean-Luc Hainaut, Muriel Chandelon, Tonneau Catherine and Bodart François. <u>PHENIX : methods and tools for database reverse engineering</u>, in ''Proceedings of 5th International Conference on Software Engineering and Applications'', EC2 Publish., 1992. [http://www.fundp.ac.be/recherche/publications/page_view/39254/ [description]]
| |
− | **Jean-Luc Hainaut. <u>Database Reverse Engineering, Models, Techniques and Strategies</u>, in ''Proceedings of the 10th International Conference on the Entity-Relationship Approach'' (ER’91), pages 729-741, ER Institute, 1991. [http://www.fundp.ac.be/recherche/publications/page_view/42757/ [description]] [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Articles-Conferences/conferences-ER/ER-1991/ER-1991(tutorial).pdf [full text]]
| |
− |
| |
− |
| |
− | ===VisiComp===
| |
− | *'''Type''': Graphical computer simulator
| |
− | *'''Description''': VisiComp (name inspired by VisiCalc) is a graphical simulator for an educational computer. This computer has a very simple architecture: a main memory of up to 100 cells (each accomodating a signed 5-digit number), the standard handful of registers (P-counter, instruction register, logical register, accumulator + its extension register), 37 instructions organized into 7 instruction families, 10 addressing modes, a sequential input device, a sequential output device, bootstrap (kind of MBR). The simulator also includes a monitor that manages and controls all the parts of the computer (interactive + script interpreter), configuration files, input file loader, etc. The computer has been used to illustrate architecture and programming principles such as Von Neuman architecture, basic program structures, I/O buffering, recursion, relocatable programs, bootstrapping and even a complete business application (order management and invoicing with 3 files, almost as powerful as SAP!) The simulator and its additional components required at runtime no more than 12 KB (12,000 bytes!) in RAM. It was developed in TRS-80 Basic then in CP/M Basic.
| |
− | *'''Requirements''': TRS-80 Model 1 - Level 2 (16 KB RAM); CP/M; BASIC language processor;
| |
− | *'''Date''': 1982
| |
− | *'''Status''': discontinued
| |
− | *'''Availability''': Source code available on paper
| |
− | *'''References and resources''':
| |
− | **Jean-Luc Hainaut, ''THE VISIBLE COMPUTER - A graphical computer simulator''. Technical report, 1982. 75 pages. [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/The-Visible-Computer/The-Visible-Computer.pdf [full text]] This document results from the scanning of poorly printed pages. It is incomplete and probably includes too many errors. In addition, it will probably be considered fairly naive. Consider that it was written 30 years ago and that computer technology has considerable evolved since then, to such an extent that is has become quite complex and impossible to describe in detail to plain lay readers.
| |
− | **Source code available on paper.
| |
− | **'''Note''': just for the fun, I have developed a new graphical interface for Visicomp in Python/Tkinter. It would take no more than 2-3 weeks to add the logic behind. Anyone interested?
| |
− |
| |
− |
| |
− | ===NDBS===
| |
− | *'''Type''': Database Management System
| |
− | *'''Description''': NDBS (Network Database System) is an educational database management environment allowing Turbo-Pascal programs to manage and use complex data in an efficient, though very intuitive, way. NDBS comprised a runtime library (database handler), a DDL compiler, a 4GL Query Language, a data dictionary, a report generator, a SQL/NDBS converter, an import/export tool, etc. As far as we now, the only industrial use was by an Indian Statistics department, which developed several applications programs based on NDBS. The last version (under the name Pyramid) was developed by D. Rossi, then Master student in the University of Namur. Two original aspects: (1) the data model was a variant of the ER model, (2) the physical engine was a fairly strict implementation of the principles developed in the course of Database Technology I gave in the 80's.
| |
− | *'''Requirements''': Windows; written in Turbo-Pascal
| |
− | *'''Date''': 1986-1996
| |
− | *'''Status''': discontinued
| |
− | *'''Availability''': source code (but I must search floppy disks for it).
| |
− | *'''References and resources''':
| |
− | **'''[TR86-01]'''Jean-Luc Hainaut, ''NDBS - A simple database system for small computers''. Technical report, 1986. 144 pages. [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/NDBS/NDBS.pdf [full text]] This text has been recovered from various materials written in the eighties (Mac Word documents) and roughly assembled into a unique FrameMaker document. The result would require in-depth polishing, but, to be frank, I currently have no spare time to carry out this task. Sometimes in the near future perhaps!
| |
− |
| |
− |
| |
− | ===SQL-Script Interpreter===
| |
− | *'''Type''': Interpreter for an SQL-based scripting language
| |
− | *'''Description''': Empty Access application (*.mdb) that allows users to execute SQL scripts on any database. Includes a simple dialog box with two buttons: select a script file and execute it. For information, MS Access provides two ways to execute SQL statements: as Access queries (simple but single queries only) and embedded in VB programs (powerful but complex). This tool allows one to execute in one click a script made up of a sequence of SQL statements, but also much more complex scripts with variables, macros, loops, alternatives and interaction with users. This application has been frozen in 2012 since the development of SQLfast (see above).
| |
− | *'''Requirements''': Microsoft Access
| |
− | *'''Date''': 2005-2011+
| |
− | *'''Status''': ongoing
| |
− | *'''Availability''': available online
| |
− | *'''References and resources''':
| |
− | **'''Software (mdb)''': [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-06/SQL-Interpreter-FR-(v4).mdb SQL-Interpreter-FR-(v4).mdb]
| |
− | **'''Documentation :'''
| |
− | ***Installation (French) : [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-06/Installer-SQL-interpreter-(v4).pdf Installer-SQL-interpreter-(v4).pdf]
| |
− | ***SQL Script Language(English) : [http://www.info.fundp.ac.be/~dbm/Documents/Ouvrages/Dunod-2009/Chapitres/Chapitre-06/The-SQL-Script-Language.pdf The-SQL-Script-Language.pdf]
| |
− |
| |
− |
| |
− | ===SPHINX===
| |
− | *'''Type''': Database Management System, Natural Language interface, Data dictionary
| |
− | *'''Description''': SPHINX is a database management system based on the ER model. It was developed in the 70's as a result of large national project devoted to the development and management of large administrative databases. SPHINX comprised several components:
| |
− | :*a runtime database handler
| |
− | :*a high-level DML language integrated to COBOL
| |
− | :*NUL: an incremental user-oriented query language
| |
− | :*a meta-system (based on SPHINX)
| |
− | *'''Requirements''': Siemens BS-2000; SESAM data manager (one of the first schema-less inverted-file data manager);
| |
− | *'''Date''': 1971-1977
| |
− | *'''Status''': discontinued
| |
− | *'''Availability''': software no longer available
| |
− | *'''References and resources''':
| |
− | **Baudouin Le Charlier and Jean-Luc Hainaut. <u>Modèles, Langages et Systèmes pour la conception et l’exploitation de bases de données</u>, in ''Actes du congrès AFCET 1978'', pages 179-189, Editions Hommes et Techniques, 1978. [http://www.fundp.ac.be/recherche/publications/page_view/42760/ [description]] [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Articles-Conferences/conferences-AFCET/AFCET-1978/AFCET-1978-Congres.pdf [full text]]
| |
− | **Claude Deheneffe and Henri Hennebert. <u>NUL: A Navigational User’s Language for a Network Structured Data Base</u>, in ''Proceedings of the 1976 ACM SIGMOD International Conference on Management of Data'', pages 135-142, ACM, 1976. [http://www.fundp.ac.be/recherche/publications/page_view/59571/ [description]] [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Articles-Conferences/conferences-SIGMOD/SIGMOD-1976/Sigmod-1976.pdf [full text]]
| |
− | **Claude Deheneffe, Henri Hennebert and Walter Paulus. <u>A Relational Model for a Data Base</u>, in ''Proceedings of the IFIP congress 74'', pages 1022-1025, North-Holland, 1974. [http://www.fundp.ac.be/recherche/publications/page_view/59570/ [description]] [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Articles-Conferences/conferences-IFIP/IFIP-1974/IFIP-74-(CDE-HHE-WPA).pdf [full text]]
| |
− | **Jean-Luc Hainaut and Baudouin Le Charlier. <u>An Extensible Semantic Model of Data Base and Its Data language</u>, in ''Proceedings of the IFIP Congress 74'', pages 1026-1030, North-Holland, 1974. [http://www.fundp.ac.be/recherche/publications/page_view/41411/ [description]] [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Articles-Conferences/conferences-IFIP/IFIP-1974/IFIP-74-(JLH-BLE).pdf [full text]]
| |
− | **'''[TR78-01]'''Jean-Luc Hainaut, Baudouin Le Charlier, et al., <u>Système de conception et d'exploitation de bases de données - Volume 1 : Modèles et Langages</u>. Rapport final du projet CIPS I2/15, Institut d'informatique, Université de Namur, 1978. [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Technical-Reports/SPHINX/SPHINX-Volume-1.pdf [full text]]
| |
− | **'''[TR78-02]'''Jean-Luc Hainaut, Baudouin Le Charlier, et al., <u>Système de conception et d'exploitation de bases de données - Volume 2 : Manuel de référence des langages</u>. Rapport final du projet CIPS I2/15, Institut d'informatique, Université de Namur, 1978. [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Technical-Reports/SPHINX/SPHINX-Volume-2.pdf [full text]]
| |
− | **'''[TR78-03]'''Jean-Luc Hainaut, Baudouin Le Charlier, et al., <u>Système de conception et d'exploitation de bases de données - Volume 3 : Une implémentation du modèle d'accès</u>. Rapport final du projet CIPS I2/15, Institut d'informatique, Université de Namur, 1978. [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Technical-Reports/SPHINX/SPHINX-Volume-3.pdf [full text]]
| |
− | **'''[TR78-04]'''Jean-Luc Hainaut, Baudouin Le Charlier, et al., <u>Système de conception et d'exploitation de bases de données - Volume 4 : Le système SPHINX, Utilisation, fonctionnement et description interne</u>. Rapport final du projet CIPS I2/15, Institut d'informatique, Université de Namur, 1978. [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Technical-Reports/SPHINX/SPHINX-Volume-4.pdf [full text]]
| |
− | **'''[TR78-05]'''Jean-Luc Hainaut, Baudouin Le Charlier, et al., <u>Système de conception et d'exploitation de bases de données - Volume 5 : Exemples d'application</u>. Rapport final du projet CIPS I2/15, Institut d'informatique, Université de Namur, 1978. [http://www.info.fundp.ac.be/~dbm/Documents/Publications-LIBD/Technical-Reports/SPHINX/SPHINX-Volume-5.pdf [full text]]
| |
| | | |
| ===DB-MAIN=== | | ===DB-MAIN=== |