gpt4 book ai didi

database-design - 为简单而去规范化 : Ungood idea?

转载 作者:行者123 更新时间:2023-12-01 00:02:11 24 4
gpt4 key购买 nike

看完这篇 question ,我了解到非规范化不是简单的解决方案。这个案子呢?

我有新闻文章,其中有一个网站文章将被发布到的列表。后者可以通过表格和多对多关系(我认为通过交叉表)以规范化的方式表达。但简单的解决方案是为sites-article-will-be-published-to(publish_to_site_1、publish_to_site_2等)放入一堆 bool 值。假设站点是:

  • 数量少
  • 不会随时间改变
  • 除了名称之外没有任何字段

  • 这仍然是一个可怕的想法吗?多对多的关系看起来有些麻烦,但我以前在这种情况下做过(而且看起来很麻烦)。

    注:我在 Rails 中做这件事,它并不那么痛苦。另一方面,元编程使这样的事情变得微不足道
    (1..5).each { |site| do_something(article["publish_to_site_#{site}".to_symbol]) }

    最佳答案

    如果这些条件确实得到满足,那么不​​,这不是一个糟糕的主意。

    事实上,这甚至不是非规范化:非规范化通常意味着您为了性能而冗余存储一些信息。在您的示例中,由于站点本身没有字段,因此您不会冗余存储内容。您只是在剥夺自己将来为站点存储其他字段的机会(不违反规范化或重新设计数据库)。

    所以,这是可以的(标准化):

    article                        show_on_stackoverflow    show_on_my_blog
    -----------------------------------------------------------------------
    Denormalize for Simplicity YES NO
    More simplicity YES YES
    ...

    但这不行(冗余):
    article                        show_on_stackoverflow    stackoverflow_mainpage_url   show_on_my_blog    my_blog_mainpage_url
    ------------------------------------------------------------------------------------------------------------------------------
    Denormalize for Simplicity YES http://stackoverflow.com NO http://my.blog.url
    More simplicity YES http://stackoverflow.com YES http://my.blog.url
    ...

    关于database-design - 为简单而去规范化 : Ungood idea?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2874071/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com