Hi, I am Everett Vinzant, and I am Attention Deficit. I know it sounds like I am going to an AA meeting, or that I am making light of AA meetings with that as my opening statement. I am not. I am stating this up front so that I can keep you focused on the fact, that I can not, by definition keep focus. Writing is the most enjoyable torture I find. It requires from me the single discipline that I may never have. It causes me to organize, something I often fail at. All joking aside, YOU do NOT understand ADD (or ADHD) if YOU do not live with it. Just consider that.
I am taking college courses on-line. I am having to study something that I have no interest in. This potentially means I will fail. I will explain why. I have to organize myself to take the course on-line. Since I am taking two courses on-line now, this becomes exponentially (not linearly) more difficult. In fact, it is so difficult that I had to get outside help to organize myself. It was not possible for me to organize the work that needed to be done AND do the work.
With that hurdle overcome I had to deal with the problem of interest. I am entering a 2000 level course (IT2230 Intro to databases). I teach the CISSP, CASP, and CISM. These are security certifications that require basic knowledge of the material in this course. I am required to teach the basics of databases. I already have some knowledge and experience in this subject. I know that if I do not find a way to relate what I am learning to what I already know, I will have a difficult time paying attention. If I do not find a way to keep interest in this class, I will get distracted, do other things, and fail the class.
The first week of the class was painful. We covered material I am already familiar with (did I mention I teach it). The second week we are studied a subject I do not know as much about. We are moving from basic structures in databases (in the first week) to basic functionality in queries and reports (in the second week). I had a question about queries and basic table design. This is what I asked:
I have three tables. A primary key in table A is referenced in table B. A primary key in Table B is referenced in table C. A primary key in table C is referenced in table A. Does the fact that I just created a loop in the database bode ill for me? I would worry about this in routing or switching in a network, so I was wondering if it mattered in a database design? I ask because I could see causing a query to infinitely loop through a poorly designed set of tables like this.
I have tied this material directly to something I understand. In order to see if I understand the course material I need a response to the question. I expect an answer to be something like, “yes, you could potentially have a problem due to poor design of the tables in the database.” This would indicate I understand something. I could also see, “not really, because…” I would have even accepted, “great question, read this (or go here), to do some research on the subject.” The student advisor for the class left a response. I leave it here as evidence. The response demonstrates that the student advisor does not understand how a primary key works in a relational database:
The key (primary key) are the only way to link and pull data from all the tables. When building databases you have one single source of reference that will remain a constant in every table. This will help when pulling inquiries.
This is exactly incorrect. A primary key is used to give each record a unique identifier. Each table in a database can have a different primary key for the records in the table. However all records in a table use the same primary key (at least at a basic level in a relational database). Knowing this I responded asking for clarification. I provide my response below. If you wish to skip it, it can be summarized as an explanation of how I know the answer I was given is incorrect, along with a quote from the inventor of the relational database explaining why the response is wrong:
Maybe you could clear up some confusion on my part. It was my understanding that the primary key was a function of the table, not of the entire database. That is to say that a primary key uniquely specifies a tuple within a table. A foreign key is a field in a relational table that matches the primary key column of another table. So according to the definition of a foreign key I should be able to construct a primary key in each table, and have a foreign key in each table point to the primary key of any other table. Many relational databases support the many to many relationship I am talking about. SQL is one of them.
From Microsofts website discussing implementation of primary keys in Access, “each table should include a field or set of fields that uniquely identifies each record stored in the table. This information is called the primary key of the table.” It does not say that the primary key is the same in every table in a database. So I am guessing that there is a primary key of the database as well?
Some research found this interesting history lesson:
In a relational database there is no real fundamental requirement to designate one and only one key per table as “primary”. E.F.Codd (inventor of the relational database model) originally used the term “primary key” to refer to any and all keys of a table and not just one.
Nowadays the term Candidate Key is used for what used to be known as a Primary Key. By convention one candidate key per table is designated as the primary one (the preferred or most important one) but the key thus designated is not essentially different to any other key of the table. The choice of a primary key is therefore arbitrary and is only as important as you want to make it.
Again, the reference here is per table, not per database.
Finally we hear from the instructor. I provide his response so that you know it was what was really offered. You can skip the technical explanation in the middle. The first sentence and the last sentence are what I am focusing on here:
You are getting a bit too “into the weeds” on this subject at this stage in the course. Here’s what you “need to know” at this point (you’ll go a bit deeper in this subject later in your studies and degree program): You need a single primary key for every table in your database. The primary key provides a unique identifier for every record (i.e., row) in that table. The primary key is an integral part of setting up relationships between tables, reporting, queries, etc.
Let us know if you have additional questions (you’ll want to keep it “high level” – i.e., “introductory” – at this point).
In essence it says, “you are right about what you said regarding primary keys, please do not ask questions that might require some insight at this point, you are not allowed those answers yet.” It is NOT a response to the question I asked, not in any way.
For the thousands of dollars I am paying Capella University for this class, you better believe I am going to get a better answer than, “go away kid, you’re bothering me.” This instructor has thrown cold water on my interest in databases because my question was an inconvenience. I have never in my years of taking college courses seen a more pathetic example of a response to a question in my entire life. The wrong answer from the student assistant at least showed an attempt to answer the question. This demonstration is directly attributable to why people that are attention deficit have problems in school. WE are the inconvenience. Damned those weirdos with diagnosed disabilities.
Tomorrow I demonstrate that I am penalized for writing a class discussion that no student in the class is willing to put in the work to respond to.