You, yourself, explain why your suggestion would be a bad fit for this
project: SET is limited to just 64 discrete values per table.
I cannot remember reading that increasing the size of the SET features as
a priority on any development list. I might have missed something but I
don't think that SET>64 will be coming any time soon.
Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine
sheeri kritzer <[EMAIL PROTECTED]> wrote on 11/28/2005 09:53:49 AM:
> On this note, I feel as though the best way to do this in MySQL is to
> use the ENUM or SET types, instead of indexing against a separate
> table -- I'm guessing SET, so each piece of clipart can be associated
> with more than one category. Of course, that eliminates relevancy
> searches (which you could do as in the first example given by the OP,
> with a text field and fulltext search).
>
> I think the biggest problem with that is that SET only allows up to 64
> different items, so the clipart site could only have up to 64
> categories (and a Christmas floral arrangement might have the keywords
> "color", "flowers" and "Christmas").
>
> That being said, the point of this post is to ask -- Is MySQL working
> on allowing the SET limit to increase? Or is that just too much
> storage and math?
>
> -Sheeri
>
> On 11/25/05, Johan <[EMAIL PROTECTED]> wrote:
> > Hi Robb,
> >
> > Your table setup is correct. In the third table the two ID fields
together
> > form the Primary Key. This makes sure that you cannot add the same
keyword
> > twice to the same image. If you use MySQL Administrator to create your
> > tables then you just add both columns to the primary key index.
> > Programmatically it would look something like (to create the tabloe
and
> > indexes):
> >
> > CREATE TABLE "ClipartKeyword" (
> > "ClipartID" INT(11) NOT NULL,
> > "KeywordID" INT(11) NOT NULL,
> > PRIMARY KEY ("ClipartID","KeywordID"),
> > INDEX ("KeywordID")
> > ) TYPE=InnoDB;
> >
> > This database uses ANSI, hence the quotes around the field names. The
index
> > on KeywordID makes it easy to find all images that have a certain
keyword
> > attached to it.
> >
> > Good luck,
> >
> > Johan
> >
> > On 11/25/05, Robb Kerr <[EMAIL PROTECTED]> wrote:
> > >
> > > On Fri, 25 Nov 2005 10:44:44 -0800, Johan wrote:
> > >
> > > >> Option One
> > > >> Related tables. Table one (clipart pieces) contains ClipartID and
> > > >> ClipartName fields. Table two (keywords) contains KeywordID,
ClipartID
> > > and
> > > >> Keyword fields. This option will create an incredibly large
related
> > > table
> > > >> (keywords) with each piece of clipart having tens of related
fields in
> > > the
> > > >> keyword table. But, searching ought to be fast.
> > > >
> > > >
> > > > Use this option but use a third table that contains just ClipartID
and
> > > > KeywordID to create the m:n relationship. Like this:
> > > >
> > > > Clipart: ClipartID (primary key) & Clipartname
> > > > Keywords: KeywordID (primary key) & Keyword (just one so must be
unique)
> > > > Linktable: ClipartID & KeywordID (ClipartID + KeywordID = primary
key)
> > > >
> > > > I have a database like this with over 250,000 images, 50,000+
keywords
> > > and
> > > > more than 2 million image - keyword links. All my keyword searches
are
> > > very
> > > > fast (under 0.05 seconds per query).
> > > >
> > > > This is on very mediocre hardware (AMD Sempron 2600+ with only
512Mb of
> > > > memory) so performance on a faster computer with more memory
should be
> > > > excellent.
> > > >
> > > > HTH,
> > > >
> > > > Johan
> > >
> > > Please explain further your 3 table scenario. Is the following
example
> > > correct...
> > >
> > > Table One - Clipart
> > > ClipartID (primary key) | ClipartName
> > > 1 | artone.jpg
> > > 2 | arttwo.jpg
> > > 3 | artthree.jpg
> > >
> > > Table Two - Keywords
> > > KeywordID (primary key) | Keyword
> > > 1 | black and white
> > > 2 | color
> > > 3 | christmas
> > > 4 | thanksgiving
> > >
> > > Table Three - LinkTable
> > > ClipartID | KeywordID
> > > 1 | 1
> > > 1 | 3
> > > 2 | 2
> > > 2 | 3
> > >
> > > I don't understand what would be the primary key for the third table
or
> > > what you mean by "(ClipartID + KeywordID = primary key)". Please
> > > elaborate.
> > >
> > > Thanx,
> > > Robb
> > >
> > > --
> > > MySQL General Mailing List
> > > For list archives: http://lists.mysql.com/mysql
> > > To unsubscribe:
http://lists.mysql.com/[EMAIL PROTECTED]
> > >
> > >
> >
> >
>
> --
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]
>