Sva početnička pitanja Sva početnička pitanja bi trebala da se postavljaju u ovom forumu, a ako se pretvori u kvalitetnu diskusiju interesantnu svima - prebacićemo je u odgovarajući forum. Molimo "znalce" da ne omalovažavaju početnike, ako žele da pomognu svi ćemo biti zahvalni, ako ne žele, neka preskoče ovaj forum. |
|
Alati teme | Način prikaza |
|
26. 03. 2008. | #1 | |||
profesionalac
Qualified
|
Baze i vanjski ključevi
Lijep pozdrav!
Ovako, imam nekih početničkih problema s bazama...radi se o PostgreSQL-u. Zadatak je slijedeći: Citat:
Kôd:
CREATE TABLE izdavac (sifra serial PRIMARY KEY,naziv VARCHAR(50) NOT NULL); CREATE TABLE knjiga (sifra serial PRIMARY KEY,ISBN VARCHAR (15),naziv VARCHAR(50) NOT NULL,godina SMALLINT NOT NULL CHECK (godina BETWEEN 1970 AND 2050),izdavac integer REFERENCES izdavac ON DELETE RESTRICT ON UPDATE CASCADE); CREATE TABLE autor (sifra serial PRIMARY KEY,ime VARCHAR(20) NOT NULL,prezime VARCHAR(20) NOT NULL); CREATE TABLE autor_knjige (knjiga integer REFERENCES knjiga,autor integer REFERENCES autor,CONSTRAINT pk1 PRIMARY KEY (knjiga,autor)); CREATE TABLE clan (sifra serial PRIMARY KEY,ime VARCHAR(20) NOT NULL,prezime VARCHAR(20) NOT NULL,adresa VARCHAR(50) NOT NULL); CREATE TABLE posudba (clan integer REFERENCES clan,datum_posudbe DATE,datum_vracanja DATE,knjiga integer REFERENCES knjiga,CONSTRAINT pk2 PRIMARY KEY (clan,knjiga,datum_posudbe)); CREATE UNIQUE INDEX izdavac ON izdavac(naziv); CREATE UNIQUE INDEX autor ON autor(prezime,ime); CREATE UNIQUE INDEX clan ON clan(prezime); CREATE INDEX posudba ON posudba(datum_posudbe,datum_vracanja); Citat:
Dalje, tablice popunjavam ovako: Kôd:
INSERT INTO izdavac VALUES (default,'DRIP'); INSERT INTO izdavac VALUES (default,'Informator'); INSERT INTO izdavac VALUES (default,'Narodne Novine'); INSERT INTO izdavac VALUES (default,'Addison Wesley'); INSERT INTO autor VALUES (default,'Tkalac','Slavko'); INSERT INTO autor VALUES (default,'Čubrilo','Mirko'); INSERT INTO autor VALUES (default,'Crnko','Nenad'); INSERT INTO autor VALUES (default,'Radovan','Mario'); INSERT INTO autor VALUES (default,'Strahonja','Vjeran'); INSERT INTO autor VALUES (default,'Žugaj','Miroslav'); INSERT INTO autor VALUES (default,'Bača','Miroslav'); INSERT INTO autor VALUES (default,'Date','Christopher'); No, sad dolazi dio zadatka koji kaže da treba popuniti podatke o knjigama (šifra, isbn, naziv, godina, izdavac); šifra knjige se uvećava automatski, a vrijednost atributa izdavac mora odgovarati šifri nekog izdavaca jer se radi o vanjskom ključu. E, sad. Tu sam se izgubio, šta je taj vanjski ključ? Pretpostavljam da se pomoću njega radi veza na tablicu izdavac i da se onda prema šifri izdavača u tablicu knjiga vrati ta šifra. No neznam kako to napisati. Ono što sam ja izveo jest: Kôd:
INSERT INTO knjiga VALUES (default,'','Relacijski model podataka','1993','1'); INSERT INTO knjiga VALUES (default,'953-6363-04-6','Visual Basic, vizualni pristup programiranju','1994','1'); INSERT INTO knjiga VALUES (default,'','Matematička logika za ekspertne sisteme','1989','2'); INSERT INTO knjiga VALUES (default,'86-301-0223-3','Programiranje u Prologu','1990','2'); INSERT INTO knjiga VALUES (default,'953-170-002-8','Baze podataka: relacijski pristup i SQL','1993','2'); INSERT INTO knjiga VALUES (default,'','Projektiranje informacijskih sustava','1989','2'); INSERT INTO knjiga VALUES (default,'','Informacijski sustavi proizvodnje','1992','2'); INSERT INTO knjiga VALUES (default,'','Uvod u računalnu sigurnost','2004','3'); INSERT INTO knjiga VALUES (default,'','An Introduction to Database Systems','2004','4'); INSERT INTO knjiga VALUES (default,'','What not how - the business rules approach','2000','4'); Zapravo, kad bi riješio taj problem, znao bih napraviti i zadnji dio zadatka: Citat:
Kôd:
INSERT INTO autor_knjige VALUES (1,1); INSERT INTO autor_knjige VALUES (2,2); INSERT INTO autor_knjige VALUES (2,3); INSERT INTO autor_knjige VALUES (3,2); INSERT INTO autor_knjige VALUES (4,4); INSERT INTO autor_knjige VALUES (5,4); INSERT INTO autor_knjige VALUES (6,4); INSERT INTO autor_knjige VALUES (7,5); INSERT INTO autor_knjige VALUES (7,6); INSERT INTO autor_knjige VALUES (8,7); INSERT INTO autor_knjige VALUES (9,8); INSERT INTO autor_knjige VALUES (10,8);
__________________
I, blackshtef |
|||
26. 03. 2008. | #2 |
VD IT Direktora
Invented the damn thing
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
|
Dok se ne nađe neko da pročita i ostatak posta :
Indeks ne možeš nazvati isto kao i tabelu. Stavi mu neko logično ime npr idx_imetabele_imepolja.
__________________
blog |
26. 03. 2008. | #3 | |
profesionalac
Qualified
|
Citat:
Još sad samo objašnjenje za onaj problem s vanjskim ključem i razina znanja će biti veća za 1 EDIT: Zapravo, sve je riješeno! Problem je izgleda bio samo u tim indeksima...i u par "naših" slova, izgleda da nam je server tak podešen... Uglavnom, hvala na pomoći
__________________
I, blackshtef Poslednja izmena od blackshtef : 26. 03. 2008. u 22:52. Razlog: rješen problem |
|
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
dijagram mysql5 baze | ivanhoe | SQL baze podataka - Sponzor: Baze-Podataka.net | 4 | 31. 03. 2010. 16:24 |
Alat za broj pretraga po ključnoj reči za Google | phatsa | Marketing i SEO | 2 | 19. 01. 2007. 21:42 |
TOP 5 rekorda iz baze ? | Ministar | SQL baze podataka - Sponzor: Baze-Podataka.net | 15 | 23. 11. 2006. 11:06 |