I am working on my first database project and just needed to air my thinking and hope for a little input.
Basically I am working on a system to track computer software licenses. I am trying to keep track of what licensed software is installed on an organization's computer system so I know if a program that has been installed on a PC is covered by an appropriate license.
So far I have an entity called LICENSE with the attributes Lic_Id, ProductName, Version, Quantity, Type, and ExpirationDate.
I have also got an entity called COMPUTER and another entity called INSTALLED_SOFTWARE that will be related to COMPUTER. INSTALLED_SOFTWARE will be the table that has the instances of all licensed software installed on a specific computer and has attributes ProductName, Version, Lic_Id, Computer_Id. An example instance would probably look like:
Windows, XP Pro, 22, 30.
My thinking is getting clouded though when I deal with upgrades. In that case for example, say I have Windows XP Pro installed on a computer, but it was an upgrade. In that case I would need to know that a computer is covered by a license for the upgrade AND a license for a previous version (ie Windows XP Home).
Seems to me that a license is for a particular product, so that is the table where you should be storing product name, version, etc. Not in the INSTALLED_SOFTWARE table, which should only relate physical computers to the software records in the LICENSE table.
If it's not practically useful, then it's practically useless.