【发布时间】:2014-07-02 15:35:59
【问题描述】:
我正在努力思考设计数据库的最佳方法,但我真的在脑子里转来转去无法想出答案!
数据库的目的是显示计算机上安装了哪些软件。 我希望能够:
- 按位置对计算机进行分组
- 搜索软件并使用该软件显示位置
- 拥有同一软件的不同版本(我也可以在其中搜索特定版本的软件)
- 了解一个位置的概况(计算一个位置有多少台机器)
- 了解某个位置(显示所有可用的不同软件,以及每个软件包安装了多少台计算机 - 这让我很头疼!)
我的桌子是:
- 计算机
- 位置
- 软件
- software_computer_relation_table
表格分为:
- 计算机表中包含计算机名称和位置 ID
- 位置表包含位置 ID,以及位置细分(建筑物、楼层号和房间号)
- 软件表包含软件ID、软件名称和版本号(如果软件名称相同,但版本号不同,则创建新行)
- software_computer_relation_table 这包含计算机名称的 ID 和软件的 ID(不能使用软件名称作为主键,因为创建了多个不同版本的行)。
我遇到的主要问题是,当我尝试概述可用软件的位置时(忽略版本),以及在该位置安装了该软件的计算机数量,因为软件表 softwarename 列不是唯一的(因为可以有不同的版本),一个位置可能会出现更多的软件安装该机器实际可用(因为软件名称可以在一台机器上出现两次,因为版本号不是包括)。
我认为解决方案是创建一个计算机表、软件名称表和一个软件版本表(链接回软件名称表)但是我想不出如何将所有三个表链接在一起我想要的方式。
请帮帮我!
非常感谢您提供的任何帮助/指导/最佳实践!我是 SQL 新手 :)
谢谢, 乔什
【问题讨论】: