在我正在设计的网站的一部分中,有一个部分既有预定义的值,也有指定自定义值的选项。
作为一个更简单的例子,让我们假设这些值是" sports“,并且应用程序已经预定义了体育,但是一些用户会想要输入他们自己的体育项目,因为我不能预测他们将出现的所有内容。用户将无法访问其他人已经进入的运动,只能访问他们自己的运动。
预定义的体育项目和自定义的体育项目是否应该存储在同一个表中?在本例中,我必须允许表中一个user_id列为空,或者为预定义的体育创建一个用户和user_id。
大多数时候,当按名称搜索体育项目时,我希望同时搜索预定义和用户自己的自定义体育项目,因此,如果预定义体育项目和自定义体育项目是分开的,我仍然需要在两个表中进行搜索。
另一方面,如果它们是分开的,则很难基于sport_id指定外键关系。
处理这种情况的好方法是什么?
发布于 2009-08-04 20:20:42
我不认为在一个表中同时包含预定义和定义值有什么问题(也许您可以使用一个位标志来表示“自定义”,以防您以后需要对它们做些什么)。而且,您可以很容易地将标识值指定为该表中的主键,因此在指定外键关系时应该不会出现问题。
你唯一会遇到的问题就是欺骗和拼写错误。
发布于 2009-08-04 20:37:00
我会将其实现为多对多关系。表1- sports (sport_id、sport_name、system_defined)表2-用户(user_id、user_name)表3- users_x_sports (user_id、sport_id)
如果空间不是很重要,则users_x_sports表将用户加入到用户定义的运动和系统定义的运动。
如果空间不足,则使用联合搜索系统定义和用户定义的体育。仅将用户链接到其用户定义的运动。
在标准化运动和减少重复项方面节省的空间可能会弥补users_x_sports表中的额外链接。
https://stackoverflow.com/questions/1229666
复制相似问题