Dbm (discuter | contributions) m |
Dbm (discuter | contributions) m |
||
(25 révisions intermédiaires par un utilisateur sont masquées) | |||
Ligne 1 : | Ligne 1 : | ||
− | <center><big><b>Pages en cours de développement | + | <center><big><b>Pages in development / Pages en cours de développement</b></big></center> |
− | <center><big><big><big><b> | + | <center><big><big><big><b>Themes and resources/ Thèmes et ressources</b></big></big></big></center> |
− | :: | + | ::This section collects and integrates the resources of the Computer science faculty and, more specifically of the DB research group, into themes related to Database Engineering (and some others). |
− | :: | + | ::Cette section regroupe et intègre les différentes ressources de la faculté d'informatique et du LIBD en particulier, autour de thématiques liées à l'Ingénierie des bases de données (et quelques autres). |
− | [[Accueil|<''Retour à la page d'accueil | + | [[Accueil|<''Back to Welcome page / Retour à la page d'accueil>]] |
+ | |||
+ | |||
+ | ==Foreword== | ||
+ | |||
+ | This section of the site will present the contribution of the Computer science faculty of the University of Namur to the Database discipline since 1971. In short, an overview of the first 40 years of research in DB engineering! I will leave the development of the next 40 years to my young colleagues. | ||
+ | |||
+ | This work is not a simple task, and I don't expect its completion before at least one or two years | ||
+ | |||
+ | Jean-Luc Hainaut, June 2011 | ||
==Introduction== | ==Introduction== | ||
+ | TBA | ||
− | ==Modeling and | + | |
− | *''' | + | ==Modeling and Metamodeling== |
+ | *'''Introduction''' | ||
+ | :Database engineeering addresses domains such as database exploitation, database design, database reverse engineering or database evolution. A database is described through a hierarchy of ''schemas'', each of them expressed in a '''data''' (or information) '''model'''. A large part of database engineering resort to schema manipulation, where data structures are built, analyzed, evaluated, transformed and used to produced various artefacts such as other schemas, DML and DDL code. The quality and the effectiveness of these schema manipulation processes depend on the availability of appropriate data models. Hence the importance of model development activities ('''Database Models'''). | ||
+ | :A data model states a definite way to view data but, to be complete, it must be accompanied by '''languages''' that tell how to interact with the contents of database, that is, how to manipulate these data. Sometimes, such language takes the form of an '''API''' (application program interface) that also defines the technical detail of these interactions ('''Database languages'''). | ||
+ | :The design and evaluation of models require a means to describe them in a general way and to reason about them (for example, ''how the Entity-relationship model compares with UML class diagrams?'') This is the concern of '''metamodeling''', that proposes models to reason about models, and that are, for that, metamodels ('''Metamodeling'''). | ||
+ | :This chapter describes the contribution of the LIBD to the development of database models, database languages and API’s and metamodels. | ||
===Database Models=== | ===Database Models=== | ||
+ | *'''Status''': ''Complete'' | ||
*'''Description''' | *'''Description''' | ||
:The development and the exploitation of data models are at the baseline of the database engineeering domain. They allow database structures to be described at the appropriate level of abstraction, so that one can rigourously evaluate and transform schemas and reason about them. They are at the core of design methodologies and CASE tools. The <b>conceptual models</b>, such as the Entity-relationship model and some interpretation of UML class diagrams are aimed at describing data/information structures at the conceptual, technology-independent level, while the many <b>logical models</b> currently available are intended to represent data structures as they are implemented by data managers (or by families thereof). | :The development and the exploitation of data models are at the baseline of the database engineeering domain. They allow database structures to be described at the appropriate level of abstraction, so that one can rigourously evaluate and transform schemas and reason about them. They are at the core of design methodologies and CASE tools. The <b>conceptual models</b>, such as the Entity-relationship model and some interpretation of UML class diagrams are aimed at describing data/information structures at the conceptual, technology-independent level, while the many <b>logical models</b> currently available are intended to represent data structures as they are implemented by data managers (or by families thereof). | ||
Ligne 26 : | Ligne 42 : | ||
*'''Keywords''' | *'''Keywords''' | ||
− | :ER model, | + | :ER model, Individual model, Merise model, UML class diagrams, wide-spectrum model, GER model, DB-MAIN model, logical data model, temporal model, legacy data model, relational model, network model, hierarchical model, OO model, OR model, XML model, decision support, large schema layout, semantic and statistical aspects of models, IS-A relation, wrappers |
:''[[LIBD:Themes:Database-Models|<Go to the <b>Database Models</b> page for more detail>]]'' | :''[[LIBD:Themes:Database-Models|<Go to the <b>Database Models</b> page for more detail>]]'' | ||
===Database Languages and API=== | ===Database Languages and API=== | ||
− | *'''Description''': | + | *'''Status''': ''Partial'' |
+ | *'''Description''' | ||
+ | :Interacting with databases requires languages and protocols, be they for database building, exploitation or administration. The level of language depends on its goal and on the skill of its target user. We present and discuss some of the languages and API’s we have developed as well as some contributions to language processing. | ||
*'''Keywords''' | *'''Keywords''' | ||
− | : | + | :database languages, CASE programming, Voyager 2, DB-MAIN, SQL script, dynamic SQL, temporal API, wrapper, wrapper generator |
:''[[LIBD:Themes:Database-Languages-and-API|<Go to the <b>Database Languages and API</b> page for more detail>]]'' | :''[[LIBD:Themes:Database-Languages-and-API|<Go to the <b>Database Languages and API</b> page for more detail>]]'' | ||
− | === | + | ===Metamodeling=== |
+ | *'''Status''': ''complete'' | ||
*'''Description''' | *'''Description''' | ||
+ | :Meta-''something'' is ''something'' about ''something'' (replace ''something'' by any name pertaining to philosophy, mathematics or computer science). For instance, metadata are data that describe the structure and other properties of data (generally user data). For instance, the ''table of tables'' (generically named SYS_TABLE) in the ''catalog'' of any relational database is a metatable that contains metadata. Being said in passing, it includes a row that describes this table itself. | ||
+ | :The domain of database engineering makes much use of ''meta''-level concepts. For instance any CASE tool includes some sort of database in which it stores its data. This database contains descriptions of schemas, among others. These descriptions are metadata. This database bears several names according to the community that uses it, namely ''metadatabase'', ''metabase'', ''(metadata) repository'', ''model base'' or ''encyclopedia'' (this one a bit outdated). | ||
+ | :The term ''meta-model'' designates a model that is used to describe other models. Since the database community prefers the term ''schema'' instead of ''model'' (the latter having another interpretation, as in ''relational model''), this proposition translate as follows: the term ''meta-schema'' designates a schema that is used to describe other schemas. | ||
*'''Keywords''' | *'''Keywords''' | ||
− | : | + | :metamodel, metaCASE, metadata, model base, repository, catalog tables, DB-MAIN, Voyager 2, workflow modeling, clinical pathway modeling |
− | :''[[LIBD:Themes:Meta-modeling|<Go to the <b> | + | :''[[LIBD:Themes:Meta-modeling|<Go to the <b>Metamodeling</b> page for more detail>]]'' |
==Database Methodologies== | ==Database Methodologies== | ||
− | *''' | + | *'''Introduction''' |
===Method Modeling=== | ===Method Modeling=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 54 : | Ligne 77 : | ||
===Database design (General)=== | ===Database design (General)=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 60 : | Ligne 84 : | ||
===Conceptual Analysis=== | ===Conceptual Analysis=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 66 : | Ligne 91 : | ||
===Logical Design=== | ===Logical Design=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 72 : | Ligne 98 : | ||
===Physical Design=== | ===Physical Design=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 78 : | Ligne 105 : | ||
===Code Generation=== | ===Code Generation=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 84 : | Ligne 112 : | ||
===Database Schema Quality=== | ===Database Schema Quality=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 90 : | Ligne 119 : | ||
===Database reverse Engineering=== | ===Database reverse Engineering=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 96 : | Ligne 126 : | ||
==Database Reverse Engineering== | ==Database Reverse Engineering== | ||
− | *''' | + | *'''Introduction''' |
===Methodology and Techniques=== | ===Methodology and Techniques=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 105 : | Ligne 136 : | ||
===Tools=== | ===Tools=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 111 : | Ligne 143 : | ||
===Case Studies=== | ===Case Studies=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 117 : | Ligne 150 : | ||
==Transformational Engineering== | ==Transformational Engineering== | ||
− | *''' | + | *'''Introduction''' |
===Principles and Methodology=== | ===Principles and Methodology=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 126 : | Ligne 160 : | ||
===Tools=== | ===Tools=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 132 : | Ligne 167 : | ||
===Applications=== | ===Applications=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 138 : | Ligne 174 : | ||
==Database Evolution and Migration== | ==Database Evolution and Migration== | ||
− | *''' | + | *'''Introduction''' |
===Database Evolution and Migration=== | ===Database Evolution and Migration=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 147 : | Ligne 184 : | ||
===Program Evolution and Migration=== | ===Program Evolution and Migration=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 153 : | Ligne 191 : | ||
==Data Interoperability== | ==Data Interoperability== | ||
− | *''' | + | *'''Introduction''' |
===Heterogeneous Data Integration=== | ===Heterogeneous Data Integration=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 162 : | Ligne 201 : | ||
===Web Data Integration=== | ===Web Data Integration=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 168 : | Ligne 208 : | ||
==Special Databases== | ==Special Databases== | ||
− | *''' | + | *'''Introduction''' |
− | + | :Some aspects of information systems require a special treatment, that translates in specific data models and specific design processes. | |
===Active Databases=== | ===Active Databases=== | ||
+ | *'''Status''': ''complete'' | ||
*'''Description''' | *'''Description''' | ||
+ | :An active (or reactive) database is able to react to some external stimuli, such as data modification actions. Practically, the reaction mechanism relies on triggers, predicates and SQL procedures. A specific reaction can be defined through different patterns. The first one is the predicate (SQL check), which states a static property that the data must always meet. Any action that will violate this property is rejected. The second one specifies a procedure that must be executed before or after definite data modification actions (SQL trigger). The third one consists of a procedure of arbitrary complexity (SQL stored procedure) that can be called by users, by client programs or by triggers. | ||
*'''Keywords''' | *'''Keywords''' | ||
+ | :active database, Is-a relation management, active rule, SQL trigger, SQL predicate, SQL stored procedure, integrity management, update propagation, decision support system, temporal database | ||
:''[[LIBD:Themes:SPECIAL-Active-Databases|<Go to the <b>SPECIAL - Active Databases</b> page for more detail>]]'' | :''[[LIBD:Themes:SPECIAL-Active-Databases|<Go to the <b>SPECIAL - Active Databases</b> page for more detail>]]'' | ||
===Temporal Databases=== | ===Temporal Databases=== | ||
+ | *'''Status''': ''complete'' | ||
*'''Description''' | *'''Description''' | ||
+ | :While a standard database collects data about the current state of a set of entities, a temporal database includes data about entities that evolve over time. When an entity changes, its new state is recorded but the former state is kept in the temporal database. As a consequence, it is possible to rebuild the state of the application domain at a certain time point. It is also possible to extract the evolution of a set of entities during a certain period. A fully temporal database records the past, current and future states of entities. One considers two types of time. The ''transaction'' (or physical) time indicates when data have been recorded, changes and deleted in the database. The ''valid'' (or logical) time indicates when events occurs in the application domain. A bitemporal database record both types of time. | ||
*'''Keywords''' | *'''Keywords''' | ||
+ | :temporal database, active database, statistical database | ||
:''[[LIBD:Themes:SPECIAL-Temporal-Databases|<Go to the <b>SPECIAL - Temporal Databases</b> page for more detail>]]'' | :''[[LIBD:Themes:SPECIAL-Temporal-Databases|<Go to the <b>SPECIAL - Temporal Databases</b> page for more detail>]]'' | ||
===Statistical Databases=== | ===Statistical Databases=== | ||
+ | *'''Status''': ''partial'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
− | + | :statistical database, temporal database, Quetelet.net project | |
:''[[LIBD:Themes:SPECIAL-Statistical-Databases|<Go to the <b>SPECIAL - Statistical Databases</b> page for more detail>]]'' | :''[[LIBD:Themes:SPECIAL-Statistical-Databases|<Go to the <b>SPECIAL - Statistical Databases</b> page for more detail>]]'' | ||
==XML and the web== | ==XML and the web== | ||
− | *''' | + | *'''Introduction''' |
===XML Structures Modeling and Manipulation=== | ===XML Structures Modeling and Manipulation=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 198 : | Ligne 246 : | ||
===Web Reverse Enginering=== | ===Web Reverse Enginering=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 204 : | Ligne 253 : | ||
==Tools== | ==Tools== | ||
− | *''' | + | *'''Introduction''' |
===DBMS=== | ===DBMS=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 213 : | Ligne 263 : | ||
===Standard CASE Tools=== | ===Standard CASE Tools=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 219 : | Ligne 270 : | ||
===Special-purpose CASE Tools=== | ===Special-purpose CASE Tools=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 225 : | Ligne 277 : | ||
===Meta-CASE Tools=== | ===Meta-CASE Tools=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 231 : | Ligne 284 : | ||
===Database Access Tools=== | ===Database Access Tools=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords | *'''Keywords | ||
Ligne 238 : | Ligne 292 : | ||
==Workflow modeling== | ==Workflow modeling== | ||
− | *''' | + | *'''Introduction''' |
===Model-base for Clinical Pathways=== | ===Model-base for Clinical Pathways=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 247 : | Ligne 302 : | ||
===Workflow Modeling=== | ===Workflow Modeling=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 253 : | Ligne 309 : | ||
==Databases and Computing Models== | ==Databases and Computing Models== | ||
− | *''' | + | *'''Introduction''' |
===Modeling and Methodology=== | ===Modeling and Methodology=== | ||
+ | *'''Status''': ''complete'' | ||
*'''Description''' | *'''Description''' | ||
+ | :Spreadsheets offer one of the most popular form of programming available to end users. Unfortunately, many spreadshets include more or less severe errors that make them unreliable. In this theme, we analyze this problem and we propose a simple and intuitive user-oriented methodology to develop correct spreadsheets. | ||
*'''Keywords''' | *'''Keywords''' | ||
+ | :computing model, equational model, spreadsheet, spreadsheet design, spreadsheet errors, spreadsheet/database coupling | ||
:''[[LIBD:Themes:COMPUTING-Modeling-and-Methodology|<Go to the <b>DB-Comp - Modeling and Methodology</b> page for more detail>]]'' | :''[[LIBD:Themes:COMPUTING-Modeling-and-Methodology|<Go to the <b>DB-Comp - Modeling and Methodology</b> page for more detail>]]'' | ||
===Tools=== | ===Tools=== | ||
+ | *'''Status''': ''partial'' | ||
*'''Description''' | *'''Description''' | ||
+ | :An environment to design and generate hybrid databases including an equational model has been implemented in the DB-MAIN CASE tool. Such a database includes derived attributes according to complex computing rules. | ||
*'''Keywords''' | *'''Keywords''' | ||
+ | :computing model, equational model, deductive database | ||
:''[[LIBD:Themes:COMPUTING-Tools|<Go to the <b>DB-Comp - Tools</b> page for more detail>]]'' | :''[[LIBD:Themes:COMPUTING-Tools|<Go to the <b>DB-Comp - Tools</b> page for more detail>]]'' | ||
==Educational Resources== | ==Educational Resources== | ||
− | *''' | + | *'''Introduction''' |
===SQL=== | ===SQL=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 277 : | Ligne 340 : | ||
===Database Design=== | ===Database Design=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 283 : | Ligne 347 : | ||
===Relational Theory=== | ===Relational Theory=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 289 : | Ligne 354 : | ||
===Database Reverse Engineering=== | ===Database Reverse Engineering=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 295 : | Ligne 361 : | ||
===Transformation-based Database Engineering=== | ===Transformation-based Database Engineering=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 301 : | Ligne 368 : | ||
===Database Security=== | ===Database Security=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 307 : | Ligne 375 : | ||
===Temporal Databases=== | ===Temporal Databases=== | ||
+ | *'''Status''': ''Empty'' | ||
*'''Description''' | *'''Description''' | ||
*'''Keywords''' | *'''Keywords''' | ||
Ligne 313 : | Ligne 382 : | ||
− | [[Accueil|<''Retour à la page d'accueil | + | [[Accueil|<''Back to Welcome page / Retour à la page d'accueil>]] |
<!-- | <!-- |
<Back to Welcome page / Retour à la page d'accueil>
This section of the site will present the contribution of the Computer science faculty of the University of Namur to the Database discipline since 1971. In short, an overview of the first 40 years of research in DB engineering! I will leave the development of the next 40 years to my young colleagues.
This work is not a simple task, and I don't expect its completion before at least one or two years
Jean-Luc Hainaut, June 2011
TBA
<Back to Welcome page / Retour à la page d'accueil>