繁体   English   中英

MySql表设计:使用大量行或存储每行一个文本字段格式化的信息?

[英]MySql table design : Use lots of rows or store the information formatted in one text field per row?

我试图找到设计我的数据库以组织与事件相关的信息的最佳方法。

我有一个事件表,其中包含有关事件的所有信息,例如,唯一ID,事件标题,场地等。

现在,每个事件都可以有多种故障单类型,故障单的数量和类型将随每个事件而变化。

最好有一个events_tickets表,每个票类型都有一个单独的行,例如

event_id    ticket_type    price
1           standard       20
1           deluxe         40
1           cheap          10

或者将表格式化为更好,以便信息在一行上?

event_id    ticket_information
1           standard:20,deluxe:40,cheap:10

如果我使用第一种方式,每个事件最终会产生10行,当乘以大量事件时,可能会变得非常大,而第二种版本可能会出现数据完整性问题。

第一个......绝对是。 :)尽可能多的数据尽可能分开是最好的方式...它使它更加可用,更容易更改/升级/扩展代码。

实际上我会有3个表:events,event_options和ticket_types

event_options实际上只是事件和ticket_types之间的链接表,并且可以包含每个事件需要保存的其他信息。 通过这种方式,它可以更轻松地a)按票证类型搜索和b)添加更多票证类型,因为当您将新票证类型添加到现有事件(或类似的东西)时,您将遇到更多问题。方式。

官方的答案是第一种方式。 如果您只拥有完全相同的三种类型的票证,那么您可以继续使用三个“票价”字段。 但除此之外,关系纯粹主义告诉你与第一个一起去。

我假设你无论如何都有一个“事件”表。 告诉你:在你最喜欢的搜索引擎上搜索“第三范式”,你将学到很多关于设计数据库的知识。

第一种方式更好。 它更加规范化。 为什么这很重要? 这意味着查询数据要容易得多。 您不希望使用第二种方式,因为以后检索数据会非常复杂和耗时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM