Database 房间/人员管理应用程序数据库结构
我正在尝试构建一个管理儿童托儿所的应用程序,特别是管理哪个孩子在托儿所的哪个房间的哪个位置 苗圃连锁店有几家分店。每个分支机构都有几个房间,每个房间对应一个年龄段,容量有限 孩子们提前一个月到托儿所登记,并按月份分组登记,所以他们有一个开始月份和预期的结束月份。他们可以在任何一天的上午、下午或同时预订。因此,例如,一个孩子可能注册希望被预订:Database 房间/人员管理应用程序数据库结构,database,database-design,data-structures,Database,Database Design,Data Structures,我正在尝试构建一个管理儿童托儿所的应用程序,特别是管理哪个孩子在托儿所的哪个房间的哪个位置 苗圃连锁店有几家分店。每个分支机构都有几个房间,每个房间对应一个年龄段,容量有限 孩子们提前一个月到托儿所登记,并按月份分组登记,所以他们有一个开始月份和预期的结束月份。他们可以在任何一天的上午、下午或同时预订。因此,例如,一个孩子可能注册希望被预订: mon AM tues PM wed AM PM thurs AM fri AM PM sat sun AM 孩子3岁了
mon AM
tues PM
wed AM PM
thurs AM
fri AM PM
sat
sun AM
孩子3岁了,所以房间里的毛毛虫或兔子都适合他。我需要检查这些房间是否有空房,如果有,那么记录下这个孩子将从X月到Y月被预订到那个房间
所以我有一张儿童桌和一张房间桌,但我发现很难根据孩子的年龄来分配房间,基本上也很难记录谁在哪个房间
我知道这可能很简单,但数据库结构总是让我头疼
设置我的数据库以记录孩子和房间以及谁在哪里的最佳方法是什么?以下结构应该让您知道从哪里开始。您可以查询
children
表,找出指定给特定分支的特定房间的子房间数量,并将其与rooms
表中声明的房间容量进行比较。rooms
表还告诉您允许的年龄范围
在现实世界中,还有其他需要考虑的事情:所有分支是否都有相同的房间?如果多个分支机构有一个“兔子”房间,那么所有这些兔子房间是否限制在相同的年龄范围和容量内?一个孩子可以去不同的分支机构吗?或者他们只能去他们注册的分支机构吗
这样的问题的答案可能会影响数据库的设计
bookings
id unsigned int(P)
child_id unsigned int(F children.id)
beg datetime
end datetime
+----+----------+---------------------+---------------------+
| id | child_id | beg | end |
+----+----------+---------------------+---------------------+
| 1 | 1 | 2013-11-14 07:30:00 | 2013-11-14 19:30:00 |
| 2 | 2 | 2013-11-14 07:30:00 | 2013-11-14 19:30:00 |
| 3 | 1 | 2013-11-15 07:30:00 | 2013-11-14 19:30:00 |
| 4 | 2 | 2013-11-15 07:30:00 | 2013-11-14 13:00:00 |
| 5 | 2 | 2013-11-14 20:00:00 | 2013-11-14 22:00:00 |
| .. | ........ | ................... | ................... |
+----+----------+---------------------+---------------------+
branches
id unsigned int(P)
name varchar(20)
+----+--------------+
| id | name |
+----+--------------+
| 1 | North Branch |
| 2 | South Branch |
| .. | ............ |
+----+--------------+
branches_rooms
id unsigned int(P)
branch_id unsigned int(F branches.id)
room_id unsigned int(F rooms.id)
*branch_id and room_id form a unique composite key to prevent someone
from saying the North Branch has multiple "Rabbits" rooms for example.
+----+-----------+---------+
| id | branch_id | room_id |
+----+-----------+---------+
| 1 | 1 | 1 |
| 2 | 2 | 2 |
| .. | ......... | ....... |
+----+-----------+---------+
checks
id unsigned int(P)
child_id unsigned int(F children.id)
in datetime
out datetime
+----+----------+---------------------+---------------------+
| id | child_id | in | out |
+----+----------+---------------------+---------------------+
| 1 | 1 | 2013-11-13 07:33:51 | 2013-11-13 17:34:13 |
| 2 | 2 | 2013-11-13 07:41:33 | 2013-11-13 17:22:18 |
| 3 | 1 | 2013-11-14 07:28:15 | NULL |
| 4 | 2 | 2013-11-14 07:58:42 | NULL |
| .. | ........ | ................... | ................... |
+----+----------+---------------------+---------------------+
children
id unsigned int(P)
name varchar(30)
branch_room_id unsigned int(F branches_rooms.id)
beg date
end date
...
+----+-------+-----+----------+-----+
| id | name | branch_room_id | ... |
+----+-------+-----+----------+-----+
| 1 | Billy | 1 | ... |
| 2 | Susie | 2 | ... |
| .. | ..... | .............. | ... |
+----+-------+-----+----------+-----+
rooms
id unsigned int(P)
name varchar(20)
min_age unsigned int
max_age unsigned int
capacity unsigned int
+----+--------------+---------+---------+----------+
| id | name | min_age | max_age | capacity |
+----+--------------+---------+---------+----------+
| 1 | Caterpillers | 0 | 3 | 10 |
| 2 | Rabbits | 2 | 4 | 15 |
| .. | ............ | ....... | ....... | ........ |
+----+--------------+---------+---------+----------+
嗨,本尼,谢谢你花时间把这些都打印出来。我真的很感激。为了回答您的问题,每个分支机构都会有不同的房间和不同的名称。一个孩子只能去他们签约的房间。但我想我能处理好这一切。这是检查一个房间里有多少孩子以及什么时候。所以你的支票表是个好主意。如果我有一个房间有一个完全独特的id,我可以使用它和孩子的id来存储他们在哪里。以前,我认为开始和结束日期应该在children表中。我想那是对的,不是吗?@ZaphodBeeblebrox-你可能在
儿童表中也有一个开始和结束日期。checks
表就像一个“时钟”表——孩子到房间时登记,离开时登记。我不认为是你要求的,但当我写这篇文章时,我正在思考我儿子的日托中心是如何运作的:-)嗯。。。你给了我很好的思想食粮。我认为他们不需要办理入住/退房手续,因为他们会参加,所以这不成问题。我现在的主要问题是如何处理孩子想要的行程。例如,如果一个孩子需要预定周一上午和下午,以及周四下午,那么我该如何记录?在mo我所能想到的是,我会有另一张桌子,“行程表”,上面有周一上午、周一下午等栏目。。。(以及child_id)然后输入1或0。你怎么看?再次感谢您的输入,非常感谢:)@ZaphodBeeblebrox-我编辑了我的答案,并添加了一个预订表。这样你就可以随时安排孩子。在我的示例数据中,您可以看到Susie的日程安排是2013年11月14日星期五上午7:30到下午1:00,然后她会在晚上8:00到10:00回来(爸爸妈妈必须有一个“约会之夜”)。