InitialDesign

Initial Design

  1. Basic Table
    1. Name: Name of keyspace / database: Provided
    2. Description: Description of the keyspace.
    3. URL: ? Part of description?
    4. ID: 1st Row. Unique ID in this keyspace
    5. Item Name: Displayable name for item
    6. Item Description: Displayable description for item
    • First three items in separate table? How connect?
  2. Link Table: One for each basic table, or one for each BT :: BT we track: Provided
    1. ID: From Basic Table
    2. Target Keyspace: Keyspace this link is to (only needed if 1 LT per BT)
    3. Target: ID from Target Keyspace
    4. Multiplicity: 1-to-1, many-to-1, 1-to-many, many-to-many
    5. Direction: unidirectional (left to right, default), bidirectional
    • Allows 1-1, 1-Many and Many-Many
  3. Connection Efficiency: Calculated
    1. Start Keyspace
    2. End Keyspace
    3. Percent "hits": Percent of items in A that have matches in B
    4. Length: Length of path
    5. Quality: ? Measure of 1-1 v. 1-Many ?
    6. ConnID? : Jump Table unique identifier.
    • Given starting and ending keyspaces, find out which path is likely to provide the best mapping in terms of:
      • least number of unmapped keys (false-negatives)
      • least number of ambiguous matches (false-positives). probably won't use this as an optimization score but rather as a filter. E.g. consider all paths that don't increase ambiguity above 2 matches.
  4. Jump Table: One per Jump Level > 1. How to get from A to B: Calculated
    1. Unique ID
    2. Intermediate Keyspace
    3. Order: 1 .. N, where N is Jump Level
    • This table defines the path you will follow to get from one keyspace to another.
    • If Start::End is a 1-Many relationship, may have multiple records for each Start ID.
  5. Operation:
    1. Do direct lookup (using link table).
      1. If get hit, report it
      2. Allow user to ask for more hits
      3. If user wants more, or there wasn't a match, start using the Jump Tables
    2. Indirect lookups
      1. User sets a max jump count
      2. We can set one, too (at worse, max jumps == count of Basic Tables)
    3. First check any "pure" (all 1-1) paths, in decreasing percentage order
    4. If no hit, then iterate over other paths.
      1. Let user choose quality v length?

-- Main.gregd - 21 Jun 2007