Homework #6 FAQ

ORACLE Questions

Question: What's the difference between a ROW type and a COLUMN type in Oracle?
Answer: Well, Oracle really doesn't provide the type of encapsulation that the book talks about with ADT's, and both types are declared in the same way in Oracle, so think of the difference lying in the intended use of a type. If a type is created with the intent that it represent an entire tuple inside a table, it is a ROW type. If a type is created with the intent that it will be used as one attribute inside a tuple, it is a COLUMN type. So there is a fine line between the two, but there is an important distinction between the two, even if it is only in "intent" and not in actual implementation. You should be able to find cases in your PDA where you will use both ROW and COLUMN types in very different ways...

PDA Question 3

Question: What is the difference between "Access of data within a table type" and "Use of a table type's value in a FROM clause"?
Answer: The intention was that for "Access of data within a table type", you should not need to use the THE keyword, whereas for the "FROM clause" part you should. For an example, look at the ORACLE objects page, and look at the following queries:

This would be without using THE to access a table (the table type being
accessed here is lines2, and you are accessing the end1 and end2 pointers
inside that table):
SELECT ll.end1.x, ll.end2.x
     FROM Lines2 ll;

This would be with using THE to access a table:
     SELECT ss.x
     FROM THE(SELECT points
              FROM Polygons
              WHERE name = 'square'
             ) ss
     WHERE ss.x = ss.y;

Question 2

Question: How do I know when a set of FD's is minimal? Is there a short cut?
Answer: There really is no short cut. In order to decide that a set of FDs is minimal you need to

    1) Try to delete an FD.
    2) Try to delete elements from the left side of an FD.
If these 2 steps fail (i.e., you cannot preform one of these steps and still end up with an equivalent set of FDs), then you know you have a minimal set. If not, then you don't -- you can delete something from the set and start all over again. It's a brute force algorithm. However, just like there were certain techniques to determine which attributes were in keys to help speed up the process of finding a minimal key, you can apply similar techniques here to figure out which FD's you definitely cannot delete...

Last modified: Tue Nov 16 00:40:37 PST 1999