【发布时间】:2015-01-14 10:50:22
【问题描述】:
请看下图
假设您正在为学生创建一个数据库,其中一张表是“Sport”。如上图所示,学生可以选择他们喜欢的运动并点击保存按钮(记住,他们可以选择多个)。单击按钮后,数据将保存在“运动”表中。现在问题来了,请仔细阅读以下内容。
下面是我将这些数据保存在Sport 表中的方法。
在Sport 表中为 GUI 中列出的每一项运动创建列,数据类型为布尔值。在 GUI 中选择运动并单击 Save 按钮后,将 true 分配给相关列。
但是想象一下有一个新的要求。也就是说,如果学生喜欢的运动不在 GUI 中,则应该有一个按钮允许学生为他喜欢的自定义运动生成复选框。他可以尽可能地添加。所以学生简单地添加了 3 个自定义复选框,Karate、Swimming 和 cricket。他还勾选了 Golf 和 Rugby,这已经存在于系统中。
现在我的问题是,how and where do I save these custom sports? 我应该调用一个语句并在Sport 表中为空手道、游泳和板球生成另外 3 列,但我不喜欢它,我确定这不是方法。这种方法会导致很多问题。
感谢您的建议。
【问题讨论】:
-
您能解释一下为什么您需要为每项运动设置一个单独的列吗?目前听起来糟糕的数据库设计是你的问题。
-
@GB:没有具体原因。特别是因为它比将数组保存在一列中更好。
-
是的,也不要那样做。对于每个用户运动组合,只需在表格中保留一行。当您从该表中为该用户选择时,您将获得与用户最初选择的运动数量一样多的行。这种效果已经有了答案。
标签: mysql database database-normalization