【发布时间】:2022-01-05 05:30:52
【问题描述】:
我正在一个网站上添加票务功能,用户可以在该网站上宣传他们的活动。我想添加一个票务功能,用户可以为活动创建票,然后用户可以购买这些票。我想出了以下数据库结构(它不是很整洁,但我希望它能解释我想要做什么)。所以我的问题是这是正确的方法吗?还是我以后会遇到这个问题?
【问题讨论】:
-
没有足够的信息来确定这一点。大多数事情看起来都不错,但我不确定不同 event_(type|id) 关系的区别是什么;在
booked_tickets中使用email作为外键将是一个坏主意(即使对客人来说也是如此),它可能应该被2 个合成ID 字段替换;它不是很清楚你是如何想象门票的。qty事情正在解决(或者你是否/如何计划执行);这只是我想到的几件事 -
这类问题总是有不止一种解决方案,而且随着系统的发展,最好的解决方案会有所变化。目前这似乎还可以。它会在五年内处理好负载吗?谁能说?
-
感谢@Raxi 的回复。不同的事件类型有不同的数据库表(这没有意义,这是以前的开发人员设计的方式,所以无法改变)。所以首先我必须查看是哪种类型的事件,然后我查找与之关联的表以将其 id 作为参考。而且我不会将电子邮件作为参考。只是图表不符合标准。对于数量,它将由创建门票的人决定。每次购买后将减少金额。
-
@TangentiallyPerpendicular 我猜你是对的。我现在应该按原样实施,然后等待有什么问题来改进它。
-
一般来说,为每个可能的 eventdetailtable 设置 1 个 id 字段比使用 1 个可以引用多个表的 id 字段要好得多。所有不相关的都可以为空;并且您可以向表中添加一个约束,使其/仅/其中一个可能具有值(或您决定的特殊组合)。