Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design 与数据库设计抗争_Database Design - Fatal编程技术网

Database design 与数据库设计抗争

Database design 与数据库设计抗争,database-design,Database Design,我正在创建一个数据库,它是一个资产登记簿。每台计算机都有一个属于某个部门的内部版本号,以及需要链接到它的特定软件,以及它的优先级 例如: 内部版本号:12345 地点:办公室 Adobe-Dreamweaver(优先级高) Adobe-Acrobat Reader(低优先级) Adobe-冲击波(优先级中等) 大约有30座独立的大楼和30个部门 我想不出一个理想的方法来做这个?每栋楼都应该有一张单独的桌子吗?救命啊 表格设计的一种方法是: 定义您的实体(您使用的是什么概念) 定义KBM(基于密钥

我正在创建一个数据库,它是一个资产登记簿。每台计算机都有一个属于某个部门的内部版本号,以及需要链接到它的特定软件,以及它的优先级

例如:

内部版本号:12345
地点:办公室

Adobe-Dreamweaver(优先级高)
Adobe-Acrobat Reader(低优先级)
Adobe-冲击波(优先级中等)

大约有30座独立的大楼和30个部门


我想不出一个理想的方法来做这个?每栋楼都应该有一张单独的桌子吗?救命啊

表格设计的一种方法是:

  • 定义您的实体(您使用的是什么概念)

  • 定义KBM(基于密钥的模型)——它们之间的关系是什么?为了将表链接在一起,您需要什么主键和外键

  • 定义FAM(完全属性化模型)——将属性(列)添加到描述每个实体但不参与关系的表中


  • 听起来您的实体是构建、部门和资产(或软件)。从那里开始。找出需要添加哪些键来将它们链接在一起,然后添加其余属性(例如优先级)。

    好的,我们需要两个不同的实体/表:

    **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。建筑编号12345只属于一个部门“办公室”

    在软件表中,您将分别拥有id为1、2和3的Dreamweaver、Reader和Shockwave

    “计算机软件”表定义了特定计算机上的软件。假设我们在计算机1上有Dreamweaver和Shockware,它们的优先级都是“高”,那么ComputerSoftware表中有两行表示这一点。 这方面的数据如下所示:

    Id = 1
    ComputerId = 1
    SoftwareId = 1
    Priority = "high"
    


    希望这能有所帮助,John Wu的答案很好,但我也想举一个非常简单的例子。

    您的问题非常高,不应该有单独的表格,请分享更多关于您的模式、关系等的详细信息。
    Id = 2
    ComputerId = 1
    SoftwareId = 3
    Priority = "high"