Oracle开发、SQL主键难题
我有一个Oracle开发需求,从逻辑上看似乎不可能实现,我可以利用一些帮助来提出解决方案/解决方法 总之,我需要检测传入列值(degree_代码)是否已从供应商表中的现有列值更改。但是vendor表中现有的degree_代码值是事实主键的一个组件,因此如果传入的degree_代码不同,则无法连接到它 假设: 无法修改供应商学生信息表。 传入数据无法提供事件编号 相关表格: A.供应商学生信息表:Oracle开发、SQL主键难题,sql,database,oracle,database-design,Sql,Database,Oracle,Database Design,我有一个Oracle开发需求,从逻辑上看似乎不可能实现,我可以利用一些帮助来提出解决方案/解决方法 总之,我需要检测传入列值(degree_代码)是否已从供应商表中的现有列值更改。但是vendor表中现有的degree_代码值是事实主键的一个组件,因此如果传入的degree_代码不同,则无法连接到它 假设: 无法修改供应商学生信息表。 传入数据无法提供事件编号 相关表格: A.供应商学生信息表: no formal primary key, but a UNIQUE ROW can be f
no formal primary key, but a UNIQUE ROW can be found with 2 different
column combinations:
1. STUDENT_ID_NUMBER/OCCURRENCE_NUMBER:
Example: student1, occurence1: a bunch of degree-related data
student1, occurence2: a bunch of different degree-related
data
2. In addition a UNIQUE ROW is ALSO defined by the following DE FACTO
PRIMARY KEY:
STUDENT_ID_NUMBER
<<<DEGREE_CODE>>> (MA,BA, etc., anticipated or achieved)
DEGREE_YEAR (anticipated or achieved)
COLLEGE_ID (Harvard, Yale, etc.)
SCHOOL_CODE (School of Law, School of Business, etc.)
MAJOR_CODE (Business, Astronomy, etc)
START_DATE (date enrolled)
END_DATE (date degree completed)
row 1 row 2
------------- -------------
STUDENT_ID_NUMBER 1 1
OCCURRENCE 1 2
DEGREE_CODE BA MA
DEGREE_YEAR 2000 2000
COLLEGE_ID AA AA
SCHOOL_CODE BB BB
MAJOR_CODE CC CC
START_DATE 19990131 19990131
END_DATE 20010131 20010131
STAGE/WORK table:
row 1
-------------
STUDENT_ID_NUMBER 1 incoming data
OCCURRENCE 2 this needs to be retrieved from STUDENT_INFO table. STUDENT_ID_NUMBER/OCCURRENCE
is the key used in the vendor proprietary update process to update the STUDENT_INFO table
DEGREE_CODE MBA incoming data
DEGREE_YEAR 2000 incoming data
COLLEGE_ID AA incoming data
SCHOOL_CODE BB incoming data
MAJOR_CODE CC incoming data
START_DATE 19990131 incoming data
END_DATE 20010131 incoming data
接收、验证、处理学生学位相关数据的每日馈送,并将其加载到Oracle暂存/工作表中
通过PL/SQL
工作表中所需的事件号在传入数据中不可用,必须使用事实主键从供应商学生信息表中检索,以标识匹配行
当暂存表的加载完成后,它将连接到STUDENT_INFO表,匹配STUDENT_ID_NUMBER/事件编号以及暂存表中的更改,然后更新到STUDENT_INFO表
除了提出我的辞职,还有谁能提出解决办法吗
短暂性脑缺血发作
卢克
感谢所有回复的人
场景是:需要确定学生id编号“1”的学位代码发生变化的事实
然后在学生信息表中从“硕士”修改为“MBA”
以下是有助于澄清的示例数据:
供应商学生信息表:
no formal primary key, but a UNIQUE ROW can be found with 2 different
column combinations:
1. STUDENT_ID_NUMBER/OCCURRENCE_NUMBER:
Example: student1, occurence1: a bunch of degree-related data
student1, occurence2: a bunch of different degree-related
data
2. In addition a UNIQUE ROW is ALSO defined by the following DE FACTO
PRIMARY KEY:
STUDENT_ID_NUMBER
<<<DEGREE_CODE>>> (MA,BA, etc., anticipated or achieved)
DEGREE_YEAR (anticipated or achieved)
COLLEGE_ID (Harvard, Yale, etc.)
SCHOOL_CODE (School of Law, School of Business, etc.)
MAJOR_CODE (Business, Astronomy, etc)
START_DATE (date enrolled)
END_DATE (date degree completed)
row 1 row 2
------------- -------------
STUDENT_ID_NUMBER 1 1
OCCURRENCE 1 2
DEGREE_CODE BA MA
DEGREE_YEAR 2000 2000
COLLEGE_ID AA AA
SCHOOL_CODE BB BB
MAJOR_CODE CC CC
START_DATE 19990131 19990131
END_DATE 20010131 20010131
STAGE/WORK table:
row 1
-------------
STUDENT_ID_NUMBER 1 incoming data
OCCURRENCE 2 this needs to be retrieved from STUDENT_INFO table. STUDENT_ID_NUMBER/OCCURRENCE
is the key used in the vendor proprietary update process to update the STUDENT_INFO table
DEGREE_CODE MBA incoming data
DEGREE_YEAR 2000 incoming data
COLLEGE_ID AA incoming data
SCHOOL_CODE BB incoming data
MAJOR_CODE CC incoming data
START_DATE 19990131 incoming data
END_DATE 20010131 incoming data
如果需要更多的澄清,我很乐意
Luke可能尝试添加一些样本输入数据和预期结果。你真的很难理解你想要什么。这不是一个业务需求/用户故事,这是一个技术决策,是为了实现一个。你被这场战争折磨着。虽然你的陈述客观上是真实的,但不可能加入不存在的东西,我怀疑有一些额外的信息使这成为可能,即,只有对最新的“事件”进行修改,并且。。。你需要陈述实际要求,并提供前后数据的示例,以便得到一个合理的答案。我还建议,提出辞职可能被认为有点极端。。。我倾向于先和你的同事谈谈。当“事实”在这个上下文中没有被理解的含义时,使用“事实”是没有帮助的。要么是PK,要么不是PK,要么是候选密钥。尽可能多地使用理解意思的单词,尽可能多地努力说出你的意思。在我们找到如何表达之前,我们通常不知道自己的意思。根据您提供的信息,我们无法判断学生1,MBA学位,收到的数据必须触发事件2的更新。据我所知,这可能是一个新的事件。其余数据(学生+学院+学校+专业+开始日期)是否符合候选密钥?或者它们也可以更新吗?也许可以尝试添加一些示例输入数据和预期结果。你真的很难理解你想要什么。这不是一个业务需求/用户故事,这是一个技术决策,是为了实现一个。你被这场战争折磨着。虽然你的陈述客观上是真实的,但不可能加入不存在的东西,我怀疑有一些额外的信息使这成为可能,即,只有对最新的“事件”进行修改,并且。。。你需要陈述实际要求,并提供前后数据的示例,以便得到一个合理的答案。我还建议,提出辞职可能被认为有点极端。。。我倾向于先和你的同事谈谈。当“事实”在这个上下文中没有被理解的含义时,使用“事实”是没有帮助的。要么是PK,要么不是PK,要么是候选密钥。尽可能多地使用理解意思的单词,尽可能多地努力说出你的意思。在我们找到如何表达之前,我们通常不知道自己的意思。根据您提供的信息,我们无法判断学生1,MBA学位,收到的数据必须触发事件2的更新。据我所知,这可能是一个新的事件。其余数据(学生+学院+学校+专业+开始日期)是否符合候选密钥?或者它们也可以更新吗?