All right, so database software, we keep talking about this, we keep talking about databases being
the data we store and it being stored in a specific way called the model.
But we never really dove deep into what actually makes this happen.
Well, that is called the database management software.
And it's a piece of software that basically says, OK, I am going to manage your database, I'm going
to be your supervisor.
I know all of the rules about the way you want to store your data.
I know your model.
And when you give me an actual query, I know exactly how to get your data and give it back to you.
It's kind of like your mediator or your manager.
It's there and it knows everything and it's kind of like a referee.
It's like, hey, hey, hey, you can't store things this way.
Hey, hey, hey, don't do this.
I am going to enforce very specific rules on you.
It's like if you took an Excel sheet and you made it a bit smarter, well, this software says I'm going
to follow a model.
Whatever model that is, it can differ between the database softwares.
And I'm going to enforce these rules for you and I'm going to use school as a way for you to talk to
me, and I'm going to make sure that your database is safe and secure and that I manage it the correct
way.
So if we look at what a database management software system can do while we're talking about create,
read, update or delete crud operations, OK, let's take a step back here.
What do I mean by that?
Well, because your database management software is between Ezekial and your database, it's basically
the one that's saying, OK, you want to create a database, let's create you a database.
OK, you want to create some data.
Let me put some data in your database, OK?
You want to read some of the data.
You want to send me an actual query?
Well, I'll give you back the right data.
All you want to update something.
There's some data in there that doesn't match your expectations.
Cool.
I'll do that for you.
And it can even delete some stuff.
OK, we accidentally added a student that isn't going to be part of the school.
Let's quickly remove them from the system, create, read, update, delete.
But this is an acronym that you will often hear when talking about school and databases, because this
is the bulk of what school is going to do for you when you talk to your database management software.
And this is the bulk of what the database management software intends to do for you.
But on top of that, I talked about the database management software doing a bit more.
A database management software not only allows you to do those CRUD operations, but what it's also
going to do is it's going to manage your data.
It's going to make sure that it's saved in the right place, is going to make sure that it knows on
what hard drives is going to put what it's going to secure your data.
It's going to make sure that not everyone can touch them.
It's going to put in place the right security policies and the right permissions, and it's even going
to do something called transaction management.
This is something fairly complicated that we're going to get into later.
But transaction management is basically like, hey, I want to update something and someone else wants
to update something.
And they're updating the exact same thing at the same time, while the database management software
is going to basically say, oh, something happened here, I'm going to quickly undo the change because
that's not what we meant to do.
It's going to do way more complex scenarios.
It's going to handle those for you.
Database management software is basically there to guarantee that your data is always going to stay
safe and always going to be accessible.
Basically, when we used to build our own custom software, what could happen?
Well, some developer could push a change and it could corrupt some data or could do something wrong
in a certain operation.
And some specific record of a user could go missing record meaning like a specific part of data, like
you had a user's address.
And when we built the custom software, remember the file processing systems, let's say a developer
committed a piece of code that was supposed to update your address and something went wrong there because
a database management software is removed from that custom built.
And it has one sole responsibility.
We're always guaranteed that is going to do these things to the best of its abilities and not the rigorously
tested.
So this database management software is very good at doing these tasks, both the CRUD operations as
well as the security management, and making sure that your data and the people that are interacting
with your data do the right things.
That is very, very, very key to a database management software.
And that is what makes it so powerful because it has a sole responsibility to maintain your database,
maintain your data.
So who is making database software?
Well, Microsoft has SQL Server.
IBM has a couple of solutions.
We all know Maisky well fairly well.
There is Oracle out there.
And some of you may have heard of PostgreSQL, which is an open source variation of a database management
software.
But these are the companies that basically the biggest companies that make database software and they
all make it slightly different from each other.
You see, each and every one of these companies makes a database software that is, in essence going
to maybe follow the relational model or maybe follow some other model of storing data.
But they also have different features that they're all trying to compete with each other.
So when we talk about MySQL versus what Microsoft brings out, which is ask you all server, they're
both using well, for us to talk to it, but they may have slightly different features to kind of up
you.
Hey, we do this slightly better here.
We do transaction management a bit better.
Hey, we do security a bit better or we have the best this or that.
They, in essence, compete with each other on features.
But at the end of the day, there is a core to them.
Well, and a certain model of storing data.
So, again, what can it do?
Well, we talked about the database management software managing the database and all of these players
competing with each other in order to allow you all to talk to the software.
Right.
They all have slightly different variations of skill.
They could add some special little things in there.
But what we are going to focus on is the core of a school.
We want to give you the toolset and the core of the language to be able to go to any of these vendors
and be functional.
Sure.
In each and every one of these, you may need to learn some of the tips and tricks that go with the
software because each of these softwares are different.
But the baseline of a school is abstracted away from this software.
This software is supposed to understand the school and school is supposed to talk to the software.
So even if the software is a bit different between these, they all do the same thing.
At the end of the day, they do the CRUD operations, the security, the management, and they may all
do it slightly differently.
But we are going to give you the foundation to be able to interact with any of these.
And that is what is so powerful and we're going to do that through school.
So if I were to take a database management system and I work to put it in a simple analogy, because
analogies are so powerful, let's say that your database management software was a chef and that school
was the customer and that the database was a type of cooking.
Well, if the database management software is a chef, we all know that chefs do things differently.
You can go to three restaurants, you can order the exact same dish, the exact same pizza, margherita,
spaghetti Bolognese, a steak.
And each and every one of these chefs may do it slightly differently.
So each chef has their own, quote unquote, database of cooking, and they may all store the data in
their head slightly differently.
They'll do steps differently.
They'll do this differently, that differently.
But at the end, when you ask them to make you a pizza, you are going to get a pizza.
I hope that makes a bit of sense.
And if we were to stretch that analogy a bit further and you asked the chef for a recipe, you ask the
chef, OK, how are you going to do this?
If we looked into that, every chef is going to do their recipe a bit differently.
They're going to write down steps differently.
Each of them thinks differently.
And the same is true for a database management software.
Each and every one of these interacts differently with the database, interact differently with how
they're going to store the data, what hard drives they're going to use, where they're going to put
certain files and how they're going to take your query, make me a pizza and how they're going to process
that to give you the pizza.
That really simplifies the way that we have to look at this, because a database management software
is basically the one interacting with both ends.
If we took this and we put it at a 10000 foot view.
A user is interacting with Eskil and is firing some kind of query and the database management system
is interacting with a certain database, it can store multiple databases.
You can have databases for multiple, multiple reasons.
You can have a school database.
You can have a recipe database.
And the database management system is just storing these.
And then at the hardware level, some hard drive or multiple hard drives or multiple systems are storing
the data for you.
And the database management system is taking your query and figuring out, OK, I need to talk to this
database and I need to go to this hard drive to get the data.
And this is how I need to break it down.
That's basically how it looks from a high level view.
Now, on the Internet, you may see our DBMS, so DBMS stands for database management software and database
management software is the general term for a software that is going to manage your databases.
But then the R portion, we've already spoken a little bit about the relational model and what the relational
model is in a very, very brief way.
We'll dive deeper into that as we go along.
But when you see RDBMS, you're looking at a database management software that's specializing in relational
databases.
So it's focusing on one single model.
And this one single model was developed by a developer at IBM in the early 80s and then taken by two
of his colleagues who invented the original version of school, as well as the very first database management
software.
They took his ideas and basically built the very first version of school in the very first version of
a database management software.
But because they were following the relational model and because we were already spoken about the database
management software being your referee, being your security, implementing the specific rules that
you need to follow.
Edgar Chod, the person who came up with the relational model, as well as the database management system,
wrote 13 rules that needed to be followed in order for a database management software to be considered
a relational database management software.
He coined the 13 rules of.
Now, we're not going to go into the specifics of them because they're very much at a high level understanding.
They're basically rules that need to be followed to build a database management software.
They are the rules that the database management software is going to enforce on you when you get an
error, when you're trying to do something that doesn't follow these rules.
That's what the database management software is doing.
It's following these rules in order to give you some constraints and give you a way to save in a relational
way.
And when we see a relational way, we're talking about the relational model.
We're talking about storing things in tables and columns and rows and enforcing that these rules are
followed.
The database management software is going to enforce them.
So now that we know so much about what a database model is and how a database management system is going
to be your connecting piece, your referee, your middleman in terms of getting data into the system
and pulling data out and enforcing all of these rules, let's take a closer look at this relational
model and how we are going to store data so that we can form a full picture of, OK, this is a database.
This is my database management software, and this is the model I'm going to follow.
This is how I'm going to store my data.
And once we have that, once we have that full picture, we will understand how to use ask you well
to interact with software like Oracle, like PostgreSQL, like MySQL to store and retrieve data.
Now, that being said, there are multiple models out there you can follow.
But each database management software worth its salt will focus on one single model.
You may have heard of terms like NQ Well and other variations of that hierarchical databases and so
forth.
Don't focus on any of those.
We will dive into those individually to explain how they differ from relational models down the line.
But right now we really want to slim down and focus solely on the relational model so that we can really
get a solid foundation on a single model, a single way of storing data and using Ezekial with that
model.
And once we have that solid foundation with one model, when you want to expand to different models,
it'll be easier than you think.