• FOREIGN KEY cheklanishi sintaksisi: FOREIGN KEY REFERENCES [ ]
  • PRIMARY KEY
  • FOREIGN KEY .  SQL ilovali yaxlitlikni  FOREIGN KEY




    Download 2,08 Mb.
    Pdf ko'rish
    bet12/19
    Sana17.05.2024
    Hajmi2,08 Mb.
    #240356
    1   ...   8   9   10   11   12   13   14   15   ...   19
    Bog'liq
    МББваДТ (1 курс)tayyor

    FOREIGN KEY

    SQL ilovali yaxlitlikni 
    FOREIGN KEY
    yordamida ta‘minlaydi. 
    Tashqi kalit vazifasi ajdod kalitda koʻrsatilmagan qiymatlarni tashqi kalit 


    37 
    maydonlariga kiritmaslikdir. 
    FOREIGN KEY
    cheklanishi sintaksisi: 
    FOREIGN KEY  REFERENCES 

     [

    Birinchi roʻyxat komanda tomonidan oʻzgartiriluvchi ustunlar 
    roʻyxatidir. 
    Pktable
    - bu ajdod kalitli jadval. Ikkinchi ustunlar roʻyxati bu 
    ajdod kalitni tashkil qiluvchi ustunlardir. 
    Misol uchun Xodimlar jadvaliga ilova qiluvchi tashqi kalit sifatida 
    e‘lon qilingan 
    MNum
    maydoniga ega boʻlgan Mijozlar jadvalini 
    yaratamiz: 
    CREATE TABLE Clients 
    (id integer NOT NULL PRIMARY KEY, 
    name varchar (45), 
    address varchar(255), 
    phone varchar(15), 
    MNum 
    integer

    status tinyint(1) ) DEFAULT "NULL",
    is_delete tinyint(1), 
    FOREIGN KEY (MNum) REFERENCES Employee (MNum)) 
    Tashqi kalitni ustunlar cheklanishi sifatida berish mumkin. Buning 
    uchun 
    FOREIGN 
    KEY
    koʻrinishi 
    — koʻrsatkichli cheklanish 
    (
    REFERENCES
    ) qoʻllanadi: 
    FOREIGN
    KEY
    cheklanishidan jadval yoki ustun cheklanishi sifatida 
    foydalanganda, agar ular 
    PRIMARY
    KEY
    cheklanishiga ega boʻlsa, ajdod 
    kalit ustunlarini koʻrsatmaslik mumkin. 
    SQL-da jadvallar va ularning ustunlarini belgilashda biz ma‘lum 
    cheklovlar qoʻyadigan bir qator atributlardan foydalanishimiz mumkin. 
    Keling, ushbu atributlarni koʻrib chiqaylik. 
    PRIMARY KEY ifodasi ustunni asosiy kalit qilish uchun ishlatilishi 
    mumkin. 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(30),
    LastName CHARACTER
    VARYING(30),
    Email CHARACTER
    VARYING(30),
    Age INTEGER
    )


    38 
    Birlamchi kalit jadvaldagi qatorni noyob tarzda aniqlaydi. Birlamchi 
    kalit SERIAL ustunlar boʻlishi shart emas; ular boshqa har qanday turni 
    ifodalashi mumkin. 
    Asosiy kalitni jadval darajasida oʻrnatish: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL,
    FirstName CHARACTER
    VARYING(30),
    LastName CHARACTER
    VARYING(30),
    Email CHARACTER
    VARYING(30),
    Age INTEGER,
    PRIMARY
    KEY(Id)
    );
    Asosiy kalit murakkab kalit boʻlishi mumkin. Jadvaldagi satrni yagona 
    aniqlash uchun bir vaqtning oʻzida ikkita ustunga ega boʻlsak, bunday kalit 
    talab qilinishi mumkin. Masalan: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    CREATE
    TABLE
    OrderLines
    (
    OrderId INTEGER,
    ProductId INTEGER,
    Quantity INTEGER,
    Price MONEY,
    PRIMARY
    KEY(OrderId, ProductId)
    );
    Bu yerda OrderId va ProductId maydonlari birgalikda birlamchi asosiy 
    kalit vazifasini bajaradi. Ya'ni, OrderLines jadvalida bu ikkala maydon bir 
    vaqtning oʻzida bir xil qiymatlarga ega boʻlgan ikkita qator boʻlishi 
    mumkin emas. 
    UNIQUE
    Agar ustun faqat noyob qiymatlarga ega boʻlishini istasak, u uchun 
    UNIQUE atributini aniqlash mumkin. 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(20),
    LastName CHARACTER
    VARYING(20),
    Email CHARACTER
    VARYING(30) UNIQUE,


    39 
    7. 
    8. 
    9. 
    Phone CHARACTER
    VARYING(30) UNIQUE,
    Age INTEGER
    );
    Bunday holda, elektron pochta manzili va telefon raqamini 
    koʻrsatadigan ustunlar noyob qiymatlarga ega boʻladi. Va biz ushbu 
    ustunlar uchun bir xil qiymatlar bilan jadvalga ikkita qator qoʻsha 
    olmaymiz. 
    Ushbu atributni jadval darajasida ham aniqlashimiz mumkin: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(20),
    LastName CHARACTER
    VARYING(20),
    Email CHARACTER
    VARYING(30),
    Phone CHARACTER
    VARYING(30),
    Age INTEGER,
    UNIQUE(Email, Phone)
    );
    Yoki shunday: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    11. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(20),
    LastName CHARACTER
    VARYING(20),
    Email CHARACTER
    VARYING(30),
    Phone CHARACTER
    VARYING(30),
    Age INTEGER,
    UNIQUE(Email), 
    UNIQUE(Phone)
    );
    NULL va NOT NULL 
    Ustun NULL boʻlishi mumkinligini koʻrsatish uchun ustunni 
    belgilashda ustun atributini NULL yoki NOT NULL ga oʻrnatishingiz 
    mumkin. Agar bu atribut aniq ishlatilmasa, ustun sukut boʻyicha null 
    boʻladi. Ustun birlamchi kalit sifatida ishlayotganida istisno - bu holda, 
    sukut boʻyicha ustun NULL EMAS. 


    40 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(20) NOT
    NULL,
    LastName CHARACTER
    VARYING(20) NOT
    NULL,
    Age INTEGER
    );
    DEFAULT
    DEFAULT atributi ustun uchun standart qiymatni belgilaydi. Agar 
    ma‘lumotlarni qoʻshganda ustun uchun qiymat koʻrsatilmagan boʻlsa, u 
    uchun standart qiymat ishlatiladi. 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(20),
    LastName CHARACTER
    VARYING(20),
    Age INTEGER
    DEFAULT
    18
    );
    Bu yerda Yosh ustunida standart qiymat 18 ga teng. 
    CHECK 
    CHECK kalit soʻzi ustunda saqlanishi mumkin boʻlgan qiymatlar 
    oraligʻida chegarani belgilaydi. Buning uchun CHECK soʻzidan keyin 
    ustun yoki bir nechta ustunlar mos kelishi sharti qavs ichida koʻrsatiladi. 
    Masalan, mijozlarning yoshi 0 dan kam yoki 100 dan oshmasligi kerak: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    11. 
    12. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    FirstName CHARACTER
    VARYING(20),
    LastName CHARACTER
    VARYING(20),
    Age INTEGER
    DEFAULT
    18 CHECK(Age >0 AND
    Age < 
    100),
    Email CHARACTER
    VARYING(30) UNIQUE
    CHECK(Email 
    !=''),
    Phone CHARACTER
    VARYING(20) UNIQUE
    CHECK(Phone 
    !='')
    );


    41 
    Shuningdek, u E-pochta va Telefon ustunlari qiymat sifatida boʻsh 
    qatorga ega boʻlmasligini belgilaydi (boʻsh satr NULLga teng emas). 
    AND kalit soʻzi shartlarni birlashtirish uchun ishlatiladi. Shartlar katta 
    (>), kichik (<), teng emas (! =) taqqoslash amallari shaklida koʻrsatilishi 
    mumkin. 
    Bundan tashqari, CHECK-dan foydalanib, siz butun jadval uchun 
    cheklov yaratishingiz mumkin: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    11. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL PRIMARY
    KEY,
    Age INTEGER
    DEFAULT
    18,
    FirstName CHARACTER
    VARYING(20),
    LastName CHARACTER
    VARYING(20),
    Email CHARACTER
    VARYING(30) UNIQUE,
    Phone CHARACTER
    VARYING(20) UNIQUE,
    CHECK((Age >0 AND
    Age<100) AND
    (Email !='') AND
    (Phone !=''))
    );
    CONSTRAINT bayonoti. Cheklovlar nomini oʻrnatish. 
    CONSTRAINT kalit soʻzidan cheklovlar nomini belgilash uchun 
    foydalanish mumkin. PRIMARY KEY, UNIQUE, CHECK cheklovlar 
    sifatida ishlatilishi mumkin. 
    Cheklov nomlari ustunlar darajasida belgilanishi mumkin. Ular 
    CONSTRAINTdan keyin atributlardan oldin belgilanadi: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    11. 
    12. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL CONSTRAINT
    customer_Id PRIMARY
    KEY,
    Age 
    INTEGER
    CONSTRAINT
    customers_age_check 
    CHECK(Age >0 AND
    Age < 100),
    FirstName CHARACTER
    VARYING(20) NOT
    NULL,
    LastName CHARACTER
    VARYING(20) NOT
    NULL,
    Email 
    CHARACTER
    VARYING(30) 
    CONSTRAINT
    customers_email_key UNIQUE,
    Phone 
    CHARACTER
    VARYING(20) 
    CONSTRAINT
    customers_phone_key UNIQUE
    );
    Prinsipial jihatdan cheklovlarning nomlarini koʻrsatish shart emas, 
    tegishli atributlarni oʻrnatganingizda, SQL Server avtomatik ravishda 


    42 
    ularning nomlarini aniqlaydi. Ammo, cheklovning nomini bilib, biz unga 
    murojaat qilishimiz mumkin, masalan, uni olib tashlash uchun. 
    Shuningdek, siz cheklovlarning barcha nomlarini jadval atributlari 
    orqali oʻrnatishingiz mumkin: 
    1. 
    2. 
    3. 
    4. 
    5. 
    6. 
    7. 
    8. 
    9. 
    10. 
    11. 
    12. 
    13. 
    14. 
    CREATE
    TABLE
    Customers
    (
    Id SERIAL,
    Age INTEGER,
    FirstName CHARACTER
    VARYING(20) NOT
    NULL,
    LastName CHARACTER
    VARYING(20) NOT
    NULL,
    Email CHARACTER
    VARYING(30),
    Phone CHARACTER
    VARYING(20),
    CONSTRAINT
    customer_Id PRIMARY
    KEY(Id),
    CONSTRAINT
    customers_age_check CHECK(Age >0 AND
    Age < 100),
    CONSTRAINT
    customers_email_key UNIQUE(Email),
    CONSTRAINT
    customers_phone_key UNIQUE(Phone)
    );
    CONSTRAINT iborasi cheklovlar yaratish uchun ishlatiladimi yoki 
    yoʻqligidan qat'i nazar (bu holda, cheklovlarni oʻrnatishda PostgreSQL 
    ularni oʻzi nomlaydi), biz pgAdmin-dagi barcha cheklovlarni pastki 
    tugundagi ma‘lumotlar bazasi tugunida koʻrishimiz mumkin: 
    3.6-rasm. CONSTRAINT iborasi cheklovlar yaratish oynasi. 


    43 

    Download 2,08 Mb.
    1   ...   8   9   10   11   12   13   14   15   ...   19




    Download 2,08 Mb.
    Pdf ko'rish

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    FOREIGN KEY .  SQL ilovali yaxlitlikni  FOREIGN KEY

    Download 2,08 Mb.
    Pdf ko'rish