我是一名学生,从理论上学习数据库,而不是实践。
但现在我有机会在做这个小团队玩具项目时设计数据库。
这是关于表的描述:
- 剧院
该表包含有关剧院的信息。一个剧院可以举办很多场演出。
- 座位
该表包含有关座位的信息。
座位可以通过主键对来区分:(theater_no, Seat_no)
- 展示
该表包含有关演出的信息。
一个剧院可以举办很多场演出。但演出将只在一个剧院举行。
(所以剧院取决于演出。选择演出后我们可以自动选择合适的剧院。)
- 座位_演出_等级
该表包含每个座位的座位等级。这是“座位”和“演出”之间的映射表,因为同一座位对于不同的演出可以有不同的等级。
[这是一个例子:]
“演出 1”、“演出 2”在同一剧院举行,“剧院 1”和“剧院 1”拥有“座位 1”
那么,“座位 1”是“表演 1”的 A 级,“座位 1”是“表演 2”的 C 级。
- 用户
该表包含有关用户的信息。
- 评论
该表包含有关评论的信息。
- 座位评论
该表包含有关座位评论的信息。
- 显示评论
该表包含有关演出评论的信息。
服务逻辑:
用户登录App,主页面列表显示。
如果用户选择一个节目,则会列出剧院的座位(所选节目发生的位置)。
如果用户选择座位,则会显示有关座位的评论(但评论也取决于节目)。
“3”对我来说是一个主要问题,因为很难设计“评论”表,因为它不仅取决于表演,还取决于座位。
首先,我设计了带有 4 个主键的“reviews”表:(user_id、show_no、theatre_no、seat_no),没有“seat_review”表和“show_review”表。
但我觉得这样太乱了,所以我改变了上面的设计。
我仍然对这个设计感到困惑,我不确定这是否能保持数据完整性、处理速度等。
所以,我的主要问题是:
设计“审查”表有什么好主意吗?(对我来说似乎是(多对多)对多(?)。)
对于左边4个表('theater'、'seat'、'seat_show_grade'、'show')具有循环关系。这是数据库的糟糕设计吗?如果不好的话我该如何改变呢?
感谢您的帮助。
附:
过去使用映射表的想法。
(我说的是4个主键,没有'seat_review'和'show_review')