我正在创建一个资产注册数据库。每台计算机都有一个构建号,属于一个部门,某些软件需要链接到它,以及它的优先级。
例如:
内部编号:12345
地点:办公室
Adobe - Dreamweaver(优先级高)
Adobe - Acrobat Reader(低优先级)
Adobe - Shockwave(优先媒体)
大约有30个独立的建筑物和大约30个部门。
我想不出一个理想的方法吗?每栋建筑物都应该有一张单独的桌子救命啊!
答案 0 :(得分:1)
好吧,我们需要几个不同的实体/表格:
**Department**
BuildNumber/Id - Primary Key
Name
**Computer**
Id - Primary Key
BuildNumber - FK to department.buildnumber
**Software**
Id - Primary Key
Name
**ComputerSoftware**
Id - Primary Key
ComputerId - FK to computer.id
SoftwareId - FK to software.id
Priority
通过这种方式,您可以拥有一台ID为1且计算机编号为12345的计算机.Buildnumber 12345只属于一个部门,即“办公室”。
在软件表中,您将分别使用ID为1,2和3的Dreamweaver,Reader和Shockwave。
“ComputerSoftware”表定义了特定计算机上的软件。假设我们在计算机1上安装了Dreamweaver和Shockware,两者都具有优先级“高”,计算机软件表中将有2行代表这一行。 这个数据看起来像这样:
Id = 1
ComputerId = 1
SoftwareId = 1
Priority = "high"
和
Id = 2
ComputerId = 1
SoftwareId = 3
Priority = "high"
希望这会有所帮助,John Wu的答案很棒,但我想给出一个非常简单的例子。
答案 1 :(得分:0)
表格设计的一种方法就是这样:
定义您的实体(您使用的是哪些概念)?
定义KBM(基于密钥的模型) - 它们之间的关系是什么?为了将表链接在一起,您需要哪些主键和外键?
定义FAM(完全归因模型) - 将属性(列)添加到描述每个实体但不参与关系的表中。
听起来您的实体是构建,部门和资产(或软件)。从那里开始。找出需要添加哪些键才能将它们链接在一起,然后添加其余属性(例如优先级)。