My sister is going to start taking classes to try to learn how to become a web developer. She’s sent me the class lists for a couple of candidate schools for me to help guide her decision.
One of the schools mentions Microsoft Access as the primary tool used in the database classes including relational algebra, SQL, database management, etc.
I’m wondering – if you learn Microsoft Access will you be able to easily pick up another more socially-acceptable database technology later like MySQL, Postgres, etc? My experience with Access was not pleasant and I picked up a whole lot of bad practices when I played around with it during my schooling years.
Basically: Does Microsoft Access use standards-compliant SQL? Do you learn the necessary skills for other databases by knowing how Microsoft Access works?
Access I would say a lot more peculiarities over ‘actual’ databasing software. Access can be used as a front end for SQL databases easily and that’s part of the program.
Let’s assume the class is using databases built in Access. Then let’s break it down into the parts of a database:
Tables
Access uses a simplified model for variables. Basically you can have typical number, text fields, etc. You can fix the number of decimals for instance like you could with SQL. You won’t see variables like varchar(x) though. You will just pick a text field and set the field size to “8”, etc. However, like a real database, it will enforce the limits you’ve put in. Access will support OLE objects, but it quickly becomes a mess. Access databases are just stored like a file and can become incredibly large and bloat quickly. Therefore using it for more than storing address books, text databases, or linking to external sources via code…you have to be careful about how much information you store just because the file will get too big to use.
Queries
Access implements a lot of things along the line of SQL. I’m not aware that it is SQL compliant. I believe you can just export your Access database into something SQL can use. In code, you interact with SQL database with DAO, ADO, ADODB and the Jet or Ace engines. (some are outdated but on older databases work) However, once you get to just making queries, many things are similar. Typical commands–select, from, where, order, group, having, etc. are normal and work as you’d see them work elsewhere. The peculiar things happen when you get into using calculated expressions, complicated joins (access does not implement some kinds of joins but you will see arguably the most important–inner join/union ). For instance, the behavior of distinct is different in Access than other database architecture. You also are limited in the way you use aggregate functions (sum/max/min/avg) . In essence, Access works for a lot of tasks but it is incredibly picky and you will have to write queries just to work around these problems that you wouldn’t have to write in a real database.
Forms/Reports
I think the key feature of Access is that it is much more approachable to users that are not computer experts. You can easily navigate the tables and drag and drop to create forms and reports. So even though it’s not a database in my book officially, it can be very useful…particularly if few people will be using the database and they highly prefer ease of use/light setup versus a more ‘enterprise level’ solution. You don’t need crystal reports or someone to code a lot of stuff to make an Access database give results and allow users to add data as needed.
Why Access isn’t a database
It’s not meant to handle lots of concurrent connections. One person can hold the lock and there’s no negotiating about it–if one person is editing certain parts of the database it will lock all other users out or at least limit them to read-only. Also if you try to use Access with a lot of users or send it many requests via code, it will break after about 10-20 concurrent connections. It’s just not meant for the kinds of things oracle and mySQL are built for. It’s meant for the ‘everyman’ computer user if you will, but has a lot of useful things programmers can exploit to make the user experience much better.
So will this be useful for you to learn more about?
I don’t see how it would be a bad thing. It’s an environment that you can more easily see the relational algebra and understand how to organize your data appropriately. It’s a similar argument to colleges that teach Java, C++, or Python and why each has its merits. Since you can immediately move from Access to Access being the front-end (you load links to the tables) for accessing a SQL database, I’m sure you could teach a very good class with it.