【问题标题】:Database design for reservation of computers in laboratories实验室计算机预约数据库设计
【发布时间】:2019-03-02 02:52:11
【问题描述】:
我想创建一个应用程序,如果用户想在特定时间使用它,可以让他们预订实验室中的计算机。用户可以预订未来 15 天的计算机。那么,我应该如何为这个应用程序设计数据库。
【问题讨论】:
标签:
ruby-on-rails
database
database-design
entity-relationship
【解决方案1】:
首先定义您的实体和属性。最好先做个概念设计。
比你设计的更合乎逻辑。
例如,您的实体可能是:
用户、计算机、预订。
您的属性可能是:
用户(SomeUniquePersonalIDnumber、姓名、姓氏、电子邮件*、电话号码*)
PrimaryKey 以粗体显示。带星号 *可选
计算机(UniqueComputerSerialNumber、NumberOfComputerInLab)
RESERVATIONS(AutoincrementNumber、UserPK、ComputerPK、DateOfReservation、TimeFrom、TimeTill)
PrimaryKey 由三个属性组成,使其独一无二。随着时间的推移,同一用户可能会保留同一台计算机,但 AutoincrementNumber 字段将使复合 PK 成为唯一的。
RESERVATIONS(UserPK) 引用 USER(SomeUniquePersonalIDnumber)
RESERVATIONS(ComputerPK) 引用 COMPUTERS(UniqueComputerSerialNumber)
- 定义这些属性的字段类型
(Integer/Varchar/...) 基于您想要的查询语言
使用。
- 将以上所有内容转换为创建数据库的命令,
桌子等。
【解决方案2】:
随便挑一张纸,开始标准化https://en.wikipedia.org/wiki/Database_normalization。
如果我在您的问题中查找实体,我会看到以下实体:
user
computer
booking
然后你需要弄清楚哪些属性属于这些实体以及它们之间的关系。如果您愿意,可以创建 ERD 并开始创建 Ruby on Rails 模型。
在 Ruby on Rails 中,如果您生成模型,该模型默认具有 created_at 日期时间字段。我认为您可以使用它来确定具体时间并检查自创建此预订以来是否已过去 15 天。