NetDB III Objects: Logical to Physical Mapping

The following is a list of NetDB Objects and objects as taken from the logical data model. Each bit of logical data is paired with physical column or columns from the physical database. With a skosh more formalization this mapping could be extended to generate most of the simple code for NetDB applications. No one but me understands or appreciates that though.


  Notes:

    Cardinality reflects the logical data model.  Application enforced
      business rules may affect the cardinality seen by the user.  The
      NetDB 3 Objects document includes these business rules.

    () == derived or alternative representation

    [] == other derived data

    {} == key to join with (subscripted with ``i'' if it's in the parent table)


  Owner Security Group
    bookkeeping(1,1) (date, user)
    label(1,1)
    description(0,1)


  Domain
    bookkeeping(1,1) (date, user)
    comment(0,1)
    name(1,1)
      domain(1,1)
    owner security group(1,n)


  NetDB User
    bookkeeping(1,1) (date, user)
    {sunetid, regid}(1,1)
    active flag(1,1)
    last login(0,1)
    comment(0,1)
    default domain(1,1)
    default address space(0,1)
    default owner security group(1,1)
    all owner flag(1,1)
    all access flag(1,1)
    owner security group(1,n)
    access security group(0,n)
    organization(1,n)
      official(1,1)
    template(0,n)


  Network                               Network.idNetwork
    bookkeeping(1,1) (date, user)               dtCreated, dwrdCreated
            					dtModified, dwrdModified
    comment(0,1)                                dsComment
    dhcp server(0,1)                            idDCHPserverNode

    dhcp option(0,n)                    Network_DCHPoptions.cdDHCPoption {idNetwork}
      value(0,1)                                            strValue

    name(1,n)                           Name.nmName (nmLower) {idNetwork}
      domain(1,1)                         Domain.fqdnDomain (fqdnLower) {idDomain}i
      alias(0,n)                          Name.nmName (nmLower) {idAliasname}
        domain(1,1)                         Domain.fqdnDomain (fqdnLower) {idDomain}i

    owner security group(1,n)           Network_Owner.idOwner {idNetwork}

    IP address space(0,n)               IPaddressSpace.ipAddressSpace (ipBegin) {idNetwork}
      comment(0,1)                                     dsComment
      net number(1,1)                                  ipAddressSpace (ipBegin) (strAddress)
      prefix length(1,1)                               tntPrefix (?) (strPrefixLength, ipNetmask, strNetmask)
      low res(1,1)                                     ipMinRes
      high res(1,1)                                    ipMaxRes
                                                       [ipBroadcast]

      owner security group(0,n)         AddressSpace_Owner.idOwner {ipAddressSpace}

      dynamic dhcp address(0,n)         IPaddress.ipAddress (strIPaddress) {ipAddressSpace}
        name(0,n)                         Name.nmName (nmLower) {ipAddress}
          domain(1,1)			    Domain.fqdnDomain (fqdnLower) {idDomain}i
          alias(0,n)                        Name.nmName (nmLower) {idAliasname}
            domain(1,1)                       Domain.fqdnDomain (fqdnLower) {idDomain}i

      dhcp option(0,n)                  IPaddressSpace_DHCPoptions.cdDHCPoption {ipAddressSpace}
        value(0,1)						   strValue


  Admin Team
    bookkeeping(1,1) (date, user)
    name(1,1)
    email(1,1)
    phone(1,1)
    owner security group(1,n)
    member(0,n)


  Node
    bookkeeping(1,1) (date, user)
    owner organization(1,1)
    location(1,1)
      room(1,1)
    owner netdb user(0,1)
    expiration date(0,1)
    comment(0,1)
    model(1,1)
    os name(1,n)
      os version(0,1)

    name(1,n)
      domain(1,1)
      alias(0,n)
        domain(1,1)
      mx(0,n)
        domain(1,1)
        preference(1,1)
    owner security group(1,n)
    administrator(1,n)
      rank(1,1)
      type(1,1) [Person, Admin Team]
      case (type)
        Person:
          srvtab access(1,1)
        Admin Team:
    user(0,n)
    node tags(0,n)
      label(1,1)
      data(0,1)
    service(0,n)
      type(1,1)
    node group(0,n)

    type(0,n) [Router, Advanced, ... ]
    case (type)
      Advanced:
        PTR preference(0,1)
      DHCP Server:
        dhcp option(0,n)
          value(0,1)
      IP Connectivity Provider:
        address(0,n)
          name(0,n)
            domain(1,1)
            alias(0,n)
              domain(1,1)
      Static IP Client:
        address(1,n)
      Template:
        address space(0,1)

    interface(0,n)
      rank(1,1)
      roaming flag(1,1)
      dhcp flag(1,1)
      dhcp option(0,n)
        value(0,1)
      name(0,n)
        domain(1,1)
        alias(0,n)
          domain(1,1)

      address(0,n)
        active flag(1,1)
        name(0,n)
          domain(1,1)
          alias(0,n)
            domain(1,1)

      type(1,1) [Ethernet, ...]
      case (type)
        Ethernet:
          hardware address(0,1)


  Node Group
    bookkeeping(1,1) (date, user)
    type(1,1)
    comment(0,1)
    owner security group(1,n)
    name(1,n)
      domain(1,1)
      alias(0,n)
        domain(1,1)
    node(0,n)
    node group(0,n)
    type(1,1)
    case (type)
      Computer Cluster:
      Load-Balanced Name:
        CNAME flag(1,1)
        TTL(0,1)


    reserved name
      bookkeeping(1,1) (date, user)
      name(1,1)
      domain(0,1)
      owner security group(0,n)

    os [Solaris, Linux, Windows, ...]
      bookkeeping(1,1) (date, user)
      name(1,1)
      desc(0,1)

    model [Ultra 10, Centris 650, ...]
      bookkeeping(1,1) (date, user)
      name(1,1)
      make(1,1)
      model class(0,1)

    model class [PC, Mac, ...]
      name(1,1)
      desc(0,1)

    make [Apple, Dell, Sun, ...]
      name(1,1)

    location
      name(1,1)
      site(1,1)
      code(1,1)

    organization
      name(1,1)

    consultant
      regid(1,1)
      orgid(1,1)
      primary(1,1)

    netdb application controls
      -none identified yet-

    dhcp options
      name(1,1)
      data type(1,1)
      applicability(0,n)

    dhcp option application [Net, ...]
      label(1,1)
      desc(0,1)

    access security group
      label(1,1)
      description(0,1)
      default flag(1,1)

    service type
      name(1,1)
      desc(0,1)

    node type
      name(1,1)
      desc(0,1)
      access security group(0,1)

    physical interface type
      name(1,1)
      desc(0,1)

    name type
      label(1,1)
      desc(0,1)