Bac*_*ash 3 mysql best-practices
一个朋友让我用几个“静态”和“动态”表构建一个站点。
事实上,他想要一些不能删除的表,以及一些可以根据站点用户的需要直接创建的“动态”表。
IE 如果用户需要一些当前数据库中不存在的“可选”,他会为他的特定需要创建一个新表。
我认为这不是一个好方法,我认为最好在表中列出所有可能的选项,然后为每个用户标记它们,即:
表garden(id, camellia, californa_poppy, azalea)
包含一个普通花园,花园可以包含 3 种花卉
表users(id, username, some_user_infos, garden_id)
包含一个通用用户和它的花园 ID。
如果garden_id
从表中值users
是1
,与ID行1
从表garden
是(1, 1, 0, 1)
这意味着用户提供garden_id=1
具有每花允许加州,但小狗。
这是我的想法。
我的朋友说最好以动态方式创建表格并将它们连接到用户以动态定义新花。
把每一种可能的花都放在garden
桌子上并按照我的意愿标记它不是更好吗?
简短回答:通常动态创建表和列不是一个好习惯。但是可能会有罕见的特殊情况,这是一种很好的做法。
长答案:
您可以(至少)在解决方案的以下问题上运行:
如果我正确理解您的要求,这是交集表的情况(花卉和花园之间的多对多关系)。
也许这将解决您的需求:
创建以下表:
现在,您可以将新花添加到“花”表中,而无需添加新的柱子或表。您可以使用交集表“Garden_Flowers”定义哪些花在哪个花园中。只需为每朵花插入一个带有flower_id 和garden_id 的记录。