Felhasználói eszközök

Eszközök a webhelyen


oktatas:adatbazis-kezeles:megszoritasok

< Adatbázis-kezelés

Megszorítások

A megszorításokról

Korlátozás vagy angolosan constraint.

Az adatbázis-megszorítások célja a helytelen rekordok létrejöttének megakadályozása.

Megszorítások eszközei

  • kulcsok
  • idegen kulcsok, hivatkozási integritás
  • táblák megszorításai
  • attribútumok értékeire vonatkozó megszorítások
  • rekordokra vonatkozó megszorítások
  • több táblára vonatkozó megszorítások

Megszorítások SQL-ben

kulcs

PRIMARY KEY
create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);

Egyediségi kényszer:

UNIQUE
create table dolgozok (
    az int not null primary key auto_increment,
    ig varchar(10) unique,
    nev varchar(50)
);

idegen kulcs

Az idegenkulcsok általános szintaxisa:

[CONSTRAINT [szimbólum]] FOREIGN KEY
    [index_nev] (index_oszlop_nev, ...)
    REFERENCES tábla_név (index_oszlop_név,...)
    [ON DELETE hivatkozás_kapcsoló]
    [ON UPDATE hivatkozás_kapcsoló]

hivatkozás_kapcsoló:
    RESTRICT | CASCADE | SET NULL | NO ACTION

Egyszerűbben:

FOREIGN KEY (<attribútumok>) REFERENCES <tábla>  (<attribútumok>)

Példa:

create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);
 
create table dolgozok(
    az int not null primary key auto_increment,
    nev varchar(50),
    osztalyAz int,
    foreign key (osztalyAz) references osztalyok (az)
);
create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);
 
create table dolgozok(
    az int not null primary key auto_increment,
    nev varchar(50),
    osztalyAz int,
    constraint dolgozok_megkotes
        foreign key (osztalyAz) 
        references osztalyok (az)
);

Hivatkozáskapcsolók:

  • RESTRICT - a szülőtábla nem módosítható
  • CASCADE - a változások a gyermektáblában is végbemennek
  • SET NULL - a gyermeksorok idegenkulcsai NULL értékre állnak
  • NO ACTION - a RESTRICT szinonimája
create table osztalyok(
    az int not null primary key auto_increment,
    nev varchar(50)
);
 
create table dolgozok(
    az int not null primary key auto_increment,
    nev varchar(50),
    osztalyAz int,
    constraint dolgozok_megkotes
        foreign key (osztalyAz) 
        references osztalyok (az)
        on delete cascade
        on update cascade
);

attribútum értékére vonatkozó megszorítások

Nem lehet NULL feltételek

NOT NULL

Bonyolultabb meghatározások:

CHECK ...

Új érték esetén ellenőriz.

Érték tartományra való megszorítások

create table telepuleseink (
    telepules varchar(50) check (telepules in ('Miskolc', 'Szolnok'))
);

Felvenni csak Miskolc és Szolnok települést lehet.

globális megszorítások

Sorra vonatkozó

CHECK ...

Több mező:

create table szamok (
    szam1 int check (szam1 >= 5),
    szam2 int check (szam2 >= 5),
    constraint nagyobb check (szam1>szam2)
);

Egy rekordon belül a szam1-nek nagyobbnak kell lenni, szam2.

oktatas/adatbazis-kezeles/megszoritasok.txt · Utolsó módosítás: 2022/03/01 07:15 szerkesztette: admin