>Thanks for the reply Bob,
>
>May I ask then what is the purpose of the SET(...) datatype ?

It has some peculiarities that make it useful sometimes. Among other 
things, the values are actually stored as numbers, which can be handy 
when you're sorting.

>In the past, I've always avoided it since I assumed that any
>search that uses LIKE '%x%' in a query would be slow. However,
>I now have a table  that will never grow to more than 5,000
>entries and using the SETs for 3 of the columns has made life
>way easier so far, especially when creating the administration
>screens for this application. 5,000 rows is very small for
>a database and my queries using LIKE '%x%' have been very
>fast. In fact, the only problem I've encountered is this inability
>to retrieve a list of all the SET values that are used at
>least once.
>
>I know it's not 'proper' database design and I should have
>normalized the one-to-many relationships to multiple tables.
>However, it was fast and gave me a result which worked quickly
>(and up against a mad deadline).

I think you've just identified the most common use of the SET datatype.

>
>Thanks again,
>
>chas

In your original posting, you said that a procedural solution 
wouldn't scale well. If you database will never be more than 5,000 
records, why are you concerned about scalability? Are you planning on 
processing a hundred concurrent queries?

Bob Hall

>
>  >Bob wrote:
>  >Sir, the basic problem is that you've violated first normal form,
>  >which states columns should only contain atomic (indivisible) data.
>  >Since you plan to divide up the data in your columns, it's obviously
>  >not indivisible.
>  >
>  >My recommendation is to brush up on the first three normal forms and
>  >redesign your tables. There may be a way to do what you want with
>  >MySQL functions, but that will require a lot of processing and slow
>  >your queries down. You'll be back where you started, with a solution
>  >that doesn't scale well.
>
>  >>Chas  wrote:
>  >>I have a column that is defined as a SET. For simplicity's sake,
>  >>let's say the column is defined as:
>  >>
>  >>set_col SET ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', .... 'Z')
>  >>
>  >>After entering a few hundred rows, I know that some but not all
>  >>values of the SET have been used at least once.  How can one work
>  >>out which values have been used at least once ?
>  >>
>  >>Doing a SELECT DISTINCT(set_col) on the table might provide
>  >>something like this:
>  >>
>  >>A,B,D
>  >>A,C,G,N,M,P
>  >>C,E,F,H,I,R,S
>  >>C,E,G,I
>  >>D,F
>  >>G,H,L,M,O
>  >>etc
>  >>
>  >>But it then requires processing to work out which
>  >>values have been used at least once. It's not very
>  >>scalable.
>  >>
>  >>Is there a method to retrieve a list of all the values
>  >>that have been used at least once ?
>  >
>
>
>---------------------------------------------------------------------
>Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
>
>To request this thread, e-mail <[EMAIL PROTECTED]>
>To unsubscribe, e-mail 
><[EMAIL PROTECTED]>
>Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Know thyself? Absurd direction!
Bubbles bear no introspection.     -Khushhal Khan Khatak

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to