Software Table

R

Ryan Langton

I am constructing a database to track our software licenses and and have
some questions due to the licensing requirements. I'm sure some of you are
probably familiar with this. We have 3 possibilities for license types.

1) Individual Licenses (each user has a unique key code).
2) Volume Licensing (users share the same key code).
3) Upgradable Volume Licensing (these are the same as 2, except the licenses
can be used for more than one type of software, example: Office 97, Office
2000, and Office XP Standard fall under the same license agreement).

I've constructed my tables as shown below:

tlbUser
(PK) User ID
(other fields about the user)

tblSoftwareOwnership (many to many joining table)
(PK) OwnershipID (autocount)
(FK) UserID
(FK) SoftwareID
IndividualKeyCode

tblSoftware
(PK) SoftwareID (autocount)
(FK) SoftwareGroupID
SoftwareTitle
SoftwareVersion
VolumeKeyCode
(other fields about this particular software)

tblSoftwareGroup
(PK) SoftwareGroupID (autocount)
Quantity (number of volume licenses for this software group)

If the license is individual licensing as example #1, IndividualKeyCode in
tblSoftwareOwnership contains the key code, SoftwareGroupID and
VolumeKeyCode in tblSoftware is NULL.
If the license is as type example #2 (volume license), IndividualKeyCode
will be NULL, VolumeKeyCode will contain the Key, and there will be a
SoftwareGroupID (with no other software with the same group ID).
Example #3 would be much like #2 except there would be multiple SoftwareID's
with the same SoftwareGroupID.

Anyways, I'm just wanting to know if anyone else has any different (better?)
ways of handling this? I really can't see any more efficient way of doing
it.

Thanks,
Ryan
 
Top