2012-12-05 26 views
-1

这个俱乐部会员系统是用java制作的。我已经做了什么已经是一个数据库帐户,其中注册的成员和管理员存储在这个表,这个表的字段是用户名,名字,姓氏,密码,date_join,角色等...俱乐部会员系统数据库所需的桌子是什么?

我们的计划到目前为止,如果人员注册,那么他自动成为成员,直到管理员也将他作为管理员升级为成员,与具有完全权限的管理员不同的是,成员具有有限的系统权限。

我们的教授说我们需要修改我们的计划,并为任何想加入我们俱乐部的人添加付款要求,并且会员资格应该在一定的时间内到期。

由于我们缺乏俱乐部经验,我们不知道我们应该如何实施这个附加功能。是否需要为付款创建另一张表并将其与帐户表链接?而在该计划中,注册用户是否应该先支付一定的俱乐部费用才能成功注册?还是他现在可以注册然后付款?当他的账户到期时,如果他没有更新其会员资格,他会从数据库中删除吗?

任何人有这种系统的想法,并可以建议一个良好的实施? 在此先感谢。

+1

没有“一刀切”。你必须做分析你的需求的工作,因为分析需求是这个项目最重要的部分。 –

回答

3

从简单开始,命名您想要管理的所有名词。那些是你的表名。

然后想想你可能想跟踪的每个名词的所有形容词。如果一组形容词适合某个类别,则在相关表格中创建一列。如果一个形容词总是适用于每个可能的名词,那么就忽略它。数据库旨在跟踪不断变化的数据,常量最好不要存储。

然后想起那些不能错过的形容词。如果您允许选择退出生日提醒,也许可能会遗漏一个人的出生日期。也许你的俱乐部是一个以生日为导向的俱乐部,如果缺少一个名字就等于混乱。

然后看看所需的形容词。找到一些自己或组合,确定在表中的条目。对于某些人来说,一个人可能会以他们的名字来标识,这意味着每个不相同的名字都会导致访问不同的人,并且每个相同的名字都会导致访问同一个人。如果你曾经见过两个约翰史密斯,或者因为婚姻而改变过你的名字,你可以立即看到单独一个姓名列并不是确定身份的理想方式。识别字段的集合称为主键。

然后想一想这些名词是如何相关的。如果一个会员与一个人不一样,那么你需要一起加入。有三种连接表的基本技巧,还有更高级的技术可能会在以后应用。

  1. 一个X(Person)只能与一个Y(Membership)相关联,那么X和Y表可能是合并到一个表中的候选人。这被称为1:1关系。一个X(Person)与许多Y(成员资格)相关联,那么Y(成员资格)表应该包含一个与它关联的X(Person)的主键的外键引用。这被称为1:N关系。许多X(Person)与一个Y(Membership)相关联,那么X(Person)表应该包含对与其相关联的Y(成员)的主键的外键引用。这称为N:1关系

  2. 许多X(人员)与许多Y(会员资格)相关联。简而言之,一个人可能拥有特定的会员资格,成为团体会员资格的一部分,可能购买了多个会员资格套餐,和/或可能只有一个会员资格。在这种情况下,您需要使用构建的“关系”表来管理关系,该关系表包含两个外键引用,一个位于X和Y的每个主键。最后,这两个外键引用可能应该XY(PersonMembership)表格的关系的主键。

还有其他连接表的方式,但基本上它们是最后一种技术的扩展,在这种情况下,您可以增加连接表的数量。

这会给你一个好的开始,你很快就会看到你所做的选择将不会和其他任何人做出的选择一样,这就是为什么只有很少的标准数据库表集合的原因。一旦你建立并运行了一个基本的框架,你会发现你总是可以同时提取两组相关的数据,然后(如果你走得那么远),你可能会考虑违反一些性能规则。只是不要试图从一开始就违反规则;你必须遵守规则以知道何时打破它们。这样,你就会知道自己在获得目标方面失去了什么,并且确实避免了实际使用中引入的陷阱。

相关问题