我是学习PostgreSQL的新手,所以我很感激所有的帮助。
我正在尝试创建多个表。我希望表的主键是区列+学校列的组合。
以下是我的表格设置方式的示例:
CREATE TABLE table1(
school VarChar(50),
division VARCHAR(40),
otherattribute (varchar70),
etc.);
CREATE TABLE table2(
school VarChar(50),
division VARCHAR(40),
otherattribute (varchar70),
etc.);
我想创建另一个符合
的表格CREATE TABLE assignID(randomId INTEGER, school VarChar(50), division VARCHAR(40));
然后我想用我分配给该学校和部门组合的randomId替换我的任何表中的学校和部门组合的任何主键。有没有办法做到这一点?
答案 0 :(得分:0)
很高兴看到您考虑为主键做出明智的选择。如何选择主键值可能是数据库未来可用性中最重要的因素。
您在这里真正做的是一个称为“数据库规范化”的过程。以下是对数据建模中一些重要的核心概念的一个很好的介绍(针对初学者):http://phlonx.com/resources/nf3/
希望有所帮助!
答案 1 :(得分:0)
我想出了一个解决方案,这是我的代码。
我运行了这个脚本:
UPDATE tables SET ID=table1.ID
FROM table1
WHERE tables.schoolName = table1.schoolName
AND tables.divisionName = table1.divisionName;
这将与table1中的school和division组合绑定的序列号添加到具有类似组合的任何表中。
然后我放弃了所有桌子的学校和分区栏目。
我知道这不是最优化的解决方案,但它是我唯一能想到的解决方案。