What Are Primary Keys And Foreign Keys In SQL Database?

what are primary keys and foreign keys in sql database.

What Are Primary Keys And Foreign Keys In SQL Database?


Primary Key And Foreign Key


For programmers, the terms primary key and foreign key may be familiar. This term usually appears in SQL or query languages. Let's learn what foreign and primary keys are and how to use them in SQL.


Also Read: Understanding Databases With Functions And Examples


SQL performs mathematical operations on data in the database management system. This database contains different tables that each store data on a specific entity. If you have a car rental database, the entity (or table) in that database will be the customer (which will store all the personal data on each customer). This database table contains rows and columns, where each row becomes a hosts record and each column stores attribute-specific data. In a database management system, each record (or row) must be unique.

TABLE OF CONTENTS

1. Primary Key

2. What is a Primary Key

3. Using Primary Key In Database

4. Record With Primary Key Example

5. Foreign Key

6. What are Foreign Keys?

7. Create a Table With Foreign Key Example

8. Adding Record With Foreign Key Example

9. Advance Foreign Key

10. Composite Key

11. Creating a Table With a Composite Foreign Key

12. Foreign Primary Key

13. Difference between Primary Key and Foreign Key

14. Conclusion


Primary Key

Although the stipulation is that each record in the table must be different, this is not always the case. Continuing the example of a car rental database, if the database contains two customers who each have the same name, namely “Johnny Cage”, Johnny Cage is required to return a Mercedes-Benz that he has rented. Creating a primary key will reduce this risk.


What is Primary Key


In the SQL database management system, the primary key is a unique identifier that distinguishes one record from another. Therefore, every record in the SQL database management system must have a primary key. But there are a few rules you should follow when specifying the primary key for a table:

  * Primary key must contain a unique value. If the primary key consists of several columns, the combination of values ​​in these columns must be unique.

  * The primary key column cannot contain NULL values. This means that you must declare the primary key column with the NOT NULL attribute. Otherwise, MySQL will force the primary key column as NOT NULL implicitly.

  * A table has only one primary key


Using Primary Key In Database


To include a primary key in a database management system using SQL, you simply add it as a normal attribute when creating a new table. So the customers table will contain four attributes (or columns):

  * Car Owner ID (which will store the primary key)

  * First name

  * Last name

  * Phone number


Now each customer record entered into the database will have a unique identification number, as well as first name, last name, and phone number. A phone number is not unique enough to be used as a primary key, because even if it is unique to one person at a time, someone can easily change the number, meaning it could belong to someone else.


Record With Primary Key Example


/* create new record in customer table */

INSERT INTO Customer VALUES

('0004',

'Johnny',

'Cage',

'081-999-888-777');

Kode SQL di atas akan menambahkan record baru ke tabel Pelanggan yang sudah ada sebelumnya. Tabel di bawah ini menunjukkan tabel pelanggan baru dengan dua record Johnny Cage.

Record Dengan Contoh Primary Key


Foreign Key


Sekarang kalian memiliki primary key yang secara unik membedakan penyewa mobil dari yang lainnya. Satu-satunya masalah adalah, dalam database, tidak ada hubungan nyata antara setiap Johnny Cage dan mobil yang dia sewa. Oleh karena itu, kemungkinan terjadinya kesalahan masih ada.


Di sinilah foreign key berperan. Menggunakan primary key untuk memecahkan masalah ambiguitas kepemilikan hanya dapat dicapai jika primary key berfungsi ganda sebagai foreign key.


Apa Itu Foreign Key?


Dalam SQL database management system, foreign key adalah pengenal unik atau kombinasi pengenal unik yang menghubungkan dua tabel atau lebih dalam database. Dari empat SQL database management system yang ada, relational database management system adalah yang paling populer.


Saat memutuskan tabel mana dalam database relasional yang harus memiliki foreign key, kalian harus terlebih dahulu mengidentifikasi tabel mana yang merupakan subjek dan objek dalam hubungannya.


Baca Juga: Perbedaan Database Relasional Dan Non Relasional


Kembali ke database rental mobil, untuk menghubungkan setiap pelanggan ke mobil yang benar, kalian harus memahami bahwa pelanggan (subjek) menyewa mobil (objek). Oleh karena itu, foreign key harus ada di tabel mobil. Kode SQL yang menghasilkan tabel dengan foreign key sedikit berbeda dari norma.


Membuat Tabel Dengan Contoh Foreign Key


/* membuat tabel mobil baru di database rental mobil */

CREATE TABLE Mobil

(

NomorLisensi varchar(30) NOT NULL PRIMARY KEY,

JenisMobil varchar(30) NOT NULL,

IDPelanggan varchar(30), FOREIGN KEY (IDPelanggan) REFERENCES Pelanggan(IDPelanggan)

);


Membuat Tabel Dengan Composite Foreign Key


Seperti yang kalian lihat pada kode di atas, foreign key harus diidentifikasi secara eksplisit, bersama dengan referensi ke primary key yang terhubung ke tabel baru. Untuk menambahkan record ke tabel baru, kalian harus memastikan bahwa value di bidang foreign key cocok dengan value di bidang primary key dari tabel asli.


Menambahkan Record Dengan Contoh Foreign Key


/* membuat record baru di tabel mobil */

INSERT INTO Mobil VALUES

('100012',

'Mercedes-Benz',

'0004');


Kode di atas membuat record baru di tabel Mobil baru, menghasilkan hasil sebagai berikut.

Menambahkan Record Dengan Contoh Foreign Key


Dari tabel di atas, kalian dapat mengidentifikasi Johnny Cage yang benar yang menyewa Mercedes-Benz dengan foreign key dalam record.


Advance Foreign Key


Ada dua cara lain untuk menggunakan foreign key dalam database. Jika kalian melihat kembali definisi foreign key di atas, kalian akan menemukan bahwa foreign key dapat menjadi pengenal unik atau kombinasi pengenal unik.


Kembali ke contoh database rental mobil, kalian akan melihat bahwa membuat record baru (dari mobil yang sama) setiap kali pelanggan menyewa mobil itu, mengalahkan tujuan tabel Mobil. Jika mobil akan dijual dan sekali dijual ke satu pelanggan, database yang ada sudah sempurna, tetapi mengingat mobil adalah rental, ada cara yang lebih baik untuk menampilkan data ini.


Composite Key


Composite key memiliki dua atau lebih pengenal unik. Dalam database relasional, akan ada contoh ketika penggunaan foreign key tunggal tidak cukup mewakili hubungan yang ada di dalam database itu. Dalam contoh rental mobil, pendekatan yang paling praktis adalah dengan membuat tabel baru yang menyimpan rincian sewa. Agar informasi dalam tabel rental mobil berguna, ia harus terhubung ke tabel mobil dan pelanggan.


Membuat Tabel Dengan Composite Foreign Key


/* membuat tabel RentalMobil di database rental mobil */

CREATE TABLE RentalMobil

 (

 TanggalSewa DATE NOT NULL,

 NomorLisensi varchar(30) NOT NULL,FOREIGN KEY (NomorLisensi) REFERENCES mobil(NomorLisensi),

 IDPelanggan varchar(30) NOT NULL, FOREIGN KEY (IDPelanggan) REFERENCES pelanggan(IDPelanggan),

 PRIMARY KEY (TanggalSewa, NomorLisensi, IDPelanggan)

 );


Membuat Tabel Dengan Contoh Foreign Key


Kode di atas menggambarkan poin penting. Meskipun tabel dalam database SQL dapat memiliki lebih dari satu foreign key, tabel tersebut hanya dapat memiliki satu primary key. Ini karena hanya ada satu cara unik untuk mengidentifikasi record.


Ketiga atribut dalam tabel harus digabungkan untuk memiliki key yang unik. Seorang pelanggan dapat menyewa lebih dari satu mobil pada hari yang sama (jadi IDPelanggan dan TanggalSewa bukanlah kombinasi yang baik) lebih dari satu pelanggan juga dapat menyewa mobil yang sama pada hari yang sama (jadi NomorLisensi dan TanggalSewa bukanlah kombinasi yang baik) .


Namun, pembuatan composite key yang memberi tahu pelanggan mana, mobil apa, dan pada hari apa membuat key unik yang sangat baik. Key unik ini mewakili composite foreign key dan composite primary key.


Foreign Primary Key


Oh ya, foreign primary key juga ada. Meskipun tidak ada nama resminya, foreign key juga bisa menjadi primary key dalam tabel yang sama. Ini terjadi saat kalian membuat tabel baru yang berisi data khusus tentang entitas yang sudah ada (atau record di tabel lain).


Katakanlah Toni (yang bekerja di perusahaan rental mobil) ada di database perusahaan di bawah tabel karyawan. Setelah beberapa tahun, dia menjadi supervisor dan ditambahkan ke tabel supervisor. Toni masih seorang karyawan dan masih memiliki nomor id yang sama. Jadi id karyawan Toni sekarang ada di tabel supervisor sebagai foreign key yang juga akan menjadi primary key dalam tabel itu (karena tidak masuk akal untuk membuat nomor id baru untuk Toni sekarang karena dia adalah supervisor).


Perbedaan Primary Key Dan Foreign Key


                                                                   Primary Key                                                                                                                      Foreign Key

Batasan primary key adalah kolom atau grup kolom yang secara unik mengidentifikasi setiap baris dalam tabel relational database management system. Foreign key adalah kolom yang membuat hubungan antara dua tabel.

Ini membantu kalian secara unik mengidentifikasi record dalam tabel.                                                                               Ini adalah bidang dalam tabel yang merupakan primary key dari tabel lain.

Primary key tidak pernah menerima nilai null.                                                                                                      Foreign key dapat menerima beberapa nilai null.

Primary key adalah clustered index, dan data dalam tabel DBMS secara fisik diatur dalam urutan clustered index.                                    Foreign key tidak dapat secara otomatis membuat indeks, clustered, atau non-clustered

Kalian dapat memiliki satu primary key dalam sebuah tabel.                                                                                         Kalian dapat memiliki beberapa foreign key dalam satu tabel.

Value primary key tidak dapat dihapus dari tabel induk.                                                                                            Value foreign key dapat dihapus dari tabel anak.

Kalian dapat menentukan primary key secara implisit di tabel sementara.                                                                            Kalian tidak dapat menentukan foreign key di tabel sementara lokal atau global.

Primary key adalah clustered index.                                                                                                                Secara default, ini bukan clustered index.

Tidak ada dua baris yang dapat memiliki value identik untuk primary key.                                                                           Foreign key dapat berisi value duplikat.

Tidak ada batasan dalam memasukkan value ke dalam kolom tabel.                                                                                     Saat memasukkan value apa pun dalam tabelforeign key, pastikan bahwa value tersebut ada di kolom primary key.


Kesimpulan


Jadi apa itu primary key dan foreign key? Primary key adalah aturan-aturan yang berguna agar setiap baris data atau nilai bersifat unik, agar masing-masing baris berbeda satu sama lain. Sedangkan foreign key adalah satu atribute (atau satu set atribute) yang melengkapi satu relationship (hubungan) yang menunjukkan ke induknya.


Dari artikel ini, kalian sudah mengetahui apa itu foreign key dan primary key, cara kerjanya, dan mengapa penting untuk memilikinya dalam database. Kalian juga sudah memahami bentuk dasar primary key dan foreign key dan bahkan lebih kompleks.


Hopefully, this article about What Are Primary Keys And Foreign Keys In SQL Database?, gives you a little insight. Also, read an article about What Are VLANs And How Do They Work? that you may need to know. Thank you.

Previous Post Next Post