Articles

Oracle 12c

voit käyttää CREATE TABLE-lauseketta pakottaaksesi useita erilaisia rajoituksia taulukkoon: ehdokasavaimet, ensisijaiset avaimet, ulkomaiset avaimet ja tarkista ehdot. RAJOITUSLAUSEKE voi rajoittaa taulukon yhden sarakkeen tai sarakeryhmän. Näiden rajoitusten tarkoituksena on saada Oracle tekemään suurin osa työstä tietokannan eheyden ylläpitämiseksi. Mitä enemmän rajoituksia taulukkomääritelmään lisää, sitä vähemmän työtä sovellusten kanssa on tehtävä tietojen ylläpitämiseksi. Toisaalta mitä enemmän taulukossa on rajoitteita, sitä kauemmin tietojen päivittäminen kestää.

voit määrittää rajoitteet kahdella tavalla: osana sarakemääritelmää (tunnetaan sarakerajoituksena) tai Luo taulu-lausekkeen lopussa (tunnetaan taulukkorajoituksena). Lausekkeet, jotka rajoittavat useita sarakkeita, ovat taulukon rajoituksia.

Ehdokasavain

ehdokasavain on yhden tai useamman sarakkeen yhdistelmä, jonka arvot yksilöivät taulukon jokaisen rivin. Seuraava listaus osoittaa ainutlaatuisen rajoituksen luomisen ONGELMATAULUKOLLE:

tämän taulukon avain on kaupungin ja SAMPLE_DATEN yhdistelmä. Huomaa, että molemmat sarakkeet ilmoitetaan myös, että ne eivät ole nollia. Tämä ominaisuus edellyttää, että määrität arvot tietyille sarakkeille, jotta rivejä voidaan lisätä. Lämpötila-ja sademäärätiedoista ei selvästikään ole hyötyä tietämättä, missä tai milloin ne on kerätty. Tämä tekniikka on yleinen sarakkeille, jotka ovat taulukon ensisijainen avain, mutta se on myös hyödyllinen, jos tietyt sarakkeet ovat kriittisiä, jotta rivin tiedot ovat merkityksellisiä. Jos NOT NULL-arvoa ei ole määritetty, sarakkeella voi olla NULL-arvot.

kun luodaan uniikki rajoite, Oracle luo uniikin indeksin valvomaan arvojen ainutlaatuisuutta. Ensisijaisen avaimen rajoituksen sisällä vähintään yksi ensisijaisen avaimen sarakkeista kullakin rivillä ei saa olla nolla.

ensisijainen avain

taulukon ensisijainen avain on yksi ehdokasavaimista, jolle annetaan joitakin erityispiirteitä. Sinulla voi olla vain yksi ensisijainen avain, eikä ensisijainen avain-sarake voi sisältää Nulleja.

seuraavalla Luo taulu-lauseella on sama vaikutus kuin edellisellä, paitsi että sinulla voi olla useita uniikkeja rajoitteita, mutta vain yksi ensisijainen AVAINRAJOITE:

yhden sarakkeen ensisijaisille tai ehdokasavaimille voit määritellä avaimen sarakerajoituksella taulukkorajoituksen sijaan:

tässä tapauksessa author_name-sarake on ensisijainen avain, ja Oracle luo nimen ensisijaiselle avaimen rajoitukselle. Tätä ei suositella, jos haluat vahvistaa yhteisen nimeämisstandardin avaimille, kuten myöhemmin ” Nimeämisrajoitukset.”

nimeävät Indeksitaulukot

yksilölliset ja ensisijaiset AVAINRAJOITUKSET luovat indeksejä. Ellet kerro Oraclelle toisin, indeksit on sijoitettu oletustaulukoihisi. Jos haluat määrittää eri taulukkotason, käytä Luo taulu-komennon INDEKSITAULUKKOTAAJUUSLAUSEKETTA, kuten seuraavasta listauksesta ilmenee:

users-taulukkotasoon sijoitetaan AUTHOR_PK-ensisijaisen avaimen rajoitukseen liittyvä indeksi.

NOTE

useimmissa oletusasennuksissa luodaan käyttäjien taulukkotie ja se on oletustaulukoti.

ulkomainen avain

ulkomainen avain on sarakkeiden yhdistelmä, jonka arvot perustuvat toisen taulukon ensisijaisiin avainarvoihin. Vieraan avaimen rajoite, joka tunnetaan myös viitteellisenä eheysrajoituksena, määrittää, että vieraan avaimen arvot vastaavat toisen taulukon ensisijaisen avaimen todellisia arvoja. Esimerkiksi KIRJAHYLLYTAULUKOSSA category_name-sarake viittaa KATEGORIATAULUKON CATEGORY_NAME-sarakkeen arvoihin:

voit viitata ensisijaiseen tai yksilölliseen avaimeen, vaikka samassa taulukossa. Etätietokannan taulukkoon ei kuitenkaan voi viitata VIITTAUSLAUSEKKEESSA. Voit käyttää taulukkolomaketta (jota käytetään aikaisemmin ensisijaisen avaimen luomiseen ONGELMATAULUKOSSA) sarakelomakkeen sijasta määritettäessä ulkomaisia avaimia, joissa on useita sarakkeita.

joskus haluat ehkä poistaa nämä riippuvat rivit, kun poistat rivin, josta ne riippuvat. Jos kirjahylly ja luokka poistetaan kategoriasta CATEGORY_NAME, vastaavat kirjahylly CATEGORY_NAME-sarakearvot voidaan tehdä nolliksi. Toisessa tapauksessa haluat ehkä poistaa koko rivin. VIITTAUSLAUSEKKEESEEN lisätty DELETE CASCADE-lauseke käskee Oraclea poistamaan riippuvan rivin, kun poistat vastaavan rivin ylätaulukosta. Tämä toiminto ylläpitää automaattisesti viittauksen eheyttä.

TARKISTUSRAJOITUKSEN

monissa sarakkeissa on oltava arvot, jotka ovat tietyllä alueella tai jotka täyttävät tietyt ehdot. TARKISTUSRAJOITUKSELLA voit määrittää lausekkeen, jonka on aina oltava totta taulukon jokaiselle riville. Esimerkiksi LUOKITUSTAULUKKO tallentaa kelvolliset luokitukset; rajoittaaksesi käytettävissä olevat arvot sarakemääritelmän mukaisten rajojen ulkopuolelle, voit käyttää TARKISTUSRAJOITUSTA, kuten seuraavasta listauksesta käy ilmi:

saraketason TARKISTUSRAJOITUSTA ei voi viitata muiden rivien arvoihin; se ei voi käyttää pseudo-sarakkeita, kuten SYSDATE, USER, CURRVAL, NEXTVAL, LEVEL ja ROWNUM. Voit käyttää taulukon rajoituslomaketta (toisin kuin sarakkeen rajoituslomaketta) viitataksesi useisiin sarakkeisiin TARKISTUSRAJOITUKSESSA.

Nimeämisrajoitukset

voit nimetä rajoitteesi. Jos käytät tehokasta nimeämisjärjestelmää rajoitusnimillesi, pystyt paremmin tunnistamaan ja hallitsemaan rajoituksia. Rajoituksen nimestä olisi käytävä ilmi taulukko, johon se vaikuttaa, ja rajoituksen tyyppi, jota se edustaa. Esimerkiksi ONGELMAPÖYDÄN ensisijainen avain voisi olla nimeltään TROUBLE_PK.

voit määrittää rajoituksen nimen, kun luot rajoituksen. Jos rajoitukselle ei anneta nimeä, Oracle luo nimen. Suurin osa Oraclen generoimista rajoitenimistä on muotoa SYS_C#### # (esimerkiksi SYS_C000145). Koska järjestelmän luoma rajoite-nimi ei kerro mitään taulukosta tai rajoituksesta, sinun pitäisi nimetä rajoituksesi.

seuraavassa esimerkissä ensisijainen näppäinrajoite luodaan ja nimetään osana ONGELMATAULUKON Luo taulu-komentoa (huomaa RAJOITUSLAUSE):

Luo taulu-komennon RAJOITUSLAUSEKE nimeää rajoituksen (tässä tapauksessa TROUBLE_PK). Voit käyttää tätä rajoituksen nimeä myöhemmin, kun otat rajoitukset käyttöön tai poistat ne käytöstä.