基于列表的数据库设计

时间:2011-03-11 12:04:39

标签: mysql database database-design

有人可以根据以下标准帮我设计数据库/表吗?

需要一个电子商务网站,允许访问者浏览,搜索和购买电影。适用以下业务逻辑:

  1. 每部电影都有DVD或蓝光格式,有不同的股票代码和价格。网站管理员可能会在将来添加其他格式。
  2. 电影应该有一个标题,描述,发布年份以及十分之一的“星级”。
  3. 电影与没有或更多的演员相关联,演员可以与任何一部或多部电影相关联,因为有些电影可能是纪录片(没有演员)。
  4. 电影可以与一种或多种类型相关联(例如动作,冒险,科幻等)。
  5. 流派和演员的数量可能会发生变化,因此网站管理员需要能够随着时间的推移添加/编辑任意数量的流派和演员。
  6. 网站的访客应该可以通过按演员或流派浏览来查找电影。当他们这样做时,他们应该能够看到与他们选择的演员/类型相关的所有电影的列表。
  7. 要从网站购买,访问者必须注册其详细信息才能成为用户。
  8. 用户将拥有与其帐户相关联的一个或多个地址。当他们将来登录系统时,他们之前输入的所有地址都应该可供他们选择最新订单。他们还应该能够随时在其帐户中添加新地址。
  9. 订购时,用户将从可用电影中选择一个或多个项目(以特定格式)。他们需要从他们之前输入的帐户中选择帐单并提供地址,并通过信用卡支付订单。
  10. 由于产品价格会随着时间的推移而变化,系统应记录订单中每件商品的价格以及整个订单的总价格。
  11. 不需要跟踪库存水平 - 可以假设所有产品一直有库存。

2 个答案:

答案 0 :(得分:2)

如果这是家庭作业或课堂项目,那么你真的需要开始学习规范化。请查看MySQL网站上wikipedia或此introduction上的文章

如果这是一个专业项目,那么您需要专业的帮助来设计/开发您的电子商务网站。

答案 1 :(得分:1)

这是我能想到的东西,希望它能满足您要求中提到的所有标准。我是在SQL Server中设计的,因为我在这台机器上没有MySQL。

Database schema

设计数据库的步骤(实体关系建模)

  1. 从需求中识别实体。实体是保存信息的对象(通常表示现实世界的实体,如人,汽车,银行,员工等)。在您的情况下,可识别的实体是:电影,演员,用户,订单
  2. 一旦确定了需求中的实体,请转到实体的决定属性(或属性)。属性是您将实体与之关联的属性。例如,人们可以通过其制造商,型号,颜色,引擎容量等识别汽车。在您的情况下,电影实体的属性将是名称,类型,ActorInFilm(s),格式,价格
  3. 确定实体之间的关系。在你的情况下,电影与演员有关系。关系是:一部电影可以有零个或多个演员。并且,一个演员可以在一部或多部电影中演出。因此电影和演员是相关的。
  4. 确定关系的基数。基数可以用简单的术语解释为有多少实体实例参与关系。 例如,雇主可以拥有1名或更多雇员。一名雇员只能由一名雇主雇用。在这种情况下,有2个实体:雇主和雇员。他们分享雇佣的关系。在你的要求中,电影和演员是分享关系的实体 中的行为(演员电影中扮演)。因此,在这种情况下,基数将是一对多(电影到演员)(一个演员可以在许多电影中扮演)和零到多(演员到电影)。
  5. 完成此部分后,您将拥有零正态实体关系图。然后是规范化。您可以在另一篇帖子here上阅读相关内容。
  6. 在对实体关系进行规范化后(通常第3种常规形式就足够了),您可以在SQL设计软件(MySQL等)中实现数据库设计
  7. 执行上述步骤的最佳方法是拿一张纸并以表格格式编写实体和属性,然后将它们链接到其他实体(以表示关系)。

    您可以在数据库概念(包括规范化)上引用任何好的book,或者只在Google上搜索(关键字:数据库规范化数据库设计实体关系建模等)。我上面解释的非常简要,你需要自己发现其余的数据库概念。

    实体关系图通常缩写为ER图。