Stáhnout prezentaci
Prezentace se nahrává, počkejte prosím
ZveřejnilProkop Novotný
1
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK http://www.ms.mff.cuni.cz/~kopecky/vyuka/dbapl/ Verze 05.11.09.10.30
2
DBI026 -DB Aplikace - MFF UK Příklad Vytvořte schéma pro E-R model Prodej ProdejnaZboží 1,1 0,n 1,1 0,n Kdy Cena_Ks Pocet Id Ulice Mesto Id Nazev Cena_Ks
3
DBI026 -DB Aplikace - MFF UK Tabulky Prodej –CREATE TABLE Prodej ( Zbozi_id Integer, Prodejna_id Integer, Kdy Date, Pocet Integer, Cena_ks Decimal(10,2) ); Zbozi –CREATE TABLE Zbozi ( Zbozi_id Integer, Nazev Varchar2(40) ); Prodejna –CREATE TABLE Prodejna( Prodejna_id Integer, Ulice Varchar2(40), Mesto Varchar2(30) );
4
DBI026 -DB Aplikace - MFF UK Klíče (jde psát i přímo v tabulkách) Zbozi –ALTER TABLE Zbozi ADD( CONSTRAINT Zbozi_PK PRIMARY KEY(Zbozi_id) ); Prodejna –ALTER TABLE Prodejna ADD( CONSTRAINT Prodejna_PK PRIMARY KEY(Prodejna_id) ); Prodej –ALTER TABLE Prodej ADD( CONSTRAINT Prodej_PK PRIMARY KEY( Zbozi_id, Prodejna_id, Kdy ), CONSTRAINT Prodej_FK_Zbozi FOREIGN KEY(Zbozi_id) REFERENCES Zbozi(Zbozi_id) ON DELETE SET NULL, CONSTRAINT Prodej_FK_Prodejna FOREIGN KEY(Prodejna_id) REFERENCES Prodejna(Prodejna_id) ON DELETE SET NULL );
5
DBI026 -DB Aplikace - MFF UK Chybějící indexy přes cizí klíče Zbozi Prodejna Prodej –Index přes Zbozi_id již existuje díky primárnímu klíči –CREATE INDEX Prodej_Prodejna_Id_Inx ON Prodej(Prodejna_Id);
6
DBI026 -DB Aplikace - MFF UK Unikátní název zboží Zbozi –ALTER TABLE Zbozi ADD CONSTRAINT Zbozi_U_Nazev UNIQUE(Nazev) Prodejna Prodej
7
DBI026 -DB Aplikace - MFF UK Příklad Nezávislé ceníky zboží prodejen Prodej ProdejnaZboží 1,1 0,n 1,1 0,n Kdy Cena_Ks Pocet Id Ulice Mesto Id Nazev Cena_Ks Cenik 1,1 Cena_Ks 0,n
8
DBI026 -DB Aplikace - MFF UK Nezávislé ceníky zboží prodejen CREATE TABLE Cenik( Zbozi_Id Integer CONSTRAINT Cenik_FK_Zbozi REFERENCES Zbozi(Id) ON DELETE CASCADE, Prodejna_Id Integer CONSTRAINT Cenik_FK_Prodejna REFERENCES Prodejna(Id) ON DELETE CASCADE, Cena_ks Decimal(10,2) NOT NULL, CONSTRAINT Cenik_PK PRIMARY KEY (Zbozi_Id, Prodejna_Id) ); CREATE INDEX Cenik_Prodejna_Id_Inx ON Cenik(Prodejna_Id); INSERT INTO Cenik SELECT Z.Id, P.Id, Z.Cena_Ks FROM Zbozi Z, Prodejna P; ALTER TABLE Zbozi DROP COLUMN Cena_Ks;
Podobné prezentace
© 2024 SlidePlayer.cz Inc.
All rights reserved.