簡體   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