我正在为演员和制片人开发一个电影数据库,其中包含两个演职员表。目前,演员和制片人的信用都集中在一张表中,因为他们只有一列不同(“role_id”外键永远不会用于制片人的信用 - 它总是空值)。把它们放在一个表格中(“movie_credits”)还是最好将它们分开(“actor_credits”和“filmmaker_credits”)?如果只有一列不同,我是否应该有两个单独的表格?
这里是我定义一个非常基本的模式,而我包括它的一些示例数据:
movie_credits +----+-----------+---------+---------------+----------+ | id | talent_id | role_id | identity_id | title_id | +----+-----------+---------+---------------+----------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 2 | 2 | 1 | 2 | | 3 | 1 | NULL | 2 | 4 | +----+-----------+---------+---------------+----------+ talent +----+------------+-----------+ | id | first_name | last_name | +----+------------+-----------+ | 1 | Clint | Eastwood | | 2 | Sylvester | Stallone | +----+------------+-----------+ roles +----+---------------+ | id | name | +----+---------------+ | 1 | Walt Kowalski | | 2 | Rocky Balboa | +----+---------------+ identities +----+--------------+ | id | identity | +----+--------------+ | 1 | actor | | 2 | director | | 3 | producer | | 4 | screenwriter | +----+--------------+ titles +----+-----------------+ | id | name | +----+-----------------+ | 1 | Gran Torino | | 2 | Rocky | | 3 | Creed | | 4 | American Sniper | +----+-----------------+
如果你看到结构化数据为这种情况的一个完全不同的方式,请让我知道。我愿意接受任何可能更高效且可扩展的解决方案。
我的第一个想法是,因为同一个人可以在不同的图片上或甚至在同一张图片上采用多个“身份”(您的术语),您当前的解决方案比单独的表格具有更高的灵活性,船员。有改进的空间,但我需要花点时间。 –
感谢您的回复。为了澄清,我实际上并没有想到将“天赋”表分成演员和电影制片人,而是考虑将“电影片名”分成两个表格(“actor_credits”将具有“role_id”专栏和“filmmaker_credits”将具有“identity_id”列) –