Git Product home page Git Product logo

ldbn's Introduction

LDBN - Learn DataBase Normalization

Build Status

Live demo: http://ldbnonline.com

About This Project

The project aims to provide an easy way for students to learn database normalization in a Web-based environment.

Database normalization is a technique for designing relational database tables to minimize duplication of information in order to safeguard the database against certain types of logical or structural problems, namely data anomalies. Therefore database normalization is a central topic in database theory, and its correct understanding is crucial for students. Unfortunately, the subject it is often considered to be dry and purely theoretical and is often not well received by students. To help avoid some of the above problems LDBN was developed by Nikolay Georgiev as part of his master's thesis at the University of Umeå, Sweden, under the supervision of Stephen J. Hegner.

LDBN is a Web-based environment for learning relational-database normalization. LDBN is aiming to improve the understanding and knowledge of relational-database normalization among students, who are learning database theory and are already familiar with the basics of the relational-database normalization.

LDBN was developed in order to give students the ability to easily and efficiently test their knowledge of the different normal forms in practice. The environment assists the students by providing them the following functionalities:

  1. Allow the student to specify a candidate decomposition of a given relation.
  2. Assess the correctness of the student's proposed decomposition relative to many factors; including:
    • Lossless-join property
    • Dependency preservation
    • Specification of keys
    • Correctness of the 2NF, 3NF and BCNF decompositions
  3. Provide students with sample decompositions when needed.
  4. Allow users to communicate with each other via comments/posts.

The students can test their knowledge by solving different assignments, which consist of a relational-database schema in universal-relation form (URF), i.e., all the attributes in a single relation and a set of FDs on the attributes. The user (the student) have to find different decompositions of the relation. The user can check his solution with LDBN. The result is shown in an information window. The user are given small hints were the mistake might be. If the user is still uncertain about the right solution then LDBN can provide him/her with a sample solution as well.

Other features of LDBN include an easy way for lecturers to create new assignments.

How to Build and Run the Project

LDBN uses the Gradle build system, you can build the project locally just by typing the following in the console:

./gradlew build

The output of the Gradle build is located in the build/www directory.

Furthermore, you can start the application by using Docker. After a successful Gradle build run the following command to create the Docker container:

docker build -t ldbn .

After that you can start the Docker container by:

docker run -d --name=ldbn -p 80:80 -v `pwd`/docker/example-db/:/var/ldbn/sql ldbn

Now you can open http://localhost in you browser to view the web application.

To stop the Docker container run:

docker stop ldbn

How to Extend LDBN

If you want to import the project in an IDE such as Eclipse or IntelliJ IDEA then Gradle provides a way to generate all the necessary project files.

Generate Eclipse project:

./gradlew eclipse

Generate IntelliJ IDEA project:

./gradlew idea

ldbn's People

Contributors

devng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.