6434


Bazy Danych II

Projekt

Temat: „Katalog albumów muzycznych”

Prowadzący: Przygotował:

mgr Zofia Kostrzewska Marcin Woźniak

Informatyka gr II rok III

  1. Cel projektu:

Celem niniejszego projektu jest stworzenie bazy danych w której możliwe będzie skatalogowanie albumów muzycznych zarówno w domowej płytotece jak również dla potrzeb ZAIKS-u.

  1. Opis projektu:

Projekt może służyć jako domowy katalog przechowujący informacje o naszych płytach CD, kasetach czy płytach winylowych (oraz równie dobrze o naszych utworach mp3), oraz może zostać wykorzystany do skatalogowania wszystkich wydawnictw na rynku muzycznym. Ponieważ wszelkie wydawane albumy są objęta prawami autorskimi ważne jest by tytuły utworów, czy nawet nazwy nowych zespołów nie pokrywały się z już istniejącymi. Projekt ten umożliwia łatwe dotarci do skatalogowanych wydawnictw i sprawdzenie czy nowe wydawnictwo nie narusza praw autorskich już istniejącego. Dzięki niemu łatwo i szybko możliwe jest odnalezienie np. szukanego utworu wśród setek a nawet często tysięcy utworów w naszej płytotece. Mamy dostęp do roku wydania albumu z szukanym utworem, do nazwy zespołu, roku jego założenia czy stylu muzycznego który zespół wykonuje. Wyszukiwanie można prowadzić wg wszystkich zawartych w projekcie kryteriów czyli: wg stylu muzycznego, wg zespołu, wg daty wydania, wg albumu czy nawet wg czasu trwania utworu. Zadając stosunkowo proste zapytania mamy dostęp do wszystkich tych informacji. Nasza baza - projekt składa się z pięciu tabel :

2.1. Style_muzyczne - tabela charakteryzująca rodzaj muzyki wykonywany przez zespół, pozwala na skatalogowanie utworów i zespołów wg wspólnych cech charakterystycznych dla nich jak np. rytm, tonacja, czy rify gitarowe. Te właśnie cechy jak i wiele innych decydują do jakiego stylu można zaliczyć zespół.

2.2. Zespoły - przechowuje liste zespolów, daty ich powstania oraz style do których się je zalicza

2.3. Typ_wydania - określa w jaki sposób został album wydany (kaseta MC, plyta CD lub winyl)

2.4. Płyty - zawiera ID zespołu do którego nalezy dany album oraz dane dotyczące daty wydania, stylu muzyucznego oraz tytułu albumu.

2.5. Utwory - Przechowuje wszystkie utwory w naszej bazie wraz z danymi odnośnie ID plyty z której utwór pochodzi, czasu trwania utworu, tytulu utworu, jego pozycji na plycie, oraz ID zespolu wykonującego dany utwór.

W niniejszym projekcie w celu ulatwienia urzytkowania go zostały utworzone funkcje dzieki którym łatwiejsze jest dodawanie rekordów do tabel.

  1. Tabele:

Style_muzyczne

Id_stylu :number (2) Primary Key,

Opis :varchar2 (20) not null;

Zespoly

Id_zesp :number (4) Primary Key,

Nazwa :varchar2 (30) not null,

Data_powstania : Date

Id_stylu :number(2) Foreign Key (Style_muzyczne) ;

Typ_wydania

Id_typu :number (2) Primary Key,

Opis :varchar2 (30) not null,

Side: :char

Plyty

Id_plyty :number (5) Primary Key,

tytul :varchar2 (20) not null,

Id_zesp :number (4) Foreign Key (Zespoly) not null,

Data_wyd : Date,

Id_typu :number (2) Foreign Key (Typ_wydania)

Utwory

Id_utworu :number (6) Primary Key

Id_plyty :number (5) Foreign Key (Plyty),

Id_zsep :number (4) Foreign Key (Zespoly) not null,

Dlugosc :number(4,2) check Dlugosc >0 not null,

Lp :number (2),

Side :char

Tytul :varchar2 (20) not null;

0x08 graphic
4. Diagram

0x08 graphic
0x01 graphic

5. Tworzenie tabel :

  1. Tworzenie tabeli Style_muzyczne:

CREATE TABLE Style_muzyczne (

Id_stylu number (2) CONSTRAINT pk_id_s PRIMARY KEY,

Opis varchar2 (20) not null);

  1. Tworzenie tabeli Zespoly:

CREATE TABLE Zespoly (

Id_zesp number (4) CONSTRAINT pk_id_z PRIMARY KEY,

Nazwa varchar2 (30) not null,

Data_powstania Date,

Id_stylu number(2) constraint fk_id_s references Style_muzyczne(id_stylu)

);

  1. Tworzenie tabeli Typ_wydania

Create table Typ_wydania

(id_typu number(2) constraint pk_id_t Primary key, opis varchar2 (30) not null,

side char constraint si check (side between 1 and 2));

4. Tworzenie tabeli Plyty

Create table Plyty(

id_plyty number (5) constraint pk_id_p primary key,

tytul varchar2(20) not null,

id_zespolu number(4) constraint fk_id_z references Zespoly(Id_zesp) not null,

Rok_wyd number (4),

id_typu number(2) constraint fk_id_ty references Typ_wydania(id_typu));

  1. Tworzenie tabeli Utwory

Create table Utwory(

id_utworu number(6) constraint pk_id_u Primary Key,

id_plyty number(5) constraint fk_id_pl references Plyty(id_plyty),

id_zesp number(4) constraint fk_id_ze references Zespoly(id_zesp),

dlugosc number(8,2) constraint dl check (dlugosc >0),

lp number(2),

side char constraint sid check (side between 1 and 2),

Tytul varchar2(20) not null);

6. Wprowadzanie danych do tabel:

  1. Do tabeli Style_muzyczne:

INSERT INTO Style_muzyczne VALUES (SStyle_muzyczne.nextval,'Rock_metal');

Lub za pomoca funkcji add_styl

EXEC add_styl('rock');

  1. Do tabeli Zespoly:

INSERT INTO Zespoly VALUES (SZespoly.nextval,'METALLICA','1979/03/17',1);

lub za pomocą procedury:

exec add_zespol ('METALLICA','1979/03/17',1);

  1. Do tabeli Typ_wydania:

INSERT INTO Typ_wydania VALUES (STyp_wydania.nextval,'Płyta CD',1);

exec add_typ ('Płyta CD',1);

  1. Do tabeli Plyty:

INSERT INTO Plyty VALUES (SPlyty.nextval,'Master of Pupets',1,1982,2 );

Exec add_plyty('Master of Pupets',1,1982,2 );

  1. Do tabeli Utwory:

INSERT INTO Utwory VALUES (SUtwory.nextval, 3,1,150,3,1,'Tytul3');

7.. Tworzenie sekwencji:

  1. Tworzenie sekwencji do tabeli Style_muzyczne

CREATE SEQUENCE SStyle_muzyczne INCREMENT BY 1 START WITH 1;

  1. Tworzenie sekwencji do tabeli Zespoly

CREATE SEQUENCE S Zespoly INCREMENT BY 1 START WITH 1;

  1. Tworzenie sekwencji do tabeli Typ_wydania

CREATE SEQUENCE S Typ_wydania INCREMENT BY 1 START WITH 1;

  1. Tworzenie sekwencji do tabeli Plyty

CREATE SEQUENCE S Plyty INCREMENT BY 1 START WITH 1;

  1. Tworzenie sekwencji do tabeli Utwory

CREATE SEQUENCE S Utwory INCREMENT BY 1 START WITH 1;

8. Wypelnione tabele:

8.1. Style_muzyczne

0x01 graphic

8.2. Zespoly

0x01 graphic

8.3. Typ_wydnia

0x01 graphic

8.4. Plyty

0x01 graphic

8.5. Utwory

0x01 graphic

9. Tworzenie perspektyw

CREATE OR REPLACE VIEW P_plyty

As

select id_plyty, sum (dlugosc) czas from utwory group by id_plyty ;

10. Tworzenie funkcji

1. Funkcja dodająca rekord do tabeli style muzyczne

Create or replace procedure add_styl (nazwa varchar2)

is

robo varchar2(20);

begin

robo := nazwa;

INSERT INTO Style_muzyczne VALUES

(SStyle_muzyczne.nextval,robo);

end;

  1. Funkcja dodająca nowy zespół do tabeli Zespol

Create or replace procedure add_zespol (nazwa varchar2,data Date, id char)

is

my_nazwa varchar2(30);

my_data Date;

my_styl number(2);

begin

my_nazwa := nazwa;

my_data := data;

my_styl :=id;

INSERT INTO Zespoly VALUES (SZespoly.nextval,my_nazwa,my_data,my_styl);

end;

  1. Funkcja dodająca nowy zespół do tabeli typ_wydania.

Create or replace procedure add_typ (opis varchar2, side char)

is

my_opis varchar2(30);

my_side char;

begin

my_opis := opis;

my_side := side;

INSERT INTO Typ_wydania VALUES (STyp_wydania.nextval,my_opis,my_side);

end;

  1. Funkcja dodająca nowy zespół do tabeli Plyty;

Create or replace procedure add_plyty (nazwa varchar2, id_zesp number,rok number, typ number)

is

my_nazwa varchar2(20);

my_id number(4);

my_rok number(4);

my_typ number (2);

begin

my_nazwa := nazwa;

my_id := id_zesp;

my_rok := rok;

my_typ := typ;

INSERT INTO Plyty VALUES (SPlyty.nextval,my_nazwa,my_id,my_rok,my_typ);

end;

  1. Funkcja dodająca nowy zespół do tabeli Utwory;

Create or replace procedure add_utwory

( Id_p number,id_z number, dl number, lp number, side char, tyt varchar2 )

is

my_id_utworu number(6);

my_id_plyty number(5);

my_id_zesp number(4);

My_dlugosc number(4);

my_lp number(2);

my_side char;

my_Tytul varchar2(20) ;

begin

my_id_plyty := Id_p;

my_id_zesp := id_z;

My_dlugosc := dl;

my_lp := lp;

my_side := side;

my_Tytul := tyt;

INSERT INTO Utwory VALUES (SUtwory.nextval,my_id_plyty,my_id_zesp,My_dlugosc,my_lp,my_side,my_tytul);

end;

  1. Przykladowe zapytania :

    1. Wyszukiwanie plyty po tytule i wyswietlenie jej zawartosci :

Select * from utwory join plyty on plyty.id_plyty = utwory.id_plyty where plyty.Tytul='&plyta';

0x01 graphic

0x01 graphic

11.2 Wyszukanie utworu wg pierwszych liter tytulu :

select z.nazwa, p.tytul, u.tytul, u.dlugosc czas , u.lp from zespoly z, utwory u, plyty p where u.Id_zesp=z.id_zesp and p.id_plyty= u.id_plyty and u.tytul like '&tytul%';

0x01 graphic

0x01 graphic

11.3 Podaj jakie płyty powstały w danym przedziale czasu

select tytul from plyty where rok_wyd > &min and rok_wyd <&max;

0x01 graphic

0x01 graphic

11.4 Jakie plyty danego zespolu znajduja sie w bazie :

select plyty.tytul, plyty.rok_wyd from plyty where id_zespolu = (select id_zesp from zespoly where nazwa = '&nazwa');

0x01 graphic

0x01 graphic

11.5. Jaka jest najstarsza/najmlodsza płyta w bazie

select plyty.tytul plyta, zespoly.nazwa zespol, plyty.rok_wyd from plyty join zespoly on plyty.id_zespolu = zespoly.id_zesp where rok_wyd = (select min(rok_wyd) from plyty);

0x01 graphic

select plyty.tytul plyta, zespoly.nazwa zespol, plyty.rok_wyd from plyty join zespoly on plyty.id_zespolu = zespoly.id_zesp where rok_wyd = (select max(rok_wyd) from plyty);

0x01 graphic

    1. Pokaz czasy trwania plyt :

select plyty.tytul, p_plyty.czas from plyty natural join P_plyty ;

0x01 graphic

Plyty

Id_plyty,

Tytul,

Id_zesp,

Data_wyd,

Id_typu

Typ_wydania

Id_typu,

Opis,

side

Style_muzyczne

Id_stylu,

opis

Utwory

Id_utworu

Id_plyty

Id_zsep

Dlugosc

Lp Side Tytul

Zespoly

Id_zesp

Nazwa Data_powstania : Id_stylu



Wyszukiwarka

Podobne podstrony:
praca-magisterska-6434, Dokumenty(8)
6434
6434
6434
6434
6434
praca-magisterska-6434, Dokumenty(8)
akumulator do astra hd 7 6434 6438 6438 t 6442 6442 t 6445

więcej podobnych podstron