Sql server 2005 密钥管理器数据库设计
我的任务是使用SQL Server向现有web应用程序添加一些功能 我的客户的业务提供一项服务,向员工发放钥匙,然后员工前往不同的地点执行要求的工作。她想知道谁拥有客户的钥匙。他们有大约100-125名客户和6名员工。她将是唯一使用web gui发布和返回密钥的人 为了获得灵感,我去了谷歌,找到了一个名为KEY ORGANIZER的演示程序,它可以在桌面上运行。它完全符合我的客户的要求,但它是一个桌面应用程序,而不是web应用程序。所以,我想我应该对它进行逆向工程,并根据客户的需求进行定制。桌面应用程序的功能远远超出了我的客户端需要。以下是她正在寻找的内容的高层次概述: 钥匙的发放:Sql server 2005 密钥管理器数据库设计,sql-server-2005,database-design,Sql Server 2005,Database Design,我的任务是使用SQL Server向现有web应用程序添加一些功能 我的客户的业务提供一项服务,向员工发放钥匙,然后员工前往不同的地点执行要求的工作。她想知道谁拥有客户的钥匙。他们有大约100-125名客户和6名员工。她将是唯一使用web gui发布和返回密钥的人 为了获得灵感,我去了谷歌,找到了一个名为KEY ORGANIZER的演示程序,它可以在桌面上运行。它完全符合我的客户的要求,但它是一个桌面应用程序,而不是web应用程序。所以,我想我应该对它进行逆向工程,并根据客户的需求进行定制。桌面
•客户ID
•键数量(新字段?)
•键标签(新字段?) 员工\u tbl(现有表格)
•员工ID
•Fn
•Ln KeyJournal\u tbl(新表)
•日志ID
•行动日期
•ActionPerformedID(钥匙问题、钥匙退回、钥匙丢失等)
•客户ID
•员工ID
•库存(从客户处收到的钥匙总数-或者是否应在客户项下?
•发行人提交日期 关键库存\u tbl(新表)
•密钥ID
•客户ID
•KeyTotal
注意:我添加SQL Server 2005标记仅供参考。我不需要SQL语句的帮助,以防标签有误导性。我的倾向与您的非常接近。在这里:
Customer
customer_id
name, address, etc, whatever reference info you need
Employee
employee_id
name, etc
KeyInventory
key_id
description
customer_id
qty
KeyCheckout
employee_id
key_id
checkout_date
return_date
注:
我在KeyInventory上做了一个描述,因为我假设一个客户可以有多个密钥,并且需要区分它们,比如“Apt 1”和“Apt 2”,或者“仓库”和“办公室”
当给员工一个密钥时,创建一个带有给定日期的KeyCheckout记录。归还钥匙时,请填写归还日期。如果返回日期为空,则密钥仍然存在
要查找哪些员工拥有customer@cx的密钥,请执行以下操作:
选择员工id
来自keyc
在i.key\u id=c.key\u id上加入KeyInventory i
其中i.customer_id=@cx
返回日期为空
要查找key@kx中还有多少可用:
选择i.qty-计数(c.employee\U id)
来自KeyInventory i
在c.key\u id=i.key\u id和c.return\u date上加入KeyCheckout c
其中i.key_id=@kx
等等
您肯定希望在return\u date上有一个索引,或者可能需要KeyCheckout(key\u id,return\u date)和KeyCheckout(employee\u id,return\u date),因为这个表会变得非常大,如果没有索引,查询速度会非常慢
我认为您的日记账表与我的结帐类似。我只是将checkout和return字段放在一个记录中,以便更容易地确定密钥是否仍然存在。对于输入和输出的单独记录,您必须匹配它们,这是一种痛苦
不要将数量放入日记账类型记录中。这不是“事务”的属性,而是键本身的属性。它属于库存表
不要将关键数量放在客户记录中。如果您需要知道客户有多少不同的密钥,只需从keyinventory中选择count(*),其中customer_id=@cx。将此计数存储在客户记录中只会产生与实际关键记录数不匹配的可能性
我不确定“钥匙标签”是什么。如果这是对密钥的描述,则它属于密钥库存记录,因为客户可能有多个密钥。我认为说客户只能拥有一把钥匙是没有道理的。即使今天您的客户恰好是这样,似乎一个客户将来可能有多个密钥,也可以考虑使用多个密钥
我认为您的库存是非序列化的,即同一把锁的3把钥匙没有区别,只是“数量3”,对吗?如果他们