CodeGym /Kurslar /SQL SELF /students cədvəlinin yaradılması və onun

students cədvəlinin yaradılması və onun courses cədvəli ilə əlaqəsi

SQL SELF
Səviyyə , Dərs
Mövcuddur

Gəlin bir az vaxt ayıraq və artıq öyrəndiklərimizi bir daha nəzərdən keçirək. Addım-addım hər şeyi izah edəcəyik. Qarşıda çox şey olacaq və hamısı sizin artıq öyrəndiyiniz materiala əsaslanacaq. Yaxşı olardı ki, hər komandada nə baş verdiyini tam başa düşəsiniz.

Gəlin tələbələr və kurslarla bağlı nümunəmizi bir daha nəzərdən keçirək. Ən başdan. Cədvəllərin yaradılmasından tutmuş, hər mərhələdə nə baş verdiyinə qədər. Hazırsınız?

İndi students cədvəlini yaradacağıq, burada tələbələr haqqında məlumat saxlanacaq və onu courses cədvəlinə xarici açar vasitəsilə bağlayacağıq. Bu prosesdə görəcəyik ki, xarici açarlar entity-lər arasında əlaqələri modelləşdirmək üçün necə istifadə olunur.

students cədvəlinin yaradılması

students cədvəli tələbələr haqqında məlumat saxlayacaq: onların unikal identifikatoru, adı və doğum tarixi. Biz onu CREATE TABLE komandası ilə yaradacağıq.

CREATE TABLE students (
    student_id SERIAL PRIMARY KEY, -- Hər qeyd üçün unikal açar
    name TEXT NOT NULL,            -- Tələbənin adı (mütləq sahə)
    birth_date DATE                -- Tələbənin doğum tarixi
);

Burada nə baş verir?

  1. student_id SERIAL PRIMARY KEY: Bu, hər tələbə üçün unikal identifikatordur. SERIAL tipi avtomatik artan sahə yaradır, PRIMARY KEY isə identifikatorun hər sətr üçün unikal olmasını təmin edir.
  2. name TEXT NOT NULL: Tələbənin adı üçün sahə. NOT NULL göstərmişik ki, heç bir qeyd ad olmadan əlavə oluna bilməsin.
  3. birth_date DATE: Doğum tarixini saxlamaq üçün sahə. Burada DATE data tipi tarixlərlə işləməyə kömək edəcək.

Əgər cədvəl insan olsaydı, student_id onun pasportu, name - açıq-aşkar adı, birth_date isə bəzən gizlətmək istədiyimiz, amma verilənlər bazası üçün vacib olan məlumat olardı.

courses cədvəlinin yaradılması

İndi kurslar haqqında məlumat saxlayacaq cədvəl yaradacağıq. Burada kursun identifikatoru, adı və təsviri olacaq.

CREATE TABLE courses (
    course_id SERIAL PRIMARY KEY,  -- Kurs üçün unikal identifikator
    title TEXT NOT NULL,           -- Kursun adı (mütləq sahə)
    description TEXT               -- Kursun təsviri
);

Burada nə baş verir?

  1. course_id SERIAL PRIMARY KEY: Eyni qaydada, bu avtomatik artan sahədir və hər kurs üçün unikal identifikator yaradır.
  2. title TEXT NOT NULL: Kursun adı üçün sahə. NOT NULL göstərmişik, çünki hər kursun adı olmalıdır - bu, məntiqlidir.
  3. description TEXT: Kursun qısa təsviri üçün sahə. Bu əlavə sahədir və boş qala bilər (NOT NULL məhdudiyyəti yoxdur).

Adı olmayan kurs, üz qabığı olmayan kitab kimidir. Amma verilənlər bazası buna imkan verməyəcək!

students cədvəlinin courses cədvəli ilə əlaqələndirilməsi

Təsəvvür edək ki, hər tələbə yalnız bir kursa yazıla bilər. Bunun üçün courses cədvəlinə xarici açar əlavə edəcəyik, hansı ki, students cədvəlindəki tələbə identifikatoruna istinad edəcək.

CREATE TABLE courses (
    course_id SERIAL PRIMARY KEY,  -- Kurs üçün unikal identifikator
    title TEXT NOT NULL,           -- Kursun adı (mütləq sahə)
    description TEXT,              -- Kursun təsviri
    student_id INT REFERENCES students(student_id) -- students cədvəli ilə əlaqələndirən xarici açar
);

student_id INT REFERENCES students(student_id) nə edir?

  1. student_id sahəsini yaradırıq, hansı ki, students cədvəlindəki student_id unikal identifikatoruna istinad edəcək.
  2. Cədvəllər arasındakı əlaqə REFERENCES açar sözü ilə təmin olunur.
  3. Bu o deməkdir ki, courses cədvəlinə hər dəfə məlumat əlavə edəndə student_id dəyəri students cədvəlində mövcud olmalıdır. Məsələn, mövcud olmayan student_id ilə kursa tələbə əlavə etməyə çalışsanız, səhv alacaqsınız.

Cədvəllərə məlumat əlavə edirik

Cədvəllər yaradıldıqdan sonra gəlin bir az tələbə və kurs əlavə edək. Axı boş auditoriyada oturmaq darıxdırıcıdır, düzdür?

Tələbələri əlavə edirik

INSERT INTO students (name, birth_date) VALUES
('Alex Lin', '2000-05-10'),
('Maria Chi', '1998-02-15'),
('Otto Song', '2001-09-25');

Kursları əlavə edirik

INSERT INTO courses (title, description, student_id) VALUES
('SQL əsasları', 'SQL-in əsas sintaksisinin öyrənilməsi', 1),
('Relyasion verilənlər bazaları', 'Relyasion modellərin başa düşülməsi', 2),
('PostgreSQL yeni başlayanlar üçün', 'PostgreSQL-in quraşdırılması və sazlanması', 3);

Hər kurs üçün student_id göstərdik və onu students cədvəlindəki tələbə identifikatoru ilə əlaqələndirdik.

Cədvəllər arasındakı əlaqəni yoxlayırıq

İndi gəlin əmin olaq ki, cədvəllərimiz həqiqətən əlaqəlidir. Bunun üçün kurslar və tələbələrin adlarını birlikdə göstərən sorğu yaradacağıq.

SELECT
    courses.title AS course_title,
    courses.description AS course_description,
    students.name AS student_name
FROM 
    courses
JOIN 
    students ON courses.student_id = students.student_id;

Nümunə nəticə: Sorğunun nəticəsi:

course_title course_description student_name
SQL əsasları SQL-in əsas sintaksisinin öyrənilməsi Alex Lin
Relyasion verilənlər bazaları Relyasion modellərin başa düşülməsi Maria Chi
PostgreSQL yeni başlayanlar üçün PostgreSQL-in quraşdırılması və sazlanması Otto Song

Kursları tələbələrlə xarici açar vasitəsilə əlaqələndirdik — və indi bir sorğu ilə əlaqəli məlumatları əldə edə bilirik. Relyasion model belə işləyir!

Xülasə

Ümid edirəm ki, indi izah etdiyimiz hər şey sizə aydın və başadüşülən oldu. Çünki tezliklə daha irəli gedəcəyik və istərdim ki, biliklərinizə tam əmin olasınız.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION