Development Framework - Kosudo/nextSIS GitHub Wiki
nextSIS is an Internet/intranet-based student information system. The development framework for nextSIS is as follows:
- [PHP] (http://php.net/)
- [MySQL] (https://en.wikipedia.org/wiki/MySQL) with the [InnoDB storage engine] (https://en.wikipedia.org/wiki/InnoDB)
- [PDO] (http://php.net/manual/en/ref.pdo-mysql.php)
- [CodeIgniter] (http://codeigniter.com/)
- [JavaScript] (https://en.wikipedia.org/wiki/JavaScript)
- [jQuery] (http://jquery.com)
- [Twitter Bootstrap] (http://twitter.github.com/bootstrap/)
- [HTML5] (https://en.wikipedia.org/wiki/Html5)
I decided to use PHP and MySQL because these are popular development tools for this kind of project. I'm using InnoDB for the MySQL storage engine. [InnoDB has been MySQL's default storage engine since version 5.5] (http://dev.mysql.com/doc/refman/5.5/en/innodb-default-se.html) was launched in October 2010, which means there may be some legacy compatibility issues with non-upgraded servers. However, for our purposes InnoDB has three advantages over MyISAM - it supports transactions, referential integrity constraints and row-level locking rather than table-level. The obvious disadvantage of InnoDB is a lack of full-text search support [until version 5.6.4] (http://blogs.innodb.com/wp/2011/12/innodb-full-text-search-in-mysql-5-6-4/) (and even there it seems more rudimentary). Over time this should become less of an issue - in the meantime I think we have to live with it. InnoDB is available in versions of MySQL prior to 5.5, but it isn't the default storage engine - to change it (under Linux) [read this] (http://dougalmatthews.com/articles/2008/sep/3/changing-default-storage-engine-in-mysql/).
I'm using PDO to enhance database portability and because modern projects really should. CodeIgniter, JavaScript with jQuery and Twitter Bootstrap are being used to make development faster and produce better and more consistent user interfaces. HTML5 is the preferred markup language.
While the system will run from a web server, the goal is to provide the most application-like user experience possible utilising Ajax-type techniques to commit data to the database without the need for page navigation.
The MySQL database should be fully normalised up to the third-normal form where we are going to become more pragmatic. Everything will be documented in full so developers can understand the thinking behind the various design decisions.
Peripheral tools
In building this system, it's likely that we may need to use other tools to share information - for example entity-relationship diagrams. I want to only do this using open-source/free products that can be run on multiple platforms. In our example, that means avoiding Visio and possibly using OpenOffice (LibreOffice) Draw.
Links
- [Why you Should be using PHP’s PDO for Database Access] (http://net.tutsplus.com/tutorials/php/why-you-should-be-using-phps-pdo-for-database-access/)
- [Introduction to PHP PDO] (http://www.phpro.org/tutorials/Introduction-to-PHP-PDO.html)
- [PDO Tutorial for MySQL Developers] (http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers)
- [MySQL Functions (PDO_MYSQL) at php.net] (http://php.net/manual/en/ref.pdo-mysql.php)