【问题标题】:Database design implementing support for different languages数据库设计实现对不同语言的支持
【发布时间】:2013-12-22 22:32:02
【问题描述】:

今天我在练习数据库设计,例如我正在尝试构建一个数据库设计,我想在其中存储我最喜欢的节目。我已经将此数据库规范化为第三种形式(至少我认为我有)。但是我遇到了这个设计的问题,实际上,我该如何执行这样的查询:

  • 是否有任何节目具有语言(比如说意大利语)和状态 Emitting 并且有超过 5 集可供选择?

我认为我在语言和 show_internation_data 表上犯了一个错误,但我不确定...

另外,如果你能告诉我这个设计有多糟糕以及需要改进的地方,或者只是发表一篇很棒的文章,那就太棒了!

图表:

这是图片:http://i.stack.imgur.com/abhwx.png

【问题讨论】:

    标签: database database-design relational-database database-schema foreign-key-relationship


    【解决方案1】:

    你是对的。 show_international_data 存在问题,但这不是此设计的唯一问题。

    我会从 show_languages 中删除 show_ID 列并将其添加到 show_international_data 中。这种对表的重新排序将允许您编写查询来回答您的问题。

    select show_ID
      from show s left join show_international_date sid          
        on s.show_ID = sid.show_ID
     where s.episodes_available > 5
       and sid.status           = 'Emitting'
       and sid.language_id      = (select language_ID 
                                     from show_languages 
                                    where language = 'Italian')
    

    除了这个特定的问题,您或许应该考虑以下几点:

    • 类型、主题和摘要真的会因语言而异吗?
    • ...rating 和 cover_img 不会因语言而异吗?
    • show to show_producer 应该是多对多关系。
    • 要展示的类型和要展示的主题也可能是多对多的。

    如果我正在开发它,我还将为状态、流派和主题创建表,并将 ID 存储在 show_international_data(或它们最终进入的任何表)中,而不是将它们存储为 varchar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-03
      • 2013-05-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-29
      相关资源
      最近更新 更多