视频/ DVD租赁系统的数据库设计,无法决定做什么,任何建议或替代方案?

时间:2013-01-30 15:22:54

标签: database database-design

此处的表格允许我租借一个视频,但我希望能够为一个租赁ID或一个租赁记录租用多个视频。

视频(videoID,videoName,ageClassification,流派)

租赁(RentalID,videoID,customerID,dateHired,dateDueBack,价格,逾期(是/否))

对于包含视频ID的视频ID,我是否使用逗号分隔的值。

或者可能有一个名为rented_videos的单独表格链接到租赁表,因此每次租用可以租用1个或多个视频。

甚至是替代解决方案。

请原谅我的关系模式,我不是数据库专家。

2 个答案:

答案 0 :(得分:1)

你绝对不应该使用csv列表,如果你想查找特定视频的所有租借,这将导致难看的索引。

处理此问题的最常见和最简洁的方法是创建一个中间表,其外键指向videoID和RentalID。 这应该是你的选择。

答案 1 :(得分:1)

像往常一样,没有单一的正确答案 - 但在错误的答案中,列表中的CSV列表相当高!

首先,企业是否将“租赁”视为一种独特的事物,或者每个视频租赁都是一个单独的事件?我不太了解业务有意见 - 但我想象业务领域有“租赁”意味着租用单个标题,价格和返回日期(不同的视频似乎有不同的租赁期间 - 新版本2天,一周的老电影;也许某处有“租赁类型”表格。单笔交易 - 即我去视频商店 - 将包括一个或多个租赁,每个租赁都有其成本和到期日;如果您采用某种租赁方式,我似乎还记得折扣的可能性。

所有这些都表明:

Video
-------
Video_ID
Rental_scheme_ID
Name
...

Rental_scheme
--------
Rental_scheme_id
Length_in_days
Cost

Rental
------
Video_id
transaction_id


Transaction
----------
Customer_id
Date
Undiscounted_price
Discount
NetPrice
...

如果这种方式过度设计,并且业务人员说“不,我们只想跟踪谁借了什么”,请使用现有架构并为您租借的每部电影插入新行。