我发现每个都是必需的,因为它是一个“项目”表,项目中有一些列,表示创建时间,更新时间,ID,启动时间,完成时间,部分元数据等内容作为关键词,项目本身的内容,简要说明和其他一些东西。
我对我的桌子感到满意,但后来我通过stackoverflow浏览了一些问题,看到像“你的桌子应该永远不会超过10列”这样的东西并建议如果是这样的话,你应该把你的桌子分成小桌子。
按照StackOverflow的建议,我将表分成两个表,但我发现操作起来更复杂。现在,当创建每个项目时,我必须创建两个新记录,每个记录对应一个表。我必须处理创建任一记录的错误,这意味着如果第二个表上的记录创建失败,我必须执行 yet 另一个查询来回滚第一个记录的创建。 数据检索和记录删除也变得更加复杂,因为现在我必须在两个表上执行此操作。
我正在使用Sails.js框架,并尝试使用关联,但我发现它几乎相同,我仍然需要为每个表重复任务。
如果它变得那么大,将你的桌子分成小桌子真的值得吗?或者我应该保留我的20列表?我的项目是新的,甚至不在线,所以我不知道性能。我从来没有理解一般的关联/联接或数据库,因为我从来没有理解为什么人们这样做,所以,有什么好处?
答案 0 :(得分:3)
保持你的20列表,老实说20列并不是很多,考虑到5列,正如你所知,由何时(创建,编辑)和ID。
设计数据库表时还有其他注意事项,列数不应该是优先级。当您遇到一些性能问题时,可以考虑将其拆分为多个表,但现在请保留您的表。转到40列,你仍然不应该关心。
那个说不超过10岁的人要么谈论一些可以解决的性能问题,要么是一个特殊情况,它会产生影响或者有一些奇怪的标准"。
但是你应该真正理解数据库设计,因为你会看到如何更好地设计你的表,但是现在只要你尊重一些normalization rules
,就可以创建你想要的字段。答案 1 :(得分:0)
我认为你的数据库在使用som一段时间之后你永远不想改变qour架构。
考虑您可能希望在功能中实现的功能/功能,并根据需要决定,如果您想要有40列。
我更喜欢让所有东西尽可能紧凑,所以我得到了很多外键和很多小桌子,因为没有写或没有保存过两次。