Loading:

Promocja Helion.pl

Prosta baza danych oracle.

       Prezentuje autorski skrypt pokazujący podstawową funkcjonalność tworzenia prostej bazy danych. Baza zawiera związki encji jeden do wielu a także wiele do wielu z wykorzystaniem tabel przejściowych. Związki te tworzone są poprzez kolejne funkcje ALTER.

 

        Ciekawą funkcjonalnością Oracle są także sekwencje (CREATE SEQUENCE) pozwalające na automatyczne generowanie ciągów liczbowych potrzebnych przy budowaniu INSERTÓW np. dla sekwncji seq_Faktura kolejna wartość zwracana była by przez seq_Faktura.nextval, co przy standardowych ustawieniach dawało by liczbę 1, 2, 3, .. itp.



Napisz Artykuł

Listing

--usuwanie sekwencji oraz tabel
DROP SEQUENCE seq_Myjnia;
DROP SEQUENCE seq_Faktura;
DROP SEQUENCE seq_Zamowienie_klienta;
DROP SEQUENCE seq_Zamowienie_towaru;
DROP SEQUENCE seq_Klienci;
DROP SEQUENCE seq_Usluga;
DROP SEQUENCE seq_Pracownicy;
DROP SEQUENCE seq_Rachunek;
DROP SEQUENCE seq_Towar;
DROP SEQUENCE seq_Dostawca;
DROP TABLE Pozycja_zamowienia_towaru CASCADE CONSTRAINTS;
DROP TABLE Towar CASCADE CONSTRAINTS;
DROP TABLE Rachunek CASCADE CONSTRAINTS;
DROP TABLE Dostawca CASCADE CONSTRAINTS;
DROP TABLE Zamowienie_towaru CASCADE CONSTRAINTS;
DROP TABLE Myjnia CASCADE CONSTRAINTS;
DROP TABLE Pozycja_zamowienia_klienta CASCADE CONSTRAINTS;
DROP TABLE Faktura CASCADE CONSTRAINTS;
DROP TABLE Zamowienie_klienta CASCADE CONSTRAINTS;
DROP TABLE Klienci CASCADE CONSTRAINTS;
DROP TABLE Usluga CASCADE CONSTRAINTS;
DROP TABLE Pracownicy CASCADE CONSTRAINTS;

--tworzenie tabel i sekwencji(potrzebne do generowania identyfikatorów)
CREATE TABLE Pozycja_zamowienia_towaru (
  ilosc                number(10) NOT NULL,
  id_zamowienia_towaru number(10) NOT NULL,
  id_towaru            number(10) NOT NULL);

CREATE TABLE Towar (
  id_towaru   number(10) NOT NULL,
  nazwa       varchar2(30) NOT NULL,
  cena        number(10) NOT NULL,
  upust       number(10) NOT NULL,
  id_dostawcy number(10) NOT NULL,
  PRIMARY KEY (id_towaru));

CREATE TABLE Rachunek (
  nr_rachunku           number(10) NOT NULL,
  czy_korekta           char(1) NOT NULL CHECK(czy_korekta IN ('t','n')),
  id_zamowienia_klienta number(10) NOT NULL,
  PRIMARY KEY (nr_rachunku));

CREATE TABLE Dostawca (
  id_dostawcy    number(10) NOT NULL,
  nazwa_dostawcy varchar2(60) NOT NULL,
  NIP_dostawcy   number(10) NOT NULL,
  miejscowosc    varchar2(30) NOT NULL,
  telefon        number(9) NOT NULL,
  email          varchar2(30),
  PRIMARY KEY (id_dostawcy));

CREATE TABLE Zamowienie_towaru (
  id_zamowienia_towaru number(10) NOT NULL,
  data_realizacji      date NOT NULL,
  id_myjnia            number(10) NOT NULL,
  PRIMARY KEY (id_zamowienia_towaru));

CREATE TABLE Myjnia (
  id_myjnia   number(10) NOT NULL,
  nazwa_myjni varchar2(60) NOT NULL,
  NIP_myjni   number(10) NOT NULL,
  REGON_myjni number(9) NOT NULL,
  miejscowosc varchar2(30) NOT NULL,
  telefon     number(9) NOT NULL,
  PRIMARY KEY (id_myjnia));

CREATE TABLE Pozycja_zamowienia_klienta (
  ilosc         number(10) NOT NULL,
  id_usluga     number(10) NOT NULL,
  id_zamowienia_klienta number(10) NOT NULL);

CREATE TABLE Faktura (
  nr_faktury           number(10) NOT NULL,
  czy_korekta          char(1) NOT NULL CHECK(czy_korekta IN ('t','n')),
  id_zamowienia_towaru number(10) NOT NULL,
  PRIMARY KEY (nr_faktury));

CREATE TABLE Zamowienie_klienta (
  id_zamowienia_klienta number(10) NOT NULL,
  cena                  number(8, 2) NOT NULL,
  upust                 number(8, 2) NOT NULL,
  data_realizacji       date NOT NULL,
  id_klienta            number(10) NOT NULL,
  id_pracownika         number(10) NOT NULL,
  id_myjnia             number(10) NOT NULL,
  PRIMARY KEY (id_zamowienia_klienta));

CREATE TABLE Klienci (
  id_klienta  number(10) NOT NULL,
  nazwa_firmy varchar2(60),
  NIP_klienta number(10) NOT NULL,
  imie        varchar2(30),
  nazwisko    varchar2(30),
  miejscowosc varchar2(30) NOT NULL,
  telefon     number(9) NOT NULL,
  email       varchar2(30),
  PRIMARY KEY (id_klienta));

CREATE TABLE Usluga (
  id_usluga     number(10) NOT NULL,
  nazwa_pakietu varchar2(40) NOT NULL,
  plukanie      char(1) NOT NULL CHECK(plukanie IN ('t','n')),
  namydlanie    char(1) NOT NULL CHECK(namydlanie IN ('t','n')),
  polerowanie   char(1) NOT NULL CHECK(polerowanie IN ('t','n')),
  woskowanie    char(1) NOT NULL CHECK(woskowanie IN ('t','n')),
  odkurzanie    char(1) NOT NULL CHECK(odkurzanie IN ('t','n')),
  PRIMARY KEY (id_usluga));

CREATE TABLE Pracownicy (
  id_pracownika number(10) NOT NULL,
  imie          varchar2(30) NOT NULL,
  nazwisko      varchar2(30) NOT NULL,
  pesel         number(11) NOT NULL,
  wynagrodzenie number(10) CHECK(wynagrodzenie >= 0),
  PRIMARY KEY (id_pracownika));

--dodwanie kluczy obcych poprzez edycje tabel
ALTER TABLE Rachunek ADD CONSTRAINT FKRachunek FOREIGN KEY (id_zamowienia_klienta) REFERENCES Zamowienie_klienta (id_zamowienia_klienta);
ALTER TABLE Towar ADD CONSTRAINT FKTowar FOREIGN KEY (id_dostawcy) REFERENCES Dostawca (id_dostawcy);
ALTER TABLE Pozycja_zamowienia_towaru ADD CONSTRAINT FKPozycja_zamowienia_towaru1 FOREIGN KEY (id_zamowienia_towaru) REFERENCES Zamowienie_towaru (id_zamowienia_towaru);
ALTER TABLE Pozycja_zamowienia_towaru ADD CONSTRAINT FKPozycja_zamowienia_towaru2 FOREIGN KEY (id_towaru) REFERENCES Towar (id_towaru);
ALTER TABLE Faktura ADD CONSTRAINT FKFaktura FOREIGN KEY (id_zamowienia_towaru) REFERENCES Zamowienie_towaru (id_zamowienia_towaru);
ALTER TABLE Zamowienie_towaru ADD CONSTRAINT FKZamowienie_towaru FOREIGN KEY (id_myjnia) REFERENCES Myjnia (id_myjnia);
ALTER TABLE Zamowienie_klienta ADD CONSTRAINT FKZamowienie_klienta1 FOREIGN KEY (id_klienta) REFERENCES Klienci (id_klienta);
ALTER TABLE Zamowienie_klienta ADD CONSTRAINT FKZamowienie_klienta2 FOREIGN KEY (id_pracownika) REFERENCES Pracownicy (id_pracownika);
ALTER TABLE Zamowienie_klienta ADD CONSTRAINT FKZamowienie_klienta FOREIGN KEY (id_myjnia) REFERENCES Myjnia (id_myjnia);
ALTER TABLE Pozycja_zamowienia_klienta ADD CONSTRAINT FKPozycja_zamowienia_klienta1 FOREIGN KEY (id_zamowienia_klienta) REFERENCES Zamowienie_klienta (id_zamowienia_klienta);
ALTER TABLE Pozycja_zamowienia_klienta ADD CONSTRAINT FKPozycja_zamowienia_klienta2 FOREIGN KEY (id_usluga) REFERENCES Usluga (id_usluga);
CREATE SEQUENCE seq_Myjnia;
CREATE SEQUENCE seq_Faktura;
CREATE SEQUENCE seq_Zamowienie_klienta;
CREATE SEQUENCE seq_Zamowienie_towaru;
CREATE SEQUENCE seq_Klienci;
CREATE SEQUENCE seq_Usluga;
CREATE SEQUENCE seq_Pracownicy;
CREATE SEQUENCE seq_Rachunek;
CREATE SEQUENCE seq_Towar;
CREATE SEQUENCE seq_Dostawca;


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=5705

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: alexqc Ranga: Poziom 3 Punktów: 50
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors