首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL数据库设计链接3个表

SQL数据库设计链接3个表
EN

Stack Overflow用户
提问于 2014-07-02 15:35:59
回答 1查看 417关注 0票数 0

我正试着想出设计数据库的最佳方法,我真的在脑子里绕来绕去,想不出答案!

数据库的目的是显示计算机上安装了什么软件。我希望能够:

  • 按地点分组计算机
  • 搜索软件并使用该软件显示位置
  • 拥有相同软件的不同版本(我也可以在其中搜索特定版本的软件)
  • 对一个位置进行概述(计算一个位置中有多少台机器)
  • 大致了解一个位置(显示所有可用的不同软件,以及每个软件包安装了多少台计算机--,这让我非常头疼!)

我所拥有的表格如下:

  • 计算机
  • 位置
  • 软件
  • software_computer_relation_table

这些表格细分如下:

  • 计算机表中有计算机名称和位置ID。
  • 位置表有位置ID,以及该位置的细分(建筑物、楼层号和房间号)。
  • 软件表具有软件id、软件名称和版本号(如果软件名称相同,则为,但版本号不同-创建了新行)。
  • software_computer_relation_table --它有计算机名的ID和软件的ID (不能使用软件名作为主键,因为多个行是用不同的版本创建的)。

我遇到的主要问题是,当我试图概述可用软件的位置时(忽略了版本的),以及有多少台计算机在该位置安装了该软件,因为软件表软件名称列并不是唯一的(因为可能有不同的版本),一个位置似乎有更多的软件安装了实际可用的计算机(因为软件名称可以在一台机器上出现两次,因为版本号不包括在内)。

我认为这个问题的解决方案是创建一个计算机表、一个软件名称表和一个软件版本表(该表链接到软件名称表),但是我想不出如何以我想要的方式将所有三个表连接在一起。

请救救我!

我们非常感谢您提供的任何帮助/指导/最佳实践!我不熟悉SQL :)

谢谢,乔什

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-02 15:59:55

您的模式应该可以工作。第四个表应该有计算机id,而不是名字。您将加入(我将在表中使用数字1-4 )1和2在位置id上,2和4在软件id上。软件id上的3和4(不确定您是否担心这个名称--您设计的id是跟踪它的正确方法,因为供应商确实会更改名称)。很明显,1,2和4使用这两个连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24535334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档