In the previous series on database design principles, we discussed potential pitfalls in software development and ways to solve common database design mistakes. In the past week, while revamping an ASP.NET software application developed by another company, I have had the opportunity to see many of these rules come to life, and see their malpractice wreak havoc on the enhancements.
Continue reading
Monthly Archives: May 2014
When Optimization Breaks Software
It’s well known that most of the code we write is not what the computer actually runs. When writing a program, the compiler or runtime will take the code and perform a process called “optimization,” where various methods are applied to make the code more efficient so that it will execute faster.
Continue reading
ASP.NET – Custom Query Interfaces
When developing web-based forms using the ASP.NET platform, one of the basic tools that is lacking from the framework is an effective search mechanism. Custom queries seem to have been neglected due to their apparent complexity, and their non-geometric fit into the ideology of most frameworks. Still, a good search tool is very useful to users for finding relevant data in a large database. As such, we have developed a few tools and methodologies to make search implementation easier in web applications.
Continue reading
Database Design Principles – Part 5: Isolate Semantically Related Multiple Relationships
In the previous database design post, we discussed isolating independent multiple relationships. The goal was to find relationships in the database that were independent, yet incorrectly bound to the same row. This last and final database design principle helps us find data that is too flexible, and can instead be combined to help reduce database size and optimize speed.
Continue reading
Database Design Principles – Part 4: Isolate Independent Multiple Relationships
In part 4 of this 5-part series on database design principles, we review Independent Multiple Relationships. By isolating relationships so that the database structure is fully hierarchical, the software will be more adaptable to future user needs, and require less reprogramming when the requirements will inevitably change in the future.
Continue reading
Database Design Principles – Part 3: Eliminate Columns Not Dependent on Key
In the third of this five part database design series, we review the database design rule of removing columns not dependent on the key. Similar to removing redundant data, this rule will make the database more flexible and maintainable throughout the lifecycle of the system.
Continue reading
Database Design Principles – Part 2: Eliminate Redundant Data
In the second of this five part database design series, we continue to explore improvements to the database schema. These improvements will help create more flexible software, reduce maintenance and support costs, and improve scalability. The second principle of database design is to eliminate redundant data.
Continue reading
Database Design Principles – Part 1 of 5: Eliminate Repeating Groups
With the large number of software applications in the wild, from desktop, to web, to mobile, the vast majority employ some form of database. As development teams get smaller and consist of fewer seasoned professionals, the databases that run these applications are often poorly designed, inflexible, and difficult to scale. By following a few core principles of database design, however, many of these databases could be substantially improved. The first and foremost rule of good database design: eliminate repeating groups.
Continue reading
How Search Engines Work
Often when building a web application, it’s necessary to add search to the site. A variety of tools exist to help make it easier, my personal favorite is Sphider – a PHP-based search engine, however the basic principles in each approach are the same.
Continue reading
How to Bypass Firewalls Using SSH
SSH is an age-old technology used by network administrators to remotely log into servers. With a few clever tricks, it can also be used to bypass most firewalls, and open up ports on the local network. All that is required on the target machine is an SSH client.
Continue reading