我有一张电影计划表:
movie_plans (id, description)
每个计划都有项目,描述一系列电影和持续时间(分钟):
movie_plan_items (id, movie_plan_id, movie_id, start_minutes, end_minutes)
该计划的具体实例发生在:
movie_schedules (id, movie_plan_id, start_at)
但是,可以通过添加分钟来从movie_plan_items和计划开始时间计算计划项目
create view movie_schedule_items as
select CONCAT(p.id, '-', s.id) as id,
s.id as movie_schedule_id,
p.id as movie_plan_item_id,
p.movie_id, p.movie_plan_id,
(s.start_at + INTERVAL p.start_minutes MINUTE) as start_at,
(s.start_at + INTERVAL p.end_minutes MINUTE) as end_at
from movie_plan_items p, movie_schedules s
where s.movie_plan_id=p.movie_plan_id;
我在这个视图上有一个模型(readonly),它工作正常,除了id现在是一个字符串。
我现在想要为以前的各种表添加多态属性(如注释)。因此,对于movie_schedule_items,我需要一个唯一且持久的数字ID。
我有以下两难困境:
关于如何处理这种情况的任何想法?
答案 0 :(得分:1)
我认为你的模型有点过于复杂。 MoviePlan是一种用于每天电影时间表的模式吗?我非常建议删除MovieSchedule,而是允许用户复制现有的MoviePlan。这将a)使您的设计更简单,并且b)为用户提供更多自由,因为时间表通常在现实中不同。星期六是一个额外的日场,周三特别的外国电影,这就是我在我最喜欢的电影院看到的。
最后,对特定电影计划和时间表的电影发表评论对我来说没有任何意义,或者这是一些客户管理的事情,比如“我在7点的搞笑电影节目中的座位是否脏”?