[ Pobierz całość w formacie PDF ]
.Silverrun kontroluje różnorodne aspekty modelu i pozwalaz dużym prawdopodobieÅ„stwem okreÅ›lić, czy może on już posÅ‚użyć jako podstawado wygenerowania skryptu SQL.Generowanie poleceÅ„ DDLPolecenia SQL, sÅ‚użące do tworzenia lub definiowania obiektów, okreÅ›lane sÄ…mianem poleceÅ„ DDL (ang.Data Definition Language, jÄ™zyk definicji danych).PozakoÅ„czeniu prac nad modelem przychodzi pora na jego fizycznÄ… implementacjÄ™.Aby wygenerować skrypt SQL, który na podstawie modelu utworzy odpowiednieobiekty, należy:1.Wybrać opcjÄ™ menu Schema\Generate DDL.2.W oknie dialogowym, które pojawi siÄ™ na ekranie, uaktywnić przycisk opcjiCoded Name.3.Kliknąć przycisk Generate.4.Program spyta teraz o nazwÄ™ pliku.Należy podać nazwÄ™, opisujÄ…cÄ…podstawowÄ… funkcjÄ™ modelu, uzupeÅ‚nionÄ… rozszerzeniem SQL.Dla przykÅ‚adu,omawianego w tym rozdziale, odpowiedniÄ… nazwÄ… bÄ™dzie LAEASE.SQL.Listing 6.1 przedstawia zawartość skryptu SQL, który powinien zostaćautomatycznie wygenerowany.Polecenia DDL, wygenerowane przez Silverrun, sÄ…zgodne z dialektem InterBase SQL, gdyż rozpoczynajÄ…c pracÄ™ nad modelemzadeklarowano użycie wÅ‚aÅ›nie systemu InterBase.Listing 6.1.Skrypt LEASE.SQL wygenerowany przez programSilverrun-RDM.CONNECT  E_R_Diagram_for_Lease_Process USER   PASSWORD   ;CREATE DOMAIN TAddition AS CHARACTER(20) NOT NULL CHECK(VALUE IN ('Deerfield', 'Firewheel', 'Legacy Hills',¥' 'Switzerland Estates', 'Sherwood', 'Rockknoll'));CREATE DOMAIN TAddress AS CHARACTER(30) NOT NULL;CREATE DOMAIN TCity AS CHARACTER(30) NOT NULL CHECK Projektowanie baz danych w modelu klient/serwer 209(VALUE IN ('Oklahoma City', 'Norman', 'Edmond', 'Dallas',¥' 'Richardson', 'Plano'));CREATE DOMAIN TComments AS VARCHAR(80);CREATE DOMAIN TPhone AS CHARACTER(13) NOT NULL;CREATE DOMAIN TPropertyNo AS INTEGER NOT NULL;CREATE DOMAIN TRent AS NUMERIC(5, 2) NOT NULL;CREATE DOMAIN TRooms AS INTEGER NOT NULL CHECK(VALUE IN (0, 1, 2, 3, 4, 5));CREATE DOMAIN TSchoolDistrict AS CHARACTER(20) NOT NULL CHECK(VALUE IN ( Putnam City ,  Oklahoma City ,  Richardson ,¥'  Edmond ,  Garland ,  Dallas ,  Plano ));CREATE DOMAIN TState AS CHARACTER(2) NOT NULL CHECK(VALUE IN ( OK ,  TX ));CREATE DOMAIN TTenantNo AS INTEGER NOT NULL;CREATE DOMAIN TYesNo AS CHAR(1) NOT NULL CHECK(VALUE IN ( Y ,  N , T ,F ));CREATE DOMAIN TZip AS CHARACTER(10) NOT NULL;CREATE TABLE PROPERTY(.Property_Number TPropertyNo NOT NULL,.Address TAddress NOT NULL,.City TCity NOT NULL,.State TState NOT NULL,.Zip TZip NOT NULL,.Addition TAddition NOT NULL,.SchoolDistrict TSchoolDistrict NOT NULL,.Rent TRent NOT NULL,.Deposit TRent NOT NULL,.LivingAreas TRooms NOT NULL,.BedRooms TRooms NOT NULL,.BathRooms TRooms NOT NULL,.GarageType TRooms NOT NULL,.CentralAir TYesNo NOT NULL,.CentralHeat TYesNo NOT NULL,.GasHeat TYesNo NOT NULL,.Refigerator TYesNo NOT NULL,.Range TYesNo NOT NULL,.DishWasher TYesNo NOT NULL,.PrivacyFence TYesNo NOT NULL,.LastLawnDate DATE NOT NULL, 210 Część I.LastSprayDate DATE NOT NULL,PRIMARY KEY (Property_Number));CREATE TABLE TENANT( Tenant_Number TTenantNo NOT NULL,Name CHARACTER(30) NOT NULL,Employer CHARACTER(30) NOT NULL,EmployerAddress TAddress NOT NULL,EmployerCity TCity NOT NULL,EmployerState TState NOT NULL,EmployerZip TZip NOT NULL,HomePhone TPhone NOT NULL,WorkPhone TPhone NOT NULL,ICEPhone TPhone NOT NULL,Comments TComments,PRIMARY KEY (Tenant_Number));CREATE TABLE CALL( Call_Number INTEGER NOT NULL,Call_Date DATE NOT NULL,CallTime CHARACTER(11),Description CHARACTER(30) NOT NULL,Property_Number TPropertyNo,PRIMARY KEY (Call_Number),CONSTRAINT FK_PROPERTY1FOREIGN KEY (Property_Number)REFERENCES PROPERTY);CREATE TABLE LEASE( Lease_Number INTEGER NOT NULL,BeginDate DATE NOT NULL,EndDate DATE NOT NULL,MovedInDate DATE NOT NULL,MovedOutDate DATE NOT NULL,Rent TRent NOT NULL,Deposit TRent NOT NULL,PetDeposit TRent NOT NULL,RentDueDay SMALLINT NOT NULL,LawnService TYesNo NOT NULL,Comments TComments,Property_Number TPropertyNo NOT NULL,Tenant_Number TTenantNo NOT NULL,PRIMARY KEY (Lease_Number),CONSTRAINT FK_PROPERTY2FOREIGN KEY (Property_Number)REFERENCES PROPERTY,CONSTRAINT FK_TENANT3FOREIGN KEY (Tenant_Number)REFERENCES TENANT); Projektowanie baz danych w modelu klient/serwer 211UWAGA:Kolejność kolumn w tabeli PROPERTY zostaÅ‚a nieco zmodyfikowana i jest terazbardziej logiczna.Encja PROPERTY tworzona byÅ‚a automatycznie przez ekspertanormalizacji ERX - stÄ…d przypadkowa kolejność kolumn.Narzucenie kolejnoÅ›cikolumn zgodnej z naturalnym tokiem myÅ›lenia i skojarzeÅ„ uÅ‚atwia obsÅ‚ugÄ™ tabelii tworzenie aplikacji, operujÄ…cych na niej.Skrypt rozpoczynajÄ… polecenia, tworzÄ…ce obiekty domen Interbase.OdpowiadajÄ…one logicznym domenom, zdefiniowanym dla modelu.Utworzone domenywykorzystywane sÄ… nastÄ™pnie w definicjach tabel bazy danych.Jest to bardzokorzystne rozwiÄ…zanie.ReguÅ‚y logiki aplikacji ujÄ™te sÄ… w definicjach domen,z których można dowolnie korzystać w przyszÅ‚oÅ›ci, np.przy tworzeniu nowychkolumn.Gdyby na przykÅ‚ad zaszÅ‚a potrzeba dodania kolumny, zawierajÄ…cejwartoÅ›ci typu Yes/No (Tak/Nie), możliwe bÄ™dzie ponowne użycie domenyTYesNo.Możliwość taka istnieje dziÄ™ki ujÄ™ciu reguÅ‚ logiki aplikacji w domenach,a nie wprost w definicjach kolumn.W wygenerowanym skrypcie zauważyć można jednÄ… usterkÄ™: pierwsze, dziwnepolecenie CONNECT, które prawdopodobnie nie uaktywni bazy danych naserwerze InterBase.W charakterze nazwy bazy danych użyto nazwy modelu.Jednym z rozwiÄ…zaÅ„ tego problemu byÅ‚aby zmiana nazwy modelu, tak aby mogÅ‚abyć użyta również jako poprawna nazwa bazy danych InterBase.Istnieje jednaklepszy sposób.Model zostaÅ‚ utworzony w wyniku odpowiedniego przeksztaÅ‚cenia diagramu E-R,dlatego zachowaÅ‚ tytuÅ‚, pochodzÄ…cy z moduÅ‚u ERX.Zmienimy teraz ten tytuÅ‚, takaby lepiej opisywaÅ‚ gotowy, relacyjny model danych.W tym celu należy wybraćopcjÄ™ menu Schema\Schema Description i zmienić zawartość pola Local Name(Nazwa lokalna), wpisujÄ…c w nim: Relacyjny model danych dla procesu wynajmu(Lease).NastÄ™pnie w polu Coded Name (Nazwa kodowa) należy wpisać poprawnÄ…nazwÄ™ bazy danych InterBase, np.C:\DATA\RENTMAN\RENTMAN.GDB; wewskazanej bazie danych przechowywane bÄ™dÄ… obiekty, utworzone przez skryptDDL.Na rysunku 6.29 przedstawiono okno dialogowe Schema Description (Opisdiagramu). 212 Część IRysunek 6.29.NazwÄ™ modeluokreÅ›la siÄ™ w okniedialogowymSchemaDescription.UWAGA:Należy pamiÄ™tać o zapisaniu utworzonego modelu, gdyż bÄ™dzie on ponowniewykorzystywany w dalszej części książki, w sekcji  Samouczek.Autor zapisaÅ‚swój projekt jako LEASE.RDM.Po zmianie nazwy, której program RDM użyje przy generowaniu poleceÅ„ DDL,należy zlecić ponowne utworzenie caÅ‚ego skryptu LEASE.SQL.Ponownie posÅ‚użydo tego polecenie Schema\Generate DDL.Należy pamiÄ™tać o uaktywnieniu opcjiCoded Names.Polecenie CONNECT w nowym pliku przyjmie postać zbliżonÄ… doponiższej:CONNECT  C:\DATA\RENTMAN\RENTMAN.GDB USER   PASSWORD   ;Plik ze skryptem można zmodyfikować, uzupeÅ‚niajÄ…c polecenie CONNECTodpowiednim hasÅ‚em i identyfikatorem użytkownika.Oto przykÅ‚ad, w którymużyto identyfikatora użytkownika SYSDBA i jego domyÅ›lnego hasÅ‚a:CONNECT  C:\DATA\RENTMAN\RENTMAN.GDB USER  SYSDBA PASSWORD¥'  masterkey ;Skrypty SQL można z powodzeniem edytować w Å›rodowisku Delphi [ Pobierz caÅ‚ość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • swpc.opx.pl
  •