Database design 将表数据移动到另一个表字段

Database design 将表数据移动到另一个表字段,database-design,database,Database Design,Database,有一个为照片投票的任务。因为用户只能为照片投票一次,所以我应该保存他们。我不打算为保存用户ID创建单独的表,而是将它们保存在blob字段中的photo table中,用任何分隔符分隔。 你对这种做法怎么看?有什么隐患吗? 我知道,使用这种结构,我将减少查询和联接的数量。不要这样做。你所尝试的并不罕见,但几乎总是不明智的。制作另一个表来存储每个用户每张照片的投票。您是在(错误的)假设下操作的,即减少联接并将此数据存储在blob字段中会比将投票存储在表中带来性能优势,这是非常(非常)不可能的 一些想

有一个为照片投票的任务。因为用户只能为照片投票一次,所以我应该保存他们。我不打算为保存用户ID创建单独的表,而是将它们保存在blob字段中的photo table中,用任何分隔符分隔。 你对这种做法怎么看?有什么隐患吗?
我知道,使用这种结构,我将减少查询和联接的数量。

不要这样做。你所尝试的并不罕见,但几乎总是不明智的。制作另一个表来存储每个用户每张照片的投票。您是在(错误的)假设下操作的,即减少联接并将此数据存储在blob字段中会比将投票存储在表中带来性能优势,这是非常(非常)不可能的

一些想法:

  • 在这样做的过程中,如果你想检查任何一张选票,你将被要求带回一张给定照片的每一张选票
  • 这是腐败的秘诀。将用户ID存储在此字段中会破坏在投票上维护外键的能力。换句话说,如果修改或删除了用户记录,则无法更新投票记录

  • 我认为您可能遇到的问题是可伸缩性。如果这个照片投票网站变得非常流行,这些blob将变得非常大,并将给服务器端处理语言(php、asp等)带来更大的负载


    我的一般经验法则是,数据库是由程序员设计的,在处理数据方面比我做得好得多。您对数据的处理很可能不会像数据库那样高效。换句话说,使用联接,而不是自己对其进行后处理。

    带有分隔符的blob字段是存储数据最糟糕的方式之一。使用外键和外键上的索引将其正确存储在子表中