| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: Surrogate Keys: an Implementation Issue
Paul Mansour wrote:
> paul c wrote:
>>...
paul m,
Thanks for the concrete example, I know it's a PITA typing all those spaces to make the columns line up but it sure has eased my neck-ache. Not sure I'd agree with the choice of terms, but anyhow, the example seems enough to follow a good part of what you're driving at.
I had been thinking that what you call an 'intermediate' level (intermediary scheme?) could correspond to what TTM calls a base relvar where one could project out ID and AT to get a TTM-style virtual relvar or 'view', but I see now that's not exactly what it means and candidates and surrogates aren't involved - eg., if SNO S1 is deleted, say by mistake, and then re-inserted the dbms would need to supply a new ID value (assuming there is no TS attribute) with the other attributes' values presumably still depending on the 'original' SNO value of S1.
For me, this all brings up vague questions which I don't have any definite comments about so I'll have to ponder them, to see how they might fit with normalization, the relational operators and maybe even temporal databases (when you suggest that the "log is the database", I can't help but think temporal), just exactly how the logical-physical distinction might be quantified as opposed to qualified and what-have-you. For example, if TRM is some kind of 'intermediate model', should all implementations specify just what their particular 'models' are? I'm not even sure that the example isn't verging into second-order predicates. Maybe this is just talking about the RT equivalent of anthropology's 'missing link'. So even if they're vague questions, I have a feeling they are big ones but they are in risky territory, not only because I'm weak at RT theory but because they touch on subjects that serious philosophers have been agreeing to disagree about for a century or more. Maybe Edgar Codd had thought long and hard about this and was far-sighted in not going into great detail about just what a table is, eg., just using the 'atomic' label to describe his role and domain values!
(Still trying, after many, many misfires, to send this quick reply for now. May not be able to reply further very soon as the cable internet connection here has gone flaky and we're waiting for a new line, but I think even though it's partly about 'implementation' this is a very interesting example, at least for somebody like me whose main experience is physical and who comes here because his theoretical knowledge is weak. I think this has the makings of a good thread, perhaps you should re-title it without the surrogate mention.)
p
ps: I think this example might also be veering away from the kind of 'foreign key' your original post mentioned. No criticism about that, and this is likely going in a different direction than you intended but it reminded me of an indirection technique I wanted to implement many years ago. The question goes something like this: 'what is the cheapest way to assign one thousand employees to a different department?'. Without violating the information principle, is it possible to re-assign them by updating only one tuple? The only approach to a solution I remember wondering about involved views where some attributes were read-only but their values were mutable, rather than immutable. Received on Sat Jul 22 2006 - 00:25:34 CDT
![]() |
![]() |