Library of Over 500 Free Database Models

Databases are used in so many ways on so many websites. They are used for small tasks and large distributed networks scaled to handle millions of transactions per day. Sometimes we need a little help, a little push in the right direction in order to create a properly designed and normalized database. Thankfully, there are sites like DatabaseAnswers.org that provide help from "getting-started tutorials" to "database models."

There are over 500 free database models at this website. They are all viewable in data model form and can be saved as an image or printed. You are also able to request an access database for any of the data models available by simply emailing and asking for one. The data models span many different categories from customers to bookstores to catalogs, and the list just goes on. I have listed the top 20 data models below.

Top 20 Data Models

  1. Libraries and Books
  2. Inventory Control for Retail Stores
  3. Hotel Reservations
  4. Video Rentals
  5. School Management
  6. Clients and Fees
  7. CD Collections
  8. Customers and Invoices
  9. Payroll
  10. Apartment Rentals
  11. Customers and Services
  12. ERP
  13. Car Sales
  14. Customers and Addresses
  15. Driving Schools
  16. Health and Fitness Clubs
  17. Hospital Admissions
  18. Inventory of Files in Boxes
  19. Sports Clubs
  20. Airline Reservations

The creator of all of these database models runs multiple database companies; one is in the UK; the other is in the US. He has also created data models that are included in Microsoft SQL Server 2005 Express. He offers his reason for providing these saying, "I design these Data Models for free to give something back to the Database community that has provided me with a good (and interesting) living for the past 15 years" (DatabaseAnswers.org). Be sure to check these out and show some love for all the hard work that went into creating these and offering them for FREE!

Add Salt To Make Your Encryptions Better

Encryption

Needing Salt

There are few things that aren't better once salt has been added, and encryptions are no different. Adding a salt can make a simple encryption exponentially harder to break/crack. "Salt data complicates dictionary attacks that use pre-encryption of dictionary entries: Each bit of salt used doubles the amount of storage and computation required" (Wikipedia). You can see that by adding a good sized salt, the encryption can become very difficult to break by dictionary or other brute force attacks. A lot of programmers rely entirely on the md5 encryption for storing passwords because it is built into both PHP and MySQL. While md5 is an easy function to implement, it is pretty easily reversed using rainbow tables. Thankfully, there are many other available encryption options that include salt, and the best part about adding salt to your encryption is how easily it can be done.

Adding Salt

  • PHP - crypt("string to encrypt","salt")
  • Perl - crypt("string to encrypt","salt")
  • ASP - Set crypt = Server.CreateObject("Persits.CryptoManager")
    Set ctx = crypt.OpenContext("", True)
    Set hash = ctx.CreateHash
    hash.AddText Request("string to encrypt") & salt
    hashvalue = hash.Value.Hex
  • Ruby On Rails - "string to encrypt".crypt("salt")
  • Python - crypt("string to encrypt","salt")

Enjoying Salt

Now that you have added salt to your encryption, I'm sure you would like to know how much more secure that encrypted string really is. This is actually a very easy calculation. Let's say for example that you know your users are creating easy passwords that they can remember and are therefore picking words out of the dictionary. The users are picking from let's say around 100,000 of the words in the English language. Using encryption without salt, basic brute force attacks would have to compute 100,000 hashes to find the correct one. On the other hand, if you take their password from the dictionary and add a salt, using say a 32 bit salt, the same size as md5 encryption, you multiply the word possibilities by the salt possibilities; see below:

  • Password Possibilities: 100,000
  • Salt Possibilities: 2^32
Hash calculations needed = Password Possibilities * Salt Possibilities
Hash calculations needed = 100,000 * 2^32
Hash calculations needed = 429,496,729,600,000

This basic calculation shows that simply adding a salt makes the encryption 4,294,967,296 times harder to break.

Additional Resources

5 Best Free FTP Programs

.

FTPAny webmaster knows the importance of a good FTP program. Although we can accomplish FTP requirements through a command line program, whether it be on Windows or a flavor of *nix, that is not always the most efficient way. A good program is typically advertised as a commercial software application with an associated commercial cost. While this is true in some cases, such as FlashFXP and CuteFTP, there are many options out there that provide great functionality at at an even better cost: free. I have listed 5 of the best below.

You can click on the Screen Shot icon to see a screenshot.

  • Screen Shot | FileZilla - This is probably the most popular free FTP program available. It has a large following, in part due to it being an open source program. That certainly isn't the only reason though. FileZilla is not as nice to look at as SmartFTP, but is very fast and efficient. The program uses very little resources and provides all the typical functionality required in an FTP program. It boasts features like drag & drop, transfer queues, resume, large file transfers, and many more. If you don't care about the appearance and you just want a fast, easy, and full featured program, this is your program.
  • Screen Shot | FireFTP - This is an add-on for FireFox. Don't be fooled by its simplicity though. It has many of the same features covered in the first two programs. FireFTP supports searching, remote editing, drag & drop, FXP (FTP to FTP), CHMOD, synchronization, and more. Although this harnesses the framework of FireFox, FireFTP is a good choice for many.
  • Screen Shot | GoFTP - This program presents itself as the fastest multi-threaded FTP program available, working 314% faster than its competitors. Speed and ease of use are the biggest sellers for this program. GoFTP will also perform "on the fly compression," as well as instant connections and directories through its proprietary technology. It also supports the usual features, drag & drop, and transfer queues. This is another good alternative to a paid program.
  • Screen Shot | WinSCP - This program doesn't have anything that I think separates it from the pack, but is still a good program. It supports all the common features like drag & drop, synchronization, and the common file operations. One thing I might point out is that is does offer a command-line interface and batch processing. This is an interesting feature to add because if I wanted to use command line, I'd use the basic FTP programs that come bundled in windows or *nix. At any rate, it works well and is a worthy entry in the list.
  • Screen Shot | CoffeeCup Free FTP - This program is a basic no frills FTP program. It offers all the features necessary to be a FTP program like ASCII/Binary/Auto uploads and downloads. It connects to any FTP server, is capable of multiple server profiles, and remembers your server information. It is not the best looking program but it does what is needed and is best of all, free.

What FTP program do you use to meet your needs? Please comment below and let us know what else is out there.

The Best Developer Cheat Sheets Around

Cheat Sheet

Who doesn't like a helpful cheat sheet to have around? They save so much time and really help you learn what you are working with in an easy to understand format. I have gathered a list of the cheat sheets I have found to be the most helpful. There are cheat sheets from PHP to CSS to RegEx, and I have listed over 40 different cheat sheets to help!

  • Design
    • HTML (1) (2) (3)
    • CSS (1) (2) (3)
    • XML (1) (2) (3)
    • RGB Hex Color (1)
    • DOCTYPE (1)
  • Programming
    • PHP (1) (2) (3)
    • ASP (1) (2)
    • JavaScript (1) (2)
    • Ruby On Rails (1) (2) (3) (4)
    • Perl/CGI (1) (2)
    • Ajax (1) (2) (3)
  • Database
    • MySQL (1) (2)
    • PostgreSQL (1) (2)
    • SQL Server (1)
    • Oracle (1) (2)
  • Other
    • Regular Expressions (1) (2) (3)
    • mod_rewrite (1)
    • htaccess (1)
    • RSS (1)
    • WordPress (1)
    • CHMOD (1)
    • Vi (1)
    • Social Bookmark Links (1)
    • SEO (1)

For even more resources check out this blog post on the Virtual Hosting Blog.

Update

Hey everyone. DZone also has some great cheat sheets. They have one of the best layouts available. They have topics ranging from ajax to Eclipse. You can check them out here.

What cheat sheets did I miss? Leave any missing cheat sheets you found helpful in the comments.

What can we expect from HTML 5?

HTML

The World Wide Web Consortium (W3C) has been working to set the specifications for the new HTML 5. They have produced a document that outlines all the changes, deletions, and additions. This draft is very long and a little tiring to read, so I've tried to create a short summary of important parts. This summary is by no means all inclusive or a replacement for the information in the draft on the W3C's website.

  • New Elements - These new elements are intended to provide better structure.
    • section, article, aside, header, footer, nav, dialog, figure, audio, video, embed, mark, meter, time, canvas, command, datagrid, details, datalist, datatemplate, rule, nest, event-source, output, progress, ruby, rt, rb
  • New Attributes - The elements listed below have had attributes added to them. There are too many attributes to list in this summary, so I am only listing the elements that have had attributes added.
    • a, area, base, value, meta, input, output, select, textarea, button, fieldset, form, textarea, menu, style, script, html, ol, link, iframe
  • Changed Elements - These elements have been changed to reflect the way they were being used.
    • a, address, b, i, hr, label, menu, small, strong, q
  • Deleted Elements - These elements have been removed either because they should be used in CSS, they had a lack of usability, or they were confusing.
    • basefont, big, center, font, s, strike, tt, u, frame, frameset, noframes, acronym, applet, isindex, dir
  • Deleted Attributes - These attributes have been removed because these, like some of the deleted elements above, they should be used in CSS.
    • accesskey, rev, charset, shape, coords, longdesc, target, nohref, profile, version, name, scheme, archive, classid, codebase, codetype, declare, standby, valuetype, type, language, summary, axis, abbr, scope, headers
    • align, alink, link, text, vlink, background, bgcolor, border, cellpadding, cellspacing, char, charoff, clear, compact, frame, frameborder, height, hspace, vspace, marginheight, marginwidth, noshade, nowrap, rules, scrolling, size, type, valign, width
  • New APIs -HTML5 introduces some new APIs for easier web application creation.
    • 2D Drawing, audio, video, persistant storage, offline, editing, drag & drop, network, notification, history, cross document messaging, server sent events
  • HTMLDocument Extensions - These provide easier interfacing with the DOM.
    • getElementsByClassName(), innerHTML, activeElement, hasFocus, getSelection(), designMode, execCommand()
  • HTMLElement Extensions - These provide easier interfacing with the DOM.
    • getElementsByClassName(), innerHTML, classList

Although I tried to create a detailed summary, there is a lot more not covered here. I would encourage you to read over the new specifications and get a better idea of what HTML 5 is all about. For instance, the deleted attributes are removed from specific elements, so be sure to look over the full documentation before getting too worried about any changes made in HTML 5.

Although this release was a working draft published on January 22, 2008, it is expected to be in development for at least another year if not more.

What do you think about the new HTML 5? Do you have anything to add to the summary? Leave 'em in the comments for all of us to learn from.