Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
workshopdb:database [2010/11/02 17:00]
smayr
workshopdb:database [2010/11/04 14:11] (current)
smayr
Line 1: Line 1:
 == Database Design == == Database Design ==
 +Creation Order:
   * Attendee   * Attendee
   * Workshop   * Workshop
 +  * Registration
   * Attendance   * Attendance
   * Version   * Version
  
-Attendee:+=== Attendee ===
 <code sql> <code sql>
 /******************************************************************************/ /******************************************************************************/
Line 20: Line 22:
     RECID        INTEGER NOT NULL,     RECID        INTEGER NOT NULL,
     ID           VARCHAR(25),     ID           VARCHAR(25),
-    FirstName    VARCHAR(25), 
     LastName     VARCHAR(40) NOT NULL,     LastName     VARCHAR(40) NOT NULL,
 +    FirstName    VARCHAR(25),
        
     Address1       VARCHAR(255),     Address1       VARCHAR(255),
Line 27: Line 29:
     Address3       VARCHAR(255),     Address3       VARCHAR(255),
     City           VARCHAR(255),     City           VARCHAR(255),
-    StateRegion    VARCHAR(100),+    StateProv      VARCHAR(100),
     Country        VARCHAR(40),     Country        VARCHAR(40),
     PostalCode     VARCHAR(30),     PostalCode     VARCHAR(30),
-    PhomeHome      VARCHAR(20), +    PhoneHome      VARCHAR(20), 
-    PhomeWork      VARCHAR(20), +    PhoneWork      VARCHAR(20), 
-    PhomeMobile    VARCHAR(20),+    PhoneMobile    VARCHAR(20),
     Fax            VARCHAR(20),     Fax            VARCHAR(20),
     Email          VARCHAR(50),     Email          VARCHAR(50),
     Website        VARCHAR(255),     Website        VARCHAR(255),
   
-    Salutation   SMALLINT,+    Salutation   VARCHAR(10),
     Occupation   VARCHAR(50),     Occupation   VARCHAR(50),
          
Line 51: Line 53:
     ProfessionalOrg2Number VARCHAR(30),     ProfessionalOrg2Number VARCHAR(30),
     ProfessionalOrg3       VARCHAR(30),     ProfessionalOrg3       VARCHAR(30),
-    ProfessionalOrg4Number VARCHAR(30),+    ProfessionalOrg3Number VARCHAR(30),
          
     AccountNumber VARCHAR(30),     AccountNumber VARCHAR(30),
Line 101: Line 103:
 /******************************************************************************/ /******************************************************************************/
 </code> </code>
 +
 +=== Workshop ===
 +<code sql>
 +/******************************************************************************/
 +/*                 Generated by IBExpert 10/25/2010 10:42:11                  */
 +/******************************************************************************/
 +SET NAMES NONE;
 +
 +/******************************************************************************/
 +/*                                   Tables                                   */
 +/******************************************************************************/
 +CREATE GENERATOR WORKSHOP_RECID_GEN;
 +
 +CREATE TABLE WORKSHOP (
 +    RECID          INTEGER NOT NULL,
 +    AttendeeRecID  INTEGER,
 +    WorkshopID     VARCHAR(30),
 +    Name           VARCHAR(200),
 +    Address1       VARCHAR(255),
 +    Address2       VARCHAR(255),
 +    Address3       VARCHAR(255),
 +    City           VARCHAR(255),
 +    StateProv      VARCHAR(100),
 +    Country        VARCHAR(40),
 +    PostalCode     VARCHAR(30),
 +    PhoneHome      VARCHAR(20),
 +    PhoneWork      VARCHAR(20),
 +    PhoneMobile    VARCHAR(20),
 +    Fax            VARCHAR(20),
 +    Email          VARCHAR(50),
 +    Website        VARCHAR(255),
 +    EventDate1     DATE,
 +    EventDate2     DATE,
 +    EventDate3     DATE,
 +    PricingPackage SMALLINT,
 +    CancellationPolicy  BLOB SUB_TYPE 1 SEGMENT SIZE 2048,
 +    Instructions        BLOB SUB_TYPE 1 SEGMENT SIZE 2048,
 +    HotelAccommodations BLOB SUB_TYPE 1 SEGMENT SIZE 2048,
 +    
 +    RecModifiedBy       VARCHAR(30),
 +    RecModifiedDateTime TIMESTAMP
 +);
 +
 +/******************************************************************************/
 +/*                                Primary Keys                                */
 +/******************************************************************************/
 +ALTER TABLE WORKSHOP 
 +  ADD CONSTRAINT PK_WORKSHOP 
 +  PRIMARY KEY (RECID);
 +  
 +/******************************************************************************/
 +/*                                Foreign Keys                                */
 +/******************************************************************************/
 +
 +/******************************************************************************/
 +/*                                  Indices                                   */
 +/******************************************************************************/
 +CREATE INDEX WORKSHOPIDX ON WORKSHOP (WORKSHOPID);
 +CREATE INDEX WORKSHOPNAMEX ON WORKSHOP (NAME);
 +
 +/******************************************************************************/
 +/*                                  Triggers                                  */
 +/******************************************************************************/
 +SET TERM ^ ;
 +
 +/******************************************************************************/
 +/*                            Triggers for tables                             */
 +/******************************************************************************/
 +/* Trigger: SET_PATIENT_RECID */
 +CREATE OR ALTER TRIGGER SET_WORKSHOP_RECID FOR WORKSHOP
 +ACTIVE BEFORE INSERT POSITION 0
 +as
 +begin
 +  if (new.recid is Null) then
 +  new.recid = gen_id(workshop_recid_gen,1);  
 +end
 +^
 +
 +SET TERM ; ^
 +
 +/******************************************************************************/
 +/*                                 Privileges                                 */
 +/******************************************************************************/
 +</code>
 +
 +=== Registration ===
 +<code sql>
 +/******************************************************************************/
 +/*                 Generated by IBExpert 10/25/2010 10:40:37                  */
 +/******************************************************************************/
 +SET NAMES NONE;
 +
 +/******************************************************************************/
 +/*                                   Tables                                   */
 +/******************************************************************************/
 +CREATE TABLE REGISTRATION (
 +    ATTENDEERECID        INTEGER NOT NULL,
 +    WORKSHOPRECID        INTEGER NOT NULL,
 +    RegistrationDate     DATE NOT NULL,
 +    PricingPackage       SMALLINT NOT NULL,
 +    PaymentMethod        SMALLINT,
 +    PaymentAmountTotal   NUMERIC(10,2) default 0 NOT NULL,
 +    PaymentAmountDue     NUMERIC(10,2) default 0 NOT NULL,
 +    PaymentAmountPaid    NUMERIC(10,2) default 0 NOT NULL,
 +    ExpediteCertificates SMALLINT default 0,
 +    TotalReceptionGuests SMALLINT default 0,
 +    TotalAudiometersToCalibrate SMALLINT default 0,
 +    PacketNumber           INTEGER,
 +    REGISTRATIONConfirmation SMALLINT,
 +    Notes                  BLOB SUB_TYPE 1 SEGMENT SIZE 2048,
 +    RecModifiedBy          VARCHAR(30),
 +    RecModifiedDateTime    TIMESTAMP
 +);
 +
 +/******************************************************************************/
 +/*                                Primary Keys                                */
 +/******************************************************************************/
 +ALTER TABLE REGISTRATION 
 +  ADD CONSTRAINT PK_REGISTRATION 
 +  PRIMARY KEY (ATTENDEERECID, WORKSHOPRECID);
 +
 +/******************************************************************************/
 +/*                                Foreign Keys                                */
 +/******************************************************************************/
 +ALTER TABLE REGISTRATION 
 +  ADD CONSTRAINT FK_REGISTRATION_ATTENDEE
 +  FOREIGN KEY (ATTENDEERECID) 
 +  REFERENCES ATTENDEE (RECID) 
 +    ON DELETE CASCADE ON UPDATE CASCADE;
 +
 +ALTER TABLE REGISTRATION 
 +  ADD CONSTRAINT FK_REGISTRATION_WORKSHOP
 +  FOREIGN KEY (WORKSHOPRECID) 
 +  REFERENCES WORKSHOP (RECID) 
 +    ON DELETE CASCADE ON UPDATE CASCADE;
 +    
 +    
 +/******************************************************************************/
 +/*                                  Triggers                                  */
 +/******************************************************************************/
 +SET TERM ^ ;
 +
 +/******************************************************************************/
 +/*                            Triggers for tables                             */
 +/******************************************************************************/
 +
 +/******************************************************************************/
 +/*                                 Privileges                                 */
 +/******************************************************************************/
 +</code>
 +
 +=== Attendance ===
 +<code sql>
 +/******************************************************************************/
 +/*                 Generated by IBExpert 10/25/2010 10:40:37                  */
 +/******************************************************************************/
 +SET NAMES NONE;
 +
 +/******************************************************************************/
 +/*                                   Tables                                   */
 +/******************************************************************************/
 +CREATE TABLE ATTENDANCE (
 +    ATTENDEERECID  INTEGER NOT NULL,
 +    WORKSHOPRECID  INTEGER NOT NULL,
 +    EventDate      DATE NOT NULL,
 +    EventCheckIn   TIMESTAMP,
 +    EventCheckOut  TIMESTAMP,
 +    RecModifiedBy          VARCHAR(30),
 +    RecModifiedDateTime    TIMESTAMP
 +);
 +
 +/******************************************************************************/
 +/*                                Primary Keys                                */
 +/******************************************************************************/
 +ALTER TABLE ATTENDANCE 
 +  ADD CONSTRAINT PK_ATTENDANCE 
 +  PRIMARY KEY (ATTENDEERECID, WORKSHOPRECID, EventDate);
 +
 +/******************************************************************************/
 +/*                                Foreign Keys                                */
 +/******************************************************************************/
 +ALTER TABLE ATTENDANCE 
 +  ADD CONSTRAINT FK_ATTENDANCE_ATTENDEE 
 +  FOREIGN KEY (ATTENDEERECID) 
 +  REFERENCES ATTENDEE (RECID) 
 +    ON DELETE CASCADE ON UPDATE CASCADE;
 +
 +ALTER TABLE ATTENDANCE 
 +  ADD CONSTRAINT FK_ATTENDANCE_WORKSHOP
 +  FOREIGN KEY (WORKSHOPRECID) 
 +  REFERENCES WORKSHOP (RECID) 
 +    ON DELETE CASCADE ON UPDATE CASCADE;
 +    
 +    
 +/******************************************************************************/
 +/*                                  Triggers                                  */
 +/******************************************************************************/
 +SET TERM ^ ;
 +
 +/******************************************************************************/
 +/*                            Triggers for tables                             */
 +/******************************************************************************/
 +
 +/******************************************************************************/
 +/*                                 Privileges                                 */
 +/******************************************************************************/
 +</code>
 +
 +=== Version ===
 +<code sql>
 +/******************************************************************************/
 +/*                 Generated by IBExpert 10/25/2010 10:43:29                  */
 +/******************************************************************************/
 +SET NAMES NONE;
 +
 +/******************************************************************************/
 +/*                                   Tables                                   */
 +/******************************************************************************/
 +CREATE TABLE VERSION (
 +    NUMBER  NUMERIC(2,2) NOT NULL,
 +    BUILD   VARCHAR(255)
 +);
 +
 +/******************************************************************************/
 +/*                                 Privileges                                 */
 +/******************************************************************************/
 +</code>
 +
 == Entity Relationship Diagram == == Entity Relationship Diagram ==
 +{{:workshopdb:workshopdb-erd.png|WorkshopDB: Entity Relationship Diagram}}
 +
 +== Relation Scheme Diagram ==
 +{{:workshopdb:workshopdb-relationschemediagram.png|WorkshopDB: Relation Scheme Diagram}}
 +
 +== DataSet ==
 +
 +Add a [[swdev:dotnet:Firebird Databases in .NET#adding_firebird_support_in_an_application|Database Data Source]] to the project.
 +
 +Create a dataset object to have access to the underlying data tables.
 +
 +<code csharp>
 +public partial class MainWindow : Window
 +{
 +    public MainWindow()
 +    {
 +        InitializeComponent();
 +
 +        // construct dataset
 +        datasetWorkshopDB ds = new datasetWorkshopDB();
 +
 +        // use a table adapter to populate the Attendee datatable using ATTENDEE table
 +        datasetWorkshopDBTableAdapters.ATTENDEETableAdapter adaptAttendee = new datasetWorkshopDBTableAdapters.ATTENDEETableAdapter();
 +        adaptAttendee.Fill(ds.ATTENDEE);
 +
 +        datasetWorkshopDBTableAdapters.WORKSHOPTableAdapter adaptWorkshop = new datasetWorkshopDBTableAdapters.WORKSHOPTableAdapter();
 +        adaptWorkshop.Fill(ds.WORKSHOP);
 +
 +        datasetWorkshopDBTableAdapters.REGISTRATIONTableAdapter adaptRegistration = new datasetWorkshopDBTableAdapters.REGISTRATIONTableAdapter();
 +        adaptRegistration.Fill(ds.REGISTRATION);
 +
 +        datasetWorkshopDBTableAdapters.ATTENDANCETableAdapter adaptAttendance = new datasetWorkshopDBTableAdapters.ATTENDANCETableAdapter();
 +        adaptAttendance.Fill(ds.ATTENDANCE);
 +
 +        // use the Attendee datatable as the DataContext for the Window
 +        this.DataContext = ds.ATTENDEE.DefaultView;
 +    }
 +}
 +</code>