俱乐部会员系统数据库需要哪些表格?

Kat*_*ine 0 java mysql database-design system system-analysis

这个俱乐部会员制度是用java制作的.我已经完成的是一个数据库,其中有一个名为accounts的表,其中存储了已注册的成员和管理员,该表的字段是username,firstname,lastname,password,date_join,role等...

到目前为止,我们的程序所做的是,如果该人注册,那么他自动成为会员,直到管理员也将他作为管理员推广,会员在系统中具有有限的权限,而不像具有完全权限的管理员.

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

由于我们在俱乐部缺乏经验,我们不知道应该如何实施这一额外功能.是否需要为付款创建另一个表并将其链接到帐户表?在该计划中,注册用户是否应该在成功注册之前首先支付一定的俱乐部费用?或者他现在可以注册然后再付款?当他的帐户到期时,如果他没有续订会员资格,他是否会被从数据库中删除?

任何一个对这种系统有所了解的人,可以建议一个好的实现吗?提前致谢.

Edw*_*uck 5

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

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

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

然后看看所需的形容词.找到一些自己或组合的,识别表中的条目.一些人认为,一个人可以通过它们的名称来标识,这意味着每一个不相同的名称访问一个不同的人,并在访问相同的每个人的名字相同结果的结果.如果你曾经遇到两个约翰·史密斯,或曾经因婚姻改变了你的名字,你可以立即看到单独的名称列不是确定身份的一种理想的方式.标识字段的集合称为主键.

然后想想名词是如何相关的.如果会员资格与人员不同,那么您需要将两者加入.连接表有三种基本技术,并且有更多高级技术可能最好在以后应用.

  1. 一个X(Person)只能与一个Y(Membership)关联,然后X和Y表可能是合并到一个表中的候选者.这称为1:1关系.

  2. 一个X(Person)与许多Y(成员资格)相关联,然后Y(成员资格)表应包含对其与之关联的X(Person)的主键的外键引用.这称为1:N关系.

  3. 许多X(人)与一个Y(成员资格)相关联,然后X(人)表应包含对其与之关联的Y(成员)主键的外键引用.这称为N:1关系

  4. 许多X(人)与许多Y(会员)相关联.总之,一个人可能有具体的成员,是一个组成员的一部分,有可能买进了多成员包,和/或可能只有一个成员.在这种情况下,您需要管理与构造的"关系"表的关系,该表包含两个外键引用,每个主键对应一个X和Y.最后,这两个外键引用可能应该(组合)为关系XY(PersonMembership)表的主键.

还有其他连接表的方法,但基本上它们是最后一种技术的扩展,你可以增加连接表的数量.

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