我最近发现您可以通过执行以下操作向Rails中的表添加列:
h.fig = figure;
h.ax = axes();
h.patch(1) = patch([0 1 1 0],[0 0 .3 .3],10);
h.patch(2) = patch([0 1 1 0],[.5 .5 .9 .9],5);
set(h.patch, 'FaceAlpha', 0);
set(h.patch(1), 'EdgeColor', cdata2rgb(h.ax,h.patch(1).FaceVertexCData));
set(h.patch(2), 'EdgeColor', cdata2rgb(h.ax,h.patch(2).FaceVertexCData));
以前我曾经加入过表格,这对我来说非常复杂,但添加一个列似乎可以完成同样的任务。
为什么我要选择一个而不是另一个?
答案 0 :(得分:2)
表格代表单个“实体”。在这种情况下,将users.lastname
存储在同一个表中可能是最有意义的。
另一方面,假设用户可以拥有 许多 电话号码。在这种情况下,最好normalise the database并将此数据存储在单独的表中。
换句话说,你想避免做这样的事情:
users.phone_number_1
users.phone_number_2
users.phone_number_3
这种方法的关键问题(如上面的链接更详细解释)是:
相反,请创建一个单独的phones
表格,该表格由user_id
列加入用户。
答案 1 :(得分:1)
我想这取决于你的应用程序,但通常最好“规范化”你的数据库。也就是说,为特定对象定义单个表。用户表可能包含字段user_id
,first_name
和& last_name
。然后,您可以加入user_id
字段。这往往会使您的查找速度更快,表格更小。
答案 2 :(得分:0)
这与rails和ActiveRecord没有多大关系,但更多的是数据库设计问题。
没有太多细节:在关系数据库管理系统中,当你需要的某些信息已经在不同的地方(通常是另一个表)中时,你可以连接表(或你的情况下的列?)(因此"关系"在名称中,表彼此相关并共享信息)。您不想重复数据。
这在NoSQL数据库中是不同的,其中连接可能甚至不存在(MongoDB具有嵌入式文档的概念,您将在某些时候必须重复数据)
我是你的情况,很简单(从数据库的角度来看)只需获取已有的信息(first_name + last_name)并返回它。添加具有相同信息的另一列似乎是浪费的'。
您应该能够在模型中定义一个返回全名的辅助方法,请参阅create a name helper