Portál AbcLinuxu, 14. května 2025 04:17

Dotaz: Návrh databáze

2.11.2009 14:27 tascoa | skóre: 11
Návrh databáze
Přečteno: 765×
Odpovědět | Admin
Příloha:
Prosím o pomoc s návrhem tabulek a klíčů. Vše podle obrázku v příloze. Můžete mi s tím pomoci? Pokud někdo namítne, že to mám určitě do školy, tak přiznávám, že ano. Je to ukázka budoucího testu. A chci být připraven. Prosím o kontrolu, případně námitek, kde jsou chyby. Nechci hotové řešení. Díky.

create table Zamestnanec ( idZam integer, jmeno varchar(30), prijmeni varchar(50) )

alter table Zamestnanec add constraint pk_idZam primary key ( idZam ) / create table Evidence ( uvazek float, idZam integer, idOdd integer )

alter table Evidence add constraint fk_idZam foreign key ( idZam ) references Zamestnanec ( idZam )

alter table Evidence add constraint fk_idOdd foreign key ( idOdd ) references Oddeleni ( idOdd ) / create table Oddeleni ( idOdd integer, nazev varchar(50) )

alter table Oddeleni add constraint pk_idOdd primary key ( idOdd ) /

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (tascoa (tazatel))
Tarmaq avatar 2.11.2009 15:18 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Návrh databáze
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je dobre u otazky tohoto typu rict, o jakou db se jedna..
Muj navrh pouziva trochu jine nazvy (anglicky, podle me zazitych konvenci) a taky neobsahuje IMHO zbytecny sloupec uvazek. Psano bez zbytecnych ALTERu. Testovano na Oraclu. Ber to spis jako inspiraci, nevim do jake miry se mas ridit zadanym obrazkem ;]
CREATE TABLE employees (
    id INTEGER
        CONSTRAINT pk_employees PRIMARY KEY,
    first_name VARCHAR(30),
    last_name VARCHAR(50)
);

CREATE TABLE departments (
    id INTEGER
        CONSTRAINT pk_departments PRIMARY KEY,
    name VARCHAR(50)
);

CREATE TABLE employee2department (
    employee NUMBER(16)
        CONSTRAINT fk_e2d_employee
        REFERENCES employees
        ON DELETE CASCADE,
    department NUMBER(16)
        CONSTRAINT fk_e2d_department
        REFERENCES departments
        ON DELETE CASCADE,
    CONSTRAINT pk_employee2depatment
        PRIMARY KEY (employee, department)
);
Don't panic!
2.11.2009 15:24 tascoa | skóre: 11
Rozbalit Rozbalit vše Re: Návrh databáze
Mockrat dekuji. Z tohoto uz to celkem cele chapu. Ja to take budu zkouset na oracli instanci. Jeste jednou diky.
3.11.2009 19:08 depka | skóre: 20 | blog: eterity
Rozbalit Rozbalit vše Re: Návrh databáze
proc jsou cizi klice typu number(16) misto int?
Tarmaq avatar 4.11.2009 14:14 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Návrh databáze
ano, to je chyba - pisu ze zvyku z prace NUMBER(16) a pak jsem se to jal predelavat na INTEGER (protoze jsem si toho vsiml v zadani) a zrejme uz jsem to nedokoncil a postnul rozdelane.. cizi klice samozrejme musi byt stejneho typu jako zdrojovy sloupec
Don't panic!
Tarmaq avatar 4.11.2009 14:18 Tarmaq | skóre: 39
Rozbalit Rozbalit vše Re: Návrh databáze
jinak v Oraclu:
INTEGER = NUMBER(38)
coz muze byt zbytecne - proto pouzivam NUMBER(16) ;]
Don't panic!
4.11.2009 16:46 kulik
Rozbalit Rozbalit vše Re: Návrh databáze
V cem je lepsi NUMBER(16) nez NUMBER(38)? Bud ma to omezeni nejaky realny zaklad, a pak by tam melo byt, nebo nema, a pak je k nicemu. Tezko tedy rict ze je to "zbytecne", bud je chyba ze to tam neni, nebo je to uplne jedno.
5.11.2009 00:06 FooBar
Rozbalit Rozbalit vše Re: Návrh databáze
Err, coze? Absolutne nechapu tvoji logiku. To omezeni rika, kolik se toho tam vejde. V momente, kdy nepotrebujes tolik, je logicky vyhodnejsi omezit to na nizsi cislo...
5.11.2009 11:12 karel
Rozbalit Rozbalit vše Re: Návrh databáze
Jedna se o constraint a ten je bud vecne opodstatneny a pak tam byt musi, nebo opodstatneny neni a pak by tam nemel byt. Nema to zadnou souvislost s tim, kolik data zaberou mista, takze pokud nemam realny duvod proc tam dat 16, neni to o nic lepsi nez default 38. Ale oboje je samozrejme tak velke, ze to pri typickem pouziti je uplne jedno...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.