Results 1 to 2 of 2
  1. #1
    Join Date
    Mar 2012
    Posts
    2

    Unanswered: Creating a Database For Computer Software & Hardware

    Hello,

    I am creating a database for software and hardware and am trying to get it to third normal form.

    Any help would be appreciated.

    What I would like to know is what kinds of keys should I use and how to structure the data.

    For instance, in the software side of the database each computer can have multiple instances of software installed, however, no two pieces of software can be installed on the same machine twice, so should the software name be the primary key in the software table or am I thinking about that wrong?

    Also, for the hardware, each particular computer has several different components. However each type of component may be in the system more than one time i.e. have two hard drives or have two CPU's or more than one stick of RAM. How would be the best way to structure this table? I am trying to find the best solution so that I can at the very least get this to third normal form. Here are some data examples :

    Computer Name : KNDENN1, KNDENN2, HDKENN1, HDKENN2 etc.

    Software Name : Word 2010, Word 2007, Word 2000, Excel 2003, Firefox, IE, etc.

    Hardware Component Names : HDD1, HDD2, CDROM1, CDROM2, DVDROM1, RAM Stick 1, RAM Stick 2, Processor 1, Processor 2, etc.

    Any help is appreciated. Thank you!

  2. #2
    Join Date
    May 2004
    Location
    New York State
    Posts
    1,178
    Here are some data examples :

    Computer Name : KNDENN1, KNDENN2, HDKENN1, HDKENN2 etc.

    Software Name : Word 2010, Word 2007, Word 2000, Excel 2003, Firefox, IE, etc.

    Hardware Component Names : HDD1, HDD2, CDROM1, CDROM2, DVDROM1, RAM Stick 1, RAM Stick 2, Processor 1, Processor 2, etc.
    Let's work this backwards; it might be easier to swallow.

    tblHWareCmpnts: pk, CmpntName

    tblSWare: pk, SName

    tblCompName: pk, CompName, etc. (such as model, mfr, s/n, ad infinitum)

    tblCompCmpnts: fkCompName, fkComponent (either soft or hard), CVersion (e.g. if you have different versions of IE).

    You mention Word with three different versions. I would simply enter (in tblSWare) "MS Word" once. In the tblCompCmpnts table I would put the fkComponent corresponding to "MS Word" and put the version info in the CVersion field. That way, if/when you phase out the older versions of Word you won't have to carry so many obsolete entries in the tblSWare file.

    Incidentally, I would have another table, tblHWareInfo, with s/n, date of purchase, vendor, etc. info for when you need warranty repair or other info, such as hard drive capacity, etc. unless you never take it apart and send the whole thing for repair/upgrade.

    Also, you would want to keep a soft log of each computer's service record. This should also be a separate table, tblSrvcRecs: fkCompName, SDate, SVendor, SCost, and any other pertinent info.

    It's hard to know if a computer name like "KNDENN1" is based on its main function or it's main user. My scheme above is OK if it's based on main function. However, if it's based on user, you might want to rethink the scheme the first time you promote someone, you give him a new and upgraded computer, and give his old computer to someone else, which will, of course, cause a ripple effect, including a nightmare of keeping track of who has what computer name. Notice that I didn't put the user's name into any of the tables above. It's because you need to resolve this issue first.

    Sam

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •