Subject RE: [firebird-support] Database design comments
Author Nols Smit
>Doing those calculus in real time is impossible because is to much time consuming. My idea, in this
>case, is to make those comparisons previously and store them in Firebird database

Perhaps it's possible: Another approach:

Think of using the Rubicon search engine from<> (I developed that application: Sageolit Uses Rubicon)

What you basically do is to do a Rubicon indexing of the code tables. You mentioned:

* Material (7 classification)
* Hole type (3 different holes)
* shoulder type (3)
* chamfer type
* insulation type
* terminal type
* shape

You will create indexes ~mat7, ~hol2, ~sho1 if record 1 uses material with foreign key 7, hole with foreign key 2, shoulder with foreign 1, etc.

~mat7 index in the words table will point to all the records where the foreign key = 7 of the materials table, etc. Therefore your words table will be very small.

So if you search, your search string will be something like: ~mat7 ~hol2 ~sho1 or perhaps: (~mat7 and ~hol2) and not ~shol1

Obviously the user will never see this funny search strings, he will use familiar windows controls, e.g. drop-down boxes etc.

The search speed is about 5000 x faster that SQL-search and also this way, your program will be simple and you can have limitless search combinations.

It's easy enough to test this approach by creating a test database by using random number generators. Remember to use IBObjects as the db driver. IBX will be problematic if you implement connection pooling.


Nols Smit

Disclaimer Legal Notice:
By having opened and read this electronic mail, you are deemed to have
understood and accepted all disclaimers and conditions pertaining to
electronic mail emanating from, and received by The Council for Geoscience,
further detail of which may be viewed at the following URL:

[Non-text portions of this message have been removed]