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.
OS
|
Linux/XP/VISTA
|
DB
|
min. Oracle 10g Express Edition (free)
|
SQL Tools
|
np: SQL Developer (free)
|
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).
Dla powyższego projektu przygotowujemy skrypt instalacyjny, który będzie dodatkowo uzupełniony o elementy niewidoczne na diagramie takie jak: index, sequence.
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 ALTER TABLE EA_ADDRESS CREATE TABLE EA_CUSTOMER CREATE INDEX EA_CTMR_TYPE_FK_I ON EA_CUSTOMER ALTER TABLE EA_CUSTOMER CREATE TABLE EA_TYPE ALTER TABLE EA_TYPE ALTER TABLE EA_ADDRESS ALTER TABLE EA_CUSTOMER 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 ; |
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.
Wypełniamy bazę testowymi danymi
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) ; |