mySQL Parent,子模型和默认值

时间:2017-04-18 23:40:20

标签: mysql database database-design

我有一个处理图片,相册和相册类别的数据库。

一张专辑可以有多张专辑(subalbums),而且只有1张专辑。

一张专辑只分类在一个专辑类别中。

在这里进行了一些研究,我相信最合适的数据库模型就是这个

album_category (album_category_id, name, description, position)

album (
    album_id,
    album_category_id,
    parent_album_id,
    name,
    description,
    cover_filename,
    position
)

enter image description here

我做了一些我不确定的事情。我需要你的专长。

  1. 当专辑parent_album_id为空(意味着它不是subalbum)时,默认值为零。这可以吗?我可以选择检查Allow NULL并使其默认为null。这是一个更好的解决方案吗?

  2. 如果相册是subalbum,则parent_album_id设置为有效album_id。但是,我如何处理subalbum的album_category_id?我将它设置为null还是0?我是否将其设置为album_category_id引用的parent_album_id

2 个答案:

答案 0 :(得分:1)

对于你的第一个问题,任何一个都可以工作。但是只有在有效的parent_album_id不能为零时才有效。

对于第二个问题,我认为您必须弄清楚相册属于哪个类别.bateg_category_id与album_id和parent_album_id无关,除非您决定连接它们。

答案 1 :(得分:1)

对于你的第一个问题,我更喜欢0而不是null,因为你不必为null设置特殊处理。由于album_id是自动增量,因此有效的album_id永远不会为零。

对于您的第二个问题,拥有子专辑的类别ID的美妙之处在于,如果是这种情况,您可以将其设置为其他类别。我会默认为相同的类别,或null。 Null将是一个"特殊情况",这意味着它使用父类别。如果为null,则在您的查询中,您可以从其父级获取类别,如果父类别发生更改,那么子级相册也是如此。类别,无需在更新父级时更新任何子专辑。