我正在用php和mysql创建一个视频播放器应用程序。
该应用程序包含收集在播放列表中的视频,如下所示:
播放列表表:
+----+------------------+------+
| id | name | lang |
+----+-------------------------+
| 1 | Introduction | 1 |
+----+-------------------------+
视频表:
+----+--------------+-------------+
| id | name | playlist_id |
+----+--------------+-------------+
| 1 | Video1 | 1 |
| 2 | Video2 | 1 |
+----+--------------+-------------+
到目前为止,它工作正常,因为我需要建立一个搜索器,根据其名称和语言查找视频。
我虽然在视频表中创建了另一个名为lang
的字段,但后来我意识到这可能与规范化数据库规则相矛盾。因为我会重复不必要的信息。
如何在不创建其他字段的情况下选择视频?或者我是否需要使用重复的信息创建一个新的?
修改 JOIN LEFT两个表都不是解决方案,因为我可能会在将来添加一个链接到播放列表(例如课程)的新表。
答案 0 :(得分:0)
您需要明确要将哪个属性分配给哪个实体(播放列表,视频或可能的课程)。您可以单独为播放列表和视频列表项分配语言ID。谁可以说您不允许在语言ID为1的播放列表中包含语言ID为2的视频? (例如,这可能是您希望出现在您自己语言的播放列表中的外语视频)。
要搜索合适的项目,您应该使用某种join
(on video.playlist_id=playlist.id
)。结果表将包含video.language_id
和playlist.language_id
,不具有冗余信息的情况,正如我上面尝试解释的那样,因为它们引用了不同的实体。
答案 1 :(得分:-1)
您可以在LANGUAGE_ID
表格中设置Videos
COLUMN,这将是Playlists.lang
的外键引用。
尝试以上解决方案。
希望这会对你有所帮助。