Projekt bazy danych (ver.1) Oracle, Jboss Seam

Mariusz Siwko
20.08.2015

Artykuł ten opisuje, jak stworzyć krok po kroku przykładową bazę danych (ver.1) dla ORACLE. Będzie ona wykorzystywana jako podstawa do prezentacji różnych rozwiązań dla jboss seam w ramach tego działu.

Wymagane środowisko
OS
Linux/XP/VISTA
DB
SQL Tools
np: SQL Developer (free)

Projekt bazy danych

Czyli w tym miejscu powiniśmy wiedzieć, co będziemy chcieli zamodelować (tabele, relacje). Załóżmy, że chcemy stworzyć prosty system do rejestracji naszych klientów oraz ich adresów. Diagram związków encji dla naszego przykładu został umieszczony na rys.1:

Rys.1 EA - Diagram związków encji

Na rysunku możemy wyróżnic encję EA_CUSTOMER, która będzie zawierał informacje o klientach, encję EA_ADRESS, która będzie zawierała informacje o adresach przypisanych do klienta oraz EA_TYPE jako tabelę satelitarną zawierającą typ kilenta (np: dostawca, konkurencja).

Skrypt instalacyjny

Dla powyższego projektu przygotowujemy skrypt instalacyjny, który będzie dodatkowo uzupełniony o elementy niewidoczne na diagramie takie jak: index, sequence.
 

Skrypt instalacyjny ea_create
CREATE TABLE EA_ADDRESS
(
ADRS_ID NUMBER NOT NULL ,
ADDRESS VARCHAR2 (100) NOT NULL ,
CTMR_ID NUMBER NOT NULL ,
APARTMENT_NUMBER VARCHAR2 (5) NOT NULL ,
HOUSE_NUMBER VARCHAR2 (5) ,
PLACE VARCHAR2 (60) ,
ZIP VARCHAR2 (6) ,
DESCRIPTION VARCHAR2 (200)
)
;

CREATE INDEX EA_ADDR_CTMR_FK_I ON EA_ADDRESS
(
CTMR_ID ASC
)
;

ALTER TABLE EA_ADDRESS
ADD CONSTRAINT EA_ADRS_PK PRIMARY KEY ( ADRS_ID ) ;

CREATE TABLE EA_CUSTOMER
(
CTMR_ID NUMBER NOT NULL ,
NAME VARCHAR2 (100) NOT NULL ,
NIP VARCHAR2 (10) ,
REGON VARCHAR2 (9) ,
DESCRIPTION VARCHAR2 (200) ,
TYPE_ID NUMBER
)
;

CREATE INDEX EA_CTMR_TYPE_FK_I ON EA_CUSTOMER
(
TYPE_ID ASC
)
;

ALTER TABLE EA_CUSTOMER
ADD CONSTRAINT EA_CTMR_PK PRIMARY KEY ( CTMR_ID )
;

CREATE TABLE EA_TYPE
(
TYPE_ID NUMBER NOT NULL ,
NAME VARCHAR2 (50) NOT NULL ,
DESCRIPTION VARCHAR2 (200)
)
;

ALTER TABLE EA_TYPE
ADD CONSTRAINT EA_TYPE_PK PRIMARY KEY ( TYPE_ID )
;

ALTER TABLE EA_ADDRESS
ADD CONSTRAINT EA_CTMR_ADRS_FK FOREIGN KEY
(
CTMR_ID
)
REFERENCES EA_CUSTOMER
(
CTMR_ID
)
;

ALTER TABLE EA_CUSTOMER
ADD CONSTRAINT EA_CTMR_TYPE_FK FOREIGN KEY
(
TYPE_ID
)
REFERENCES EA_TYPE
(
TYPE_ID
)
;

CREATE SEQUENCE EA_ADRS_SEQ1
INCREMENT BY 1
START WITH 200
MAXVALUE 999999999999999999999999999
MINVALUE 1
CACHE 20
;

CREATE SEQUENCE EA_CTMR_SEQ1
INCREMENT BY 1
START WITH 200
MAXVALUE 999999999999999999999999999
MINVALUE 1
CACHE 20
;

Populacja bazy danych

Zakładam w tym miejscu, że mamy już zainstalowaną bazę danych oraz dodane konto użytkownika. Następnie przy pomocy programu SQL Developer (lub inny preferowany przez czytelnika) wykonujemy skrypt ea_create.

Przykładowe dane

Wypełniamy bazę testowymi danymi

Dane testowe ea_data
insert into EA_TYPE
(TYPE_ID,NAME,DESCRIPTION)
values
(1,'Klient','Typ klient')
;
insert into EA_TYPE
(TYPE_ID,NAME,DESCRIPTION)
values
(2,'Konkurencja','Typ konkurencja')
;
insert into EA_TYPE
(TYPE_ID,NAME,DESCRIPTION)
values
(3,'Dostawca','Typ dostawca')
; insert into EA_CUSTOMER
(CTMR_ID, NAME, NIP, REGON, DESCRIPTION)
values
(1, 'Firma A', '987343234','222222333','Some description')
;
insert into EA_CUSTOMER
(CTMR_ID, NAME, NIP, REGON, DESCRIPTION)
values
(2, 'Firma B', '888777234','777222333','Some description')
;
insert into EA_ADDRESS
(ADRS_ID, ADDRESS, HOUSE_NUMBER, APARTMENT_NUMBER, PLACE, ZIP, DESCRIPTION, CTMR_ID)
values
(1, 'Nowogrodzka','2A','4','WARSZAWA','00-300','Some description',1)
;
insert into EA_ADDRESS
(ADRS_ID, ADDRESS, HOUSE_NUMBER, APARTMENT_NUMBER, PLACE, ZIP, DESCRIPTION, CTMR_ID)
values
(2, 'Warszawska','3A','4','KATOWICE','22-222','Some description',2)
;
Zgłoś swój pomysł na artykuł

Więcej w tym dziale Zobacz wszystkie