IS造型电影演员
ER modelling film actor
我想使用 E-R 模型为电影和电视剧数据库设计数据库模式,并使用关系模型相应地设计 tables。必要的信息如下:
实体:电影、演员、电视剧。
电视剧或电影必须有演员。演员可以同时扮演两者。
相应地假设列并提及主键、弱实体和强实体。
这是我试图解决的问题。我对此毫无疑问。
- 第一种方法
- 演员
- actorID (PK)
- 演员姓名
- 电影
- actorID (FK:Actor) (PK)
- 电影ID
- 电影名称
- 电影类型
- 电视剧
- actorID (FK:Actor) (PK)
- tvsID
- 电视名称
- 电视类型
在这种情况下,模型将具有以上三个具有给定属性的 table。它维持每部电视剧或电影必须有演员并且演员可以同时出演两者的标准。但是如果一部电影有 three/four 个演员,那么我们必须输入 movieName,movieGenre 以获得相同的 movieID。这是信息的重复,我不想那样。
- 第二种方法
- 演员
- actorID (PK)
- 演员姓名
- 电影
- 电影ID
- 电影名称
- 电影类型
- 电视剧
- tvsID
- 电视名称
- 电视类型
- 演员电影
- actorID (FK:Actor) (PK)
- movieID(FK:电影)(PK)
- 演员电视剧
- actorID (FK:Actor) (PK)
- tvsID (FK:TVSeries) (PK)
这里因为我们添加了ActorMovies和ActorTVSeries,所以我们不需要重复信息。但我不知道如何确保每部电影或电视剧都有一个演员,因为它们在不同的地方table。我也想知道弱实体和强实体。请帮助我。
我认为你把事情复杂化了。您已确定您的实体:
- 演员
- 电影
- 电视剧
如果一个演员既能演电影又能演电视剧,那就是你的关系:你需要 table 将演员加入电影,也需要演员加入电视剧。这会给你五个 tables:
actors
movies
tv_series
actors_movies
(加入table)
actors_tv_series
(加入table)
由于以下原因,您不能在 架构 中的关系数据库中强制执行此操作:
作为创建关系数据库的一种方法,您可以创建 CONSTRAINTS
以确保一条记录针对另一条记录进行验证 table。这要求用于验证某物的值已经存在。您不能 link 一个不存在的电影的演员:演员记录和电影记录都必须存在才能发生这种情况。所以有可能(并且需要)在没有演员的情况下制作电影。
您的解决方案不在 架构 中,而是在触发器和 存储过程 中 - 使用事务。您需要向存储过程提供演员和电影,它会在 table 中创建这两个条目。它必须非常聪明并且不会重新创建演员记录(如果存在的话)。如果已经创建,它将必须重新使用电影。
整个逻辑必须根据 UPDATE
和 DELETE
进行检查,以确保每部电影至少有一个演员。这是通过触发器。
我有点懒惰,如果这回答了您的问题,现在不想为您编写整个存储过程。如果您在整个交易过程中需要帮助,请告诉我。
--- 建议 ---
如果这是一个真实的项目而不是练习,我建议您的处理和显示语言强制执行业务逻辑(确保参与者存在)。将业务逻辑放在数据库中不是一个好主意,很难维护。
--- 旁注 ---
您可能需要添加 genre
table 来验证流派
我想使用 E-R 模型为电影和电视剧数据库设计数据库模式,并使用关系模型相应地设计 tables。必要的信息如下:
实体:电影、演员、电视剧。 电视剧或电影必须有演员。演员可以同时扮演两者。 相应地假设列并提及主键、弱实体和强实体。
这是我试图解决的问题。我对此毫无疑问。
- 第一种方法
- 演员
- actorID (PK)
- 演员姓名
- 电影
- actorID (FK:Actor) (PK)
- 电影ID
- 电影名称
- 电影类型
- 电视剧
- actorID (FK:Actor) (PK)
- tvsID
- 电视名称
- 电视类型
- 演员
在这种情况下,模型将具有以上三个具有给定属性的 table。它维持每部电视剧或电影必须有演员并且演员可以同时出演两者的标准。但是如果一部电影有 three/four 个演员,那么我们必须输入 movieName,movieGenre 以获得相同的 movieID。这是信息的重复,我不想那样。
- 第二种方法
- 演员
- actorID (PK)
- 演员姓名
- 电影
- 电影ID
- 电影名称
- 电影类型
- 电视剧
- tvsID
- 电视名称
- 电视类型
- 演员电影
- actorID (FK:Actor) (PK)
- movieID(FK:电影)(PK)
- 演员电视剧
- actorID (FK:Actor) (PK)
- tvsID (FK:TVSeries) (PK)
- 演员
这里因为我们添加了ActorMovies和ActorTVSeries,所以我们不需要重复信息。但我不知道如何确保每部电影或电视剧都有一个演员,因为它们在不同的地方table。我也想知道弱实体和强实体。请帮助我。
我认为你把事情复杂化了。您已确定您的实体:
- 演员
- 电影
- 电视剧
如果一个演员既能演电影又能演电视剧,那就是你的关系:你需要 table 将演员加入电影,也需要演员加入电视剧。这会给你五个 tables:
actors
movies
tv_series
actors_movies
(加入table)actors_tv_series
(加入table)
由于以下原因,您不能在 架构 中的关系数据库中强制执行此操作:
作为创建关系数据库的一种方法,您可以创建 CONSTRAINTS
以确保一条记录针对另一条记录进行验证 table。这要求用于验证某物的值已经存在。您不能 link 一个不存在的电影的演员:演员记录和电影记录都必须存在才能发生这种情况。所以有可能(并且需要)在没有演员的情况下制作电影。
您的解决方案不在 架构 中,而是在触发器和 存储过程 中 - 使用事务。您需要向存储过程提供演员和电影,它会在 table 中创建这两个条目。它必须非常聪明并且不会重新创建演员记录(如果存在的话)。如果已经创建,它将必须重新使用电影。
整个逻辑必须根据 UPDATE
和 DELETE
进行检查,以确保每部电影至少有一个演员。这是通过触发器。
我有点懒惰,如果这回答了您的问题,现在不想为您编写整个存储过程。如果您在整个交易过程中需要帮助,请告诉我。
--- 建议 ---
如果这是一个真实的项目而不是练习,我建议您的处理和显示语言强制执行业务逻辑(确保参与者存在)。将业务逻辑放在数据库中不是一个好主意,很难维护。
--- 旁注 ---
您可能需要添加 genre
table 来验证流派