SQL:一个表,列的名称不同?

时间:2012-09-05 09:09:49

标签: mysql sql sqlite

我有许多非常相似的数据类型,除了少量逻辑上具有不同名称(但数据类型相同)的列。我想将所有内容存储在一个表中。

现在我的想法只是为某些列提供通用名称(例如“custom_data_1”等),并在另一个表中记住每个数据类型的列名称。这应该可行,但我想知道是否有更结构化的方式(这将使查询更容易并且会感觉不那么脏)以实现相同的效果(在MySQL或SQLite中)。

3 个答案:

答案 0 :(得分:3)

如果要存储不同的内容,则应将它们存储在不同的表中。然后,您可以稍后创建一个视图,以便轻松查询。

优点是每个表都有自己的对象,您可以轻松地向其添加/删除/重命名列。如果你的type1需要2个额外的列,但是type2实际上丢失了一个列怎么办?

答案 1 :(得分:1)

如果有一个案例为SQL VIEW尖叫,我看不到比这更好的一个。假设你的SQL后端支持它们(并且我相信所有人都值得他们的盐),那就去做吧。

答案 2 :(得分:1)

最佳做法是建议使用规范化表结构来编写易于阅读/使用sql The Three Normal Forms - MySQL

确保列名称描述了它们的用途,例如userid不能被称为custom_data_1。如果您创建一个新表并且userid需要引用,则应该很容易链接为外键。

您可以将所有内容存储在一个表中,但是结构查询语言就是这样做 - 将来自不同表(优化和正确创建)的数据合并到一个视图中。随着数据的增长,需要考虑的重要因素是可扩展性和可维护性。

考虑MySQL最佳做法 - Top 20+ MySQL Best Practices

也是一个有趣的阅读 - Splitting Tables in MySQL. Good practice?