Php 存储频繁添加/删除的列
我有两个想法来存储我的web应用程序的用户自定义/设置。可能有更多的方法可以做到这一点,我愿意接受新的想法 您建议使用哪种方法来存储可能不稳定更改的设置/自定义设置?例如,本周用户可以进行12种可能的定制。下周我们可能会在短时间内添加一个新的 因此,我可以:Php 存储频繁添加/删除的列,php,mysql,rdms,Php,Mysql,Rdms,我有两个想法来存储我的web应用程序的用户自定义/设置。可能有更多的方法可以做到这一点,我愿意接受新的想法 您建议使用哪种方法来存储可能不稳定更改的设置/自定义设置?例如,本周用户可以进行12种可能的定制。下周我们可能会在短时间内添加一个新的 因此,我可以: 将设置存储为列(user\u image\u url作为varchar,time\u offset作为int,background\u color作为varchar等),并将用户帐户作为主键。我不喜欢每当有新的设置(并且可能有几十个列)时就
user\u image\u url
作为varchar,time\u offset
作为int,background\u color
作为varchar等),并将用户帐户作为主键。我不喜欢每当有新的设置(并且可能有几十个列)时就必须添加另一个列的想法,但我认为这是最简单、最快、最明显的方法(帐户id,设置id,值)值(1,2,'http://logos.com/yourlogo.png)
。我们的想法是将它与存储设置id
的设置表连接起来。这样做的最大缺点(我可以看到)是每个设置都必须是相同的类型(varchar)。我不确定那以后会不会对我不利
最后,您可以通过将多个列(通常是
varchar
、float
(某种类型)和datetime
)与类型列一起使用来解决类型问题。这样,就可以直接存储值。如果您确实选择了varchar
路径,请确保以YYYY-MM-DD的ISO格式存储日期(如果愿意,可以省略连字符)。选项1违反了关系数据库设计的第一种正常形式。选择2是最好的办法。网络上有很多关于第一范式的解释——这是我发现的最简单的解释:这在很大程度上取决于它们被添加或删除的频率;如果表足够大,添加和删除列可能需要一段时间。第二个选项也被称为EAV建模。是的,我在一些公司工作过,在那里很难添加列,你必须建立第二个数据库并进行切换。谢谢你的意见!我没有想到为不同的数据类型添加不同的列!这是一个好主意,可能会100%解决我的具体问题。谢谢