在MySQL中有多个表代表一个对象,这是一种糟糕的设计吗?
我有许多这种结构的对象:在MySQL中有多个表代表一个对象,这是一种糟糕的设计吗?,mysql,sql,database-schema,schema-design,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
~ 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)
然后在7741_图像中(按分数排序,以便“顶部”项目易于检索):
这种每个对象都有很多表的向下钻取样式会使查询速度变慢还是使非常具体的查询过于冗长?(10万个名额?)
我从来没有负责过模式设计,所以如果我错过了显而易见的东西,请原谅 它是好是坏是主观的——基于你提出的问题(和模式)。为了更好地回答这个问题,您必须解释您的模式设计决策。你应该总是有一个很好的理由来做决定,如果在你的开发过程中它被证明是不正确的,那么就迭代来改进。:) 假设您正在预先尝试设计模式以支持您的应用程序,我将从Neil指出的方法开始。对于示例模式,在某些情况下,性能将是一个问题
同样,从简单开始,如果你需要修改,那么只要确保你对自己的设计选择有一个合理的理由感到“很好”。我认为你最好使用规范化设计。如果你不知道这意味着什么,我听说过《为凡人设计数据库》一书中的好东西。我相信我对规范化很熟悉,但是——我概述的模式不是很规范吗?或者您是否建议它更加规范化,比如说,每个
imgID
都是它自己的表?
______________________________________________________________________________
names | location | upvotes | downvotes | images | Comments
_______________________________________________________________________________
7741_names | 7741_location | 20 | 3 | 7741_images | 7741_comments
imgID | score | upvotes | downvotes | url |
________________________________________________________
7741_21 | 98 | 44 | 1 | /img/7741_21.png |
7741_14 | 94 | 40 | 2 | /img/7741_14.png |