![]() | |
![]() |
| | Thread Tools | Display Modes |
#11
| |||
| |||
|
|
Sampo Syreeni wrote: [snip] And since one would have to have a bona fide range datatype, building in handling for infinite ranges would also be easy; that'd get rid of one of the most persistent reasons why people incorporate nulls into designs. I think you are being excessively optimistic. The most persistent (and most common) reason people incorporate nullable columns into designs is because they have a misplaced desire to minimize the number of tables in the design, and think that conflating multiple fact types in one table is clever, efficient, and harmless. |
#12
| |||
| |||
|
|
variable precision would be available at least at the conceptual level. At the physical one, it could always be implemented so that the complexity if bounded by the less precise of the compared values, or in fact limited to some fixed value at physical design time. |
|
And since one would have to have a bona fide range datatype, building in handling for infinite ranges would also be easy; that'd get rid of one of the most persistent reasons why people incorporate nulls into designs. |
|
-- Sampo |
#13
| |||
| |||
|
|
Sampo Syreeni wrote: [snip] And since one would have to have a bona fide range datatype, building in handling for infinite ranges would also be easy; that'd get rid of one of the most persistent reasons why people incorporate nulls into designs. I think you are being excessively optimistic. The most persistent (and most common) reason people incorporate nullable columns into designs is because they have a misplaced desire to minimize the number of tables in the design, and think that conflating multiple fact types in one table is clever, efficient, and harmless. |
|
-- Roy |
#14
| |||
| |||
|
|
Right now it is to be expected that I will be spreading the good relational word among my peers, in the near future. That is an opportunity one doesn't want to fuck up; many enough have gone down that road already. So I've been going over, and over, and over the basics. Don't want them to be able to catch me off guard with the minutiae, after all... So now I bump into my first real surprise, and the chills immediately go down my spine. That's Date et al.'s answer regarding the implications between 6NF and DK/NF, athttp://www.dbdebunk.com/page/page/621935.htm . In there they flat out state that DK/NF doesn't imply 6NF. So, my first question is, can this really be true? I mean, this seems highly suspect to me: since 6NF is a normal form like any other and is as such defined by the constraints it upholds by design, and on the other hand DK/NF is by definition a normal form where any constraint whatsoever follows from the domain and key ones, shouldn't it be self- evident that DK/NF logically implies 6NF, and in fact any other form? No matter the fact that there might well be databases which could be put into 6NF which cannot attain DK/NF? I think at the very least said implication should follow at the price of making it a vacuous truth (i.e. all (non-trivial?) 6NF databases could be such that they cannot be put into DK/NF)? In particular I suspect that the seeming lack of implication follows from not treating the time dimension(s) on an equal footing with the rest of the attributes in a relation. That, then, would at least to me seem like a rather grave violation of the information principle. The second point ain't as much a rebuke as a retort: I wonder whether Date and Darwen chose their model of time -- which 6NF is defined on top of -- based on convenience and familiarity, instead of some deeper theoretical reasoning. To me the idea that time in a relational database should be treated as a discrete, countably infinite set of disjoint moments at a preset temporal granularity seems just unnatural, and unnecessarily limiting. To me it would seem much more natural to model time as a full continuum of precise moments in time, and to constrain such real life models using a finite (but otherwise unlimited cardinality) set of FOPL constraints, relying on the full linear order on top of the reals, on top. I.e. to model time using CW-complexes over the real line (i.e. finite unions of open, closed and semi-closed intervals of reals), in a fully discrete but also fully variable precision approximation. Model-wise, 6NF as D&D define it immediately generalizes to this -- all that needs to be changed is to quantify every defining formula over the corresponding nondenumerable set -- yet the possibility of rigorously modelling the interaction between open and closed intervals as well is a considerable plus when dealing with general intersection queries. I also consider the the fact that imputing any kind of chosen- ahead granularity parameter into the basic model suddenly becomes unnecessary a huge plus. So, do you think this sort of approach is sound? Finally, I of course have the firm intention of covering the essentials, including the basics of dependency and normalization theory at least upto 6NF and DK/NF. If my audience proves to be game, I'd also like to mention in passing some of the lesser known, more esoteric, and less fully researched topics in dependency theory like (E)(B)MVD's (cf. e.g.http://www2.cs.uregina.ca/~butz/publications/ipmu00.pdf ), just to make sure people don't accidentally think they've mastered the subject after what is a mere, hurried, introduction. I'd hope to pique some genuine interest in the relational way of thought, among people who perhaps haven't been exposed to the mindset, eventhough otherwise more than capable in modelling data. If you could suggest other ways to accomplish the feat, I would greatly appreciate a hint. -- Sampo |
#15
| |||
| |||
|
|
Somebody once called me pretentious. I replied, "Moi?" |

#16
| |||
| |||
|
|
On Nov 16, 8:42*pm, Sampo Syreeni <de... (AT) iki (DOT) fi> wrote: |
|
What is a purpose of 6NF if key is compound? I mean very compound. Vladimir Odrljin- Hide quoted text - |
#17
| |||
| |||
|
|
"Roy Hann" <specially (AT) processed (DOT) almost.meat> wrote in message news:3eudnYx_I7CpiZXWnZ2dnUVZ7qSdnZ2d (AT) pipex (DOT) net... Sampo Syreeni wrote: [snip] And since one would have to have a bona fide range datatype, building in handling for infinite ranges would also be easy; that'd get rid of one of the most persistent reasons why people incorporate nulls into designs. I think you are being excessively optimistic. The most persistent (and most common) reason people incorporate nullable columns into designs is because they have a misplaced desire to minimize the number of tables in the design, and think that conflating multiple fact types in one table is clever, efficient, and harmless. I think you are oversimplifying. The most persistent (and most common) reason people incorporate nullable columns into designs is the not so misplaced desire to provide for information that is relevant but not required, and that doesn't necessarily involve conflating multiple fact types in one table. Each table design represents a family of interdependent predicates. |
#18
| |||
| |||
|
|
Mr. Scott wrote: "Roy Hann" <specially (AT) processed (DOT) almost.meat> wrote in message news:3eudnYx_I7CpiZXWnZ2dnUVZ7qSdnZ2d (AT) pipex (DOT) net... Sampo Syreeni wrote: [snip] And since one would have to have a bona fide range datatype, building in handling for infinite ranges would also be easy; that'd get rid of one of the most persistent reasons why people incorporate nulls into designs. I think you are being excessively optimistic. The most persistent (and most common) reason people incorporate nullable columns into designs is because they have a misplaced desire to minimize the number of tables in the design, and think that conflating multiple fact types in one table is clever, efficient, and harmless. I think you are oversimplifying. The most persistent (and most common) reason people incorporate nullable columns into designs is the not so misplaced desire to provide for information that is relevant but not required, and that doesn't necessarily involve conflating multiple fact types in one table. Each table design represents a family of interdependent predicates. That last sentence is the crux of your objection to my comment. I guess since you and I are implicitly talking about SQL and since SQL makes few if any claims to fidelity with the relational model, you are entitled to think whatever you like about tables that represent "a family of interdependent predicates". Personally I have no idea what those are supposed to behave like, |
|
but I am pretty sure that in practice they must suck. Certainly every example I've ever had to deal with did. At this point I invoke the Principle of Incoherence and drop out of the discussion. I will however allow that you may be right that yours is an even more common reason people introduce nullable columns. It would be worth investigating which really is most common, so that appropriate remedial training can be devised. [much erudite-looking stuff snipped] -- Roy |
#19
| |||
| |||
|
|
Regarding DK/NF and 6NF you can see my solution at www.dbdesign11.com. There I introduce “Simple Form” an effective solution which decomposes any relation to Binary Relations. |
|
Regarding time my solution is event oriented. |
#20
| |||||
| |||||
|
|
That sentence applies not only to SQL tables but also to Codd's time-varying relations and Date and Darwen's relvars. Date defines a relvar's predicate as the conjunction of all of the constraints that apply to it, but I think he's wrong. |
|
The logical connective should be IFF rather than AND. The difference is subtle, and may at first glance appear problematic since IFF is true whenever none of its operands are true, but under the closed world assumption, the only atomic formulas that are ever represented in the database are those that are supposed to be true, so there is no harm in choosing IFF over AND. The main reason I think the connective should be IFF rather than AND involves deletes. While inserting a row effectively asserts that all of the atomic formulas represented by the row are true |
|
of the whether the logical connective is IFF or AND, |
|
the same can't be said for deletes. When the logical connective is IFF, deleting a row effectively denies that any (not all) of the atomic formulas represented by the row are true, but when the logical connective is AND, deleting a row effectively denies that all (not any) of the atomic formulas represented by the row are true, which can be even if only one isn't. |
|
If some but not all of the atomic formulas represented by a row were true, but a row can't be in the table unless they're all true, then where is that positive information to be stored? Without anywhere to store it, the database is inconsistent. |
![]() |
| Thread Tools | |
| Display Modes | |
| |