![]() |
Setting-Up a Relational Database in MySQL
Relational Database Design is one of the most powerful ways to ensure data integrity and a great way to kick-off any project. Very often the first thing developers do when starting a new project, or stub-project, is to design the database. This way the structure of the application is already in place and we just have to fill in the pieces with some server-side code. I’ve found when adding relational constraints to your database design you add in a very powerful error reporting tool that will let you know during the development process that you have allowed something to happen that shouldn’t have. In this article, I go through, step by step, showing how to set up a simple relational database and discuss the benefits that are enjoyed.
Let’s take a step back and describe what a relational database looks like. In any normal database design there are fields in one table that reference another table. For example, a books table might have a field labeled author_id which is meant to come from a table named authors. Creating hard-coded relations solidifies these associations and actually returns a MySQL error if violated. As I hinted in the opening I have found this to be invaluable during the development and testing process as MySQL will immediately let me know that I have made a glaring error that otherwise may not have been noticed until after the service has launched. At that point the data could be irreparably corrupt and forced to start from scratch. So let’s get right to it. For the purposes of this article, I’m going to pretend I’m creating a simple Books and Authors website with a simple 2-table setup. The first step is to create our tables. Code: SQL
Code: SQL
http://www.go4expert.com/images/arti...relation-1.png Nothing too fancy here. Couple things to notice: 1. Each table MUST be using the InnoDB storage engine. InnoDB is currently the only main-stream storage engine offered by MySQL to support relational design. More on this in my article: MyISAM vs InnoDB 2. The `author_id` field in the `books` table MUST be indexed and the same datatype as the `id` field in `authors`. The next step is to set up the relations. Open the `authors` table and take a look at the view. Under the table there should be a link titled ‘Relation View’ - Click it. http://www.go4expert.com/images/arti...relation-2.png phpMyAdmin has a great gui for setting up relations and actions. If the `author_id` row below doesn’t look like mine, make sure you have it indexed. http://www.go4expert.com/images/arti...relation-3.png Here, I’ve setup a link on the `books` table and the `author_id` field. This will enforce the fact that any value inserted in this field MUST be present in the `authors.id` table as well. But what about these other settings? ON DELETE:
Cannot add or update a child row: a foreign key constraint fails (`library/books`, CONSTRAINT `books_ibfk_1` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`) ON DELETE CASCADE ON UPDATE CASCADE) I hope it will help :happy: |
Re: Setting-Up a Relational Database in MySQL
Nice article.
|
Re: Setting-Up a Relational Database in MySQL
Good to know that you liked it. Did it helped ?
|
Re: Setting-Up a Relational Database in MySQL
Simple and nice tutorial, but this is only helpful to those who use phpMyAdmin.
|
Re: Setting-Up a Relational Database in MySQL
i like your work.
i just started to learn mysql using the phpmyadmin and i'm a little confussed. can you help me with materials on phpmyadmin for relatioal database thanks |
Re: Setting-Up a Relational Database in MySQL
Hello house please i need help on how to setup a Web server. i have tried the help menu on the operating system and the front page.........
thanks |
Re: Setting-Up a Relational Database in MySQL
Hi,
I would recommend you go by mysql tutorials first. Then create simple databases and perform operations like insert, update, delete, rename, drop, alter etc. from phpmyadmin and sql queries both. You can find various mysql tutorials on Google. |
Re: Setting-Up a Relational Database in MySQL
The same article is also found here - ht*p://www.mikebernat.com/blog/Setting-Up_a_Relational_Database_in_MySQL
|
| All times are GMT +5.5. The time now is 19:26. |