2011-04-05 124 views
0

目前我正在研究一个项目,乍一看,将需要在数据库中的许多表。大多数表格非常简单,但我确实有一个问题。其中一张表格将成为该网站的会员名单,其中包括用户名,密码,联系方式,生物,教育等内容。这是一个简单的设计,但是,每个成员也需要输入其可用性并将其存储在数据库中。可用性被定义为日期和时间范围。如在2011年4月5日美国东部时间下午1点到6点提供,或者在美国东部时间晚上8点以后的每个星期五都不提供。对于单个用户来说,这可能是一个表格,但对于许多用户来说,我不知道如何以可管理的方式组织数据。首先想到的是让代码为每个用户创建一个表,但这可能意味着数据库中的许多表除了少数我用于其他网站功能的表之外。从逻辑上讲,我可以使用附加到Avail_的用户名或者表名即:Avail_UserBob,然后根据需要查询。但我很好奇,如果任何人都可以想到一个更好的选择,而不是在单个数据库中有数百个表的潜力。Mysql数据库设计

编辑 因此,一般的协议是为成员设置一个表,例如唯一的键是ID。然后有可用性的第二个表格(日期,开始时间,结束时间,可用或不可用的布尔值,以及适用的成员ID)。 Django听起来不错,而且工作得很好,但是我没有时间在这个项目上工作时花费学习另一个框架。 2表方法似乎是可行的,但我担心需要使用可用时间的功能所需的额外编码A)构建像页面一样的日历以添加,编辑或删除输入的值,以及B)将可用性与另一个表中的条目进行匹配列出游戏。虽然我可能有更多的编码,但只要数据库是健全的,功能强大的,而且不那么混乱,我就能忍受。感谢输入的人。

+0

你也应该为每个用户制作一个新的程序副本。 – 2011-04-05 16:34:20

回答

0

创建一个表来存储用户。将其主键用作其他表中的外键。

1

不要听起来像一个巨魔,但你应该看看使用Web框架来为你构建大部分。我建议看看Django。有了它,您可以定义您希望存储的字段的类型(以及它们如何相关),并且Django构建所有SQL语句以实现它。你可以免费获得一个漂亮的管理界面,这样工作人员可以登录和添加/编辑/等。

您也不必担心构建登录/授权/更改密码等表单。所有会议内容都由Django负责。你会专注于什么使你的项目/应用程序独特。

它可以让你建立你的项目真的非常快。

djangoproject.org

我没有符合要求的任何其他框架的建议。我确实......但我认为Django会符合这项法案。

+0

一点都不讨厌! – 2011-04-05 16:48:02

+0

Idunno!这就是我一直在解决这个问题,一次又一次地与我的每个客户解决问题的方式。我觉得我应该成为一名Django推销员或其他东西。但真的......它是一个很棒的框架。当我第一次开始时,我不知道一小撮Python。所以我的模板包含了大量的逻辑......随着我在Python上的进展越来越好,我将自己的逻辑进一步推回到视图,模型方法,管理人员等等。现在,我是str8 pimpin。这个孩子也可以。 – Flowpoke 2011-04-05 16:59:27

0

数据库被写入来保存表中的许多行。没有针对表格创建进行优化。因此,为每个用户创建一个新表并不是一个好主意。而是给每个用户一个唯一的标识符,并把可用性放在一个单独的表中。提供一个附加标志以使输入有效或无效。

0

创建用户表;然后为每个用户创建一个可用性表。不要试图将可用性限制在用户表中:这将保证你以后对你的巨大悲痛;你会发现你然后创建一个可用性表。

谷歌数据库规范化,以了解为什么。

从一个遭受这种自我伤害的人身上可以看出来:-)