如何在我的mysql数据库中实现语言系统?

时间:2017-06-25 08:58:05

标签: php mysql

我正在用php和mysql创建一个视频播放器应用程序。

该应用程序包含收集在播放列表中的视频,如下所示:

播放列表表:

+----+------------------+------+
| id | name             | lang |
+----+-------------------------+
|  1 | Introduction     |   1  |
+----+-------------------------+

视频表:

+----+--------------+-------------+
| id | name         | playlist_id |
+----+--------------+-------------+
|  1 | Video1       |           1 |
|  2 | Video2       |           1 |
+----+--------------+-------------+

到目前为止,它工作正常,因为我需要建立一个搜索器,根据其名称和语言查找视频。

我虽然在视频表中创建了另一个名为lang的字段,但后来我意识到这可能与规范化数据库规则相矛盾。因为我会重复不必要的信息。

如何在不创建其他字段的情况下选择视频?或者我是否需要使用重复的信息创建一个新的?

修改 JOIN LEFT两个表都不是解决方案,因为我可能会在将来添加一个链接到播放列表(例如课程)的新表。

2 个答案:

答案 0 :(得分:0)

您需要明确要将哪个属性分配给哪个实体(播放列表,视频或可能的课程)。您可以单独为播放列表和视频列表项分配语言ID。谁可以说您不允许在语言ID为1的播放列表中包含语言ID为2的视频? (例如,这可能是您希望出现在您自己语言的播放列表中的外语视频)。

要搜索合适的项目,您应该使用某种joinon video.playlist_id=playlist.id)。结果表将包含video.language_idplaylist.language_id具有冗余信息的情况,正如我上面尝试解释的那样,因为它们引用了不同的实体。

答案 1 :(得分:-1)

您可以在LANGUAGE_ID表格中设置Videos COLUMN,这将是Playlists.lang的外键引用。

尝试以上解决方案。

希望这会对你有所帮助。