在MySQL中有很多代表一个对象的表是不好的设计?

时间:2013-09-16 02:45:59

标签: mysql sql database-schema schema-design

我有很多这种结构的对象:

~ PlaceID
  = Upvotes
  = Downvotes
  = Names
    - Title 
      + Upvotes
      + Downvotes
    - Other names[]
      + Upvotes 
      + Downvotes
  = Location
    - Lat
    - Long
    - Address
  = Images
    - Top 
      + id/url
      + Upvotes
      + Downvotes
    - Others[]
      + Upvotes
      + Downvotes
  = Comments[]
    - id
    - Text
    - Upvotes
    - Downvotes
    - ReplyTo

为了保持井井有条,我已经制定了一个涉及很多链接的模式。这是一个示例表:

7741(PlaceID)

______________________________________________________________________________
names      | location      | upvotes | downvotes | images      | Comments
_______________________________________________________________________________
7741_names | 7741_location |    20   |     3     | 7741_images |  7741_comments

然后在7741_images(按分数排序,因此“Top”项很容易检索):


 imgID   | score | upvotes | downvotes | url              |
________________________________________________________
 7741_21 | 98    |    44   |     1     | /img/7741_21.png |
 7741_14 | 94    |    40   |     2     | /img/7741_14.png |

这种具有每个对象的大量表格的向下钻取样式是否会使查询变得非常慢或非常具体的查询过于冗长? (对于100k 地方?)

我从来没有对架构设计负责,所以请原谅我,如果我错过了显而易见的事情。

1 个答案:

答案 0 :(得分:1)

无论是坏还是好,质量都是主观的 - 基于您提出的问题(和架构)。为了更好地回答这个问题,您必须解释您的架构设计决策。你应该总是有充分的理由做出决定,如果在你的开发中它被证明是错误的,那么迭代改进。 :)

假设您正在尝试设计架构以支持您的应用,我将从Neil指出的方法开始。使用示例模式,在某些情况下,性能将成为一个问题。

同样,从简单开始,如果您需要修改,那么请确保您对设计选择的正当理由感到“满意”。