Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL-I只有一个属性是唯一的。我应该如何为多个表指定主键?_Sql - Fatal编程技术网

SQL-I只有一个属性是唯一的。我应该如何为多个表指定主键?

SQL-I只有一个属性是唯一的。我应该如何为多个表指定主键?,sql,Sql,我在excel中有大约3000行40列的大数据。我已经将excel转换为csv,并使用load data local infile将数据转储到sql中的6个表中 问题是,在40列中,只有一个columnattribute是唯一的,而所有其他列要么为null,要么不唯一。目前,我只对所有表使用了一个主键。但我不认为这在未来会是有效的…谁能建议一个替代的方法来做这件事 谢谢, Alex你需要重新思考一下,为什么要将它设为6张表而不是1张表。若只有一个逻辑候选键,并且每一列都与该键直接相关,那个么它应

我在excel中有大约3000行40列的大数据。我已经将excel转换为csv,并使用load data local infile将数据转储到sql中的6个表中 问题是,在40列中,只有一个columnattribute是唯一的,而所有其他列要么为null,要么不唯一。目前,我只对所有表使用了一个主键。但我不认为这在未来会是有效的…谁能建议一个替代的方法来做这件事

谢谢,
Alex

你需要重新思考一下,为什么要将它设为6张表而不是1张表。若只有一个逻辑候选键,并且每一列都与该键直接相关,那个么它应该全部位于一个表中


在谷歌上搜索数据库规范化,以更好地了解数据库设计。

首先,这似乎需要处理大量数据。从它的声音来看,考虑到字段的数量和唯一属性的数量较少,可能有很多冗余。我建议你先把你不需要的东西拿出来,尽量消除重复条目。只要仔细看一看,如果你有一个类似电子邮件的字段以及一个用于即时消息的字段,那么最终可能是相同的信息。在这种情况下,您可以将其合并为电子邮件字段


完成后,您应该返回并编辑数据库中作为PK的任何内容,以读取每个表的主数据。这将为您节省大量的数据库空间以节省开销。

谢谢您的建议,但我想拆分数据,因为它包含大约40列。我想根据表的相似性对表进行分组…是否有其他方法来实现这一点,或者我只是在单个表中进行分组?正如我所说,我强烈建议对数据库规范化进行研究,以确定如何处理特定的数据集3000行数据量不大感谢,没有太多冗余,但我可以将2或3列合并为一列。我想问题仍然存在,即使我合并列,它们也有很多空值…放在一个表中更好吗?是的,表越少越好。。正如下面所建议的,研究规范化。这会有很长的路要走。