Duplicate tags, FPP title attribute pony request May 1, 2006 11:40 AM Subscribe
Bug: You can attach the same tag multiple times to a post.
Pony: Title attribute on FPP link field?
Pony: Title attribute on FPP link field?
What is this, some sort of bug-and-pony show?
posted by Captain_Tenille at 1:12 PM on May 1, 2006
posted by Captain_Tenille at 1:12 PM on May 1, 2006
try the veal.
posted by boo_radley at 2:38 PM on May 1, 2006
posted by boo_radley at 2:38 PM on May 1, 2006
Er, how are the database tables for tagging done? That you can have duplicates makes me think it's like some other table with [Tags: storyId, tagName] ... if it were changed to [TagToStory: (pk)storyId, (pk)tagId] [Tags: (pk)tagId, (unique)TagName] it'd be faster and duplicates couldn't happen.
posted by holloway at 3:00 PM on May 1, 2006
posted by holloway at 3:00 PM on May 1, 2006
holloway, you're saying just change the tag sql query to only grab uniques then I don't even have to worry about dupes?
posted by mathowie (staff) at 3:39 PM on May 1, 2006
posted by mathowie (staff) at 3:39 PM on May 1, 2006
Well I'm just guess at the database structure, but if it's something like
story [storyId, userId, all details about the thread]
tags [storyId, tagName]
then it could be something like,
story [storyId, userId, all details about the thread] Primary Key: storyId
storyToTag [storyId, tagId] Primary Key: storyId, tagId.
tags [tagId, tagName] Primary Key: tagId.
So you put a many-to-many in the middle there, but as I said i'm just guessing it's the former because of the duplicates.
In this blog there's a Toxi Technique by someone who likes coining terms for basic SQL... he goes into the 3 table way and there's some pros and cons in the comments there.
On databases with decent optimisation paths (SQL Server, Postgres, Oracle... most things that aren't MySQL) the 3 table way scales way better than the others. This is with 10000 stories and 3~7 on tags per story on average, using stored procedures, and I've only tested this on SQL Server and Postgres, not Oracle, but I guess it's good too.
posted by holloway at 4:09 PM on May 1, 2006
story [storyId, userId, all details about the thread]
tags [storyId, tagName]
then it could be something like,
story [storyId, userId, all details about the thread] Primary Key: storyId
storyToTag [storyId, tagId] Primary Key: storyId, tagId.
tags [tagId, tagName] Primary Key: tagId.
So you put a many-to-many in the middle there, but as I said i'm just guessing it's the former because of the duplicates.
In this blog there's a Toxi Technique by someone who likes coining terms for basic SQL... he goes into the 3 table way and there's some pros and cons in the comments there.
On databases with decent optimisation paths (SQL Server, Postgres, Oracle... most things that aren't MySQL) the 3 table way scales way better than the others. This is with 10000 stories and 3~7 on tags per story on average, using stored procedures, and I've only tested this on SQL Server and Postgres, not Oracle, but I guess it's good too.
posted by holloway at 4:09 PM on May 1, 2006
I agree with holloway. Getting optimal queries in mysql might take quite a lot of effort for things like 'related tags', especially if you're using older versions of mysql. One thing I've found very helpful is the mysql EXPLAIN function, which lists everything the database is doing in a query, which helps you avoid very time-consuming things like table scans. The mysql manual has documentation about what you should be aiming for, and what to avoid.
A simple, short-term solution to the problem of selecting multiple tags is just doing SELECT UNIQUE rather than SELECT.
posted by matthewr at 4:29 PM on May 1, 2006
A simple, short-term solution to the problem of selecting multiple tags is just doing SELECT UNIQUE rather than SELECT.
posted by matthewr at 4:29 PM on May 1, 2006
matthewr: i think he uses sql server. EXPLAIN is great advice for mysql :)
Oh and obviously once you've got that tags table you can unique the tagName column so the database doesn't let you store duplicates.
posted by holloway at 4:33 PM on May 1, 2006
Oh and obviously once you've got that tags table you can unique the tagName column so the database doesn't let you store duplicates.
posted by holloway at 4:33 PM on May 1, 2006
meh, no need for a third table if the query is only pulling uniques.
posted by mathowie (staff) at 5:52 PM on May 1, 2006
posted by mathowie (staff) at 5:52 PM on May 1, 2006
Since I can't post twice in the same day, here's another bug:
BUG: It doesn't look like the quotation marks and hypen are being properly encoded in the MeFi RSS feed for this thread. All I see are ?'s.
posted by blue_beetle at 6:28 PM on May 1, 2006
BUG: It doesn't look like the quotation marks and hypen are being properly encoded in the MeFi RSS feed for this thread. All I see are ?'s.
posted by blue_beetle at 6:28 PM on May 1, 2006
mathowie: sure, if speed isn't an issue that's another way of doing it.
posted by holloway at 7:02 PM on May 1, 2006
posted by holloway at 7:02 PM on May 1, 2006
If uniqueness is enforced how will I ever tag something "swedish chef bork bork bork" ??
posted by phearlez at 2:19 PM on May 2, 2006
posted by phearlez at 2:19 PM on May 2, 2006
Well that's another problem entirely of words vs phrases.
posted by holloway at 2:40 PM on May 2, 2006
posted by holloway at 2:40 PM on May 2, 2006
You are not logged in, either login or create an account to post comments
pony: no thanks, I don't want to introduce more work for users for a hidden, little-used feature in browsers. I like to keep my entry forms as simple as possible.
posted by mathowie (staff) at 12:02 PM on May 1, 2006