Project suggestions for CSU430 Database Design - Fall 2007

Professor Futrelle - College of Computer & Information Science, Northeastern U., Boston, MA

Version of 1 September 2007


Overview

Be sure to ask in class or speak with me if you have any questions, or have an idea for your project which is not on the list below. For all relational DBs you need to pay attention to design, normalization, indexes, etc. For non-relational DBs, a number of the same issues will arise; compare and contrast your non-relational DB with relational alternatives. All relational DB projects require ER design (Chap. 6) in addition to table design. Information similar to ER should be included with non-relational designs. Needless to say, a static design and implementation is just the beginning - showing how your DB can be used is a requirement.

Suggestions

  1. The most straightforward: Build a relational database, typically in MySQL, with an interesting set of constraints on attributes and tables, with non-trivial keys, etc. Create a useful and interesting set of queries, views, etc., to demonstrate your mastery of the concepts.
  2. Study spatial databases (maps, routes) and design and implement one.
  3. Study temporal databases (calendars, schedules) and design and implement one.
  4. Combine the two suggestions above to design and implement a spatial/temporal DB.
  5. Use JDBC to programmatically construct and manipulate a relational DB. Java 6 supports JDBC 4.0.
  6. Build a LAMP system using the College's CGI server. (LAMP = Linux, Apache, MySQL, PHP). Be sure to back it up with a substantial DB. Web interactivity is not enough - there must be something substantial in the backend DB.
  7. Create a project that works with image and/or sound metadata. As a secondary goal, create an app or web service that shows images or delivers the audio.
  8. Base a project on the non-relational, embedded system, Oracle Berkeley DB, and the Java Edition, in particular.
  9. Base a project on Caché, an object-based system with SQL in addition.
  10. Create a project focused on natural language (English text). A popular source of text is NIH Medline abstracts, devoted to advances in biology and medicine. Work with the flat text or the XML representation, which has substantial metadata.
  11. Look into XML data and see what you can do to map it to a relational or non-relational DB of your design. Java 6 has enhanced connections to a variety of XML parsing engines and manipulation procedures; this might help. There are two directions to go with XML: XML that represents structured data or XML-encoded text. Another option is to use Oracle DB XML.
  12. Rather than extracting information from XML, look at the new directions for adding metadata that use microformats.
  13. Create a project that deals with structured graphics, such as the diagram work in Professor Futrelle's group or in CAD.
  14. Do a project using Hadoop and run it under the free VMware Player or full VMware, if you own it. "Hadoop implements MapReduce, using the Hadoop Distributed File System (HDFS)" and thus emulates Google's 'databases' and the processing strategies for them - quite different from any other.

WARNING! You must never run Berkeley DB (BDB) on the College's Solaris systems. The Solaris file system is an NFS one and BDB is simply not compatible with NFS. (BDB uses various file caching strategies to gain efficiency and speed, strategies not compatible with NFS.) I have a special partition on my College Solaris machine that is non-NFS where I do some of my BDB work. BDB works just fine on Windows and Macs, and presumably, Linux.


Return to CSU430 Fall 2007 homepage. or RPF's Teaching Gateway or homepage