hum I have an hard time understanding, but if I'm right: CREATE TABLE files( fileID smallint unsigned auto_increment, filename varchar(36) not null, primary key (fileID) )
CREATE TABLE types( typeID smallint unsigned auto_increment, typename varchar(36) not null, typeext char(4) not null unique, primary key (typeID) ) You'll need a third table linking the two (because it will be a N:N relationship) A file may have many extensions and an extension may have many files. CREATE TABLE filetypes ( fileID smallint unsigned not null, typeID smallint unsigned not null, unique index (fileID,typeID), unique index (typeID,fileID) ) Now insert some dummies mysql> select * from files; +--------+----------+ | fileID | filename | +--------+----------+ | 1 | foo | | 2 | bar | | 3 | baz | +--------+----------+ 3 rows in set (0.00 sec) mysql> select * from types; +--------+-----------------+ | typeID | typename | +--------+-----------------+ | 1 | photoshop image | | 2 | word document | | 3 | excel sheet | | 4 | jpeg image | | 5 | jpeg image | +--------+-----------------+ 5 rows in set (0.00 sec) Now let's say you have an image that can have either jpeg or jpg: mysql> select * from filetypes; +--------+--------+ | fileID | typeID | +--------+--------+ | 3 | 1 | | 1 | 2 | | 2 | 4 | | 2 | 5 | +--------+--------+ 5 rows in set (0.00 sec) mysql> SELECT filename, typename, typeext FROM files, types, filetypes WHERE filetypes.fileID = files.fileID AND filetypes.typeID = types.typeID AND filename LIKE "bar"; +----------+------------+---------+ | filename | typename | typeext | +----------+------------+---------+ | bar | jpeg image | jpg | | bar | jpeg image | jpeg | +----------+------------+---------+ 5 rows in set (0.00 sec) I hope it's what you wanted Etienne btw, if you find any mailing list ont he web for general relational DB design issues, let me know. I searched and could not find any:( Erik Price wrote: > > Hello, > > I was looking for some advice on building my database. If this is an > offtopic question, I apologize in advance! > > I'm building a database with several tables. Only two of them pertain > to my question. Also, as I have not yet built my tables (I'm planning > them), I can't include contents of a dump. > > One of the tables is called "files", the other is called "types". Here > is a quick sketch of what "files" looks like (there is more but this is > really all that matters): > > +---------+-----------+---------+ > | file_id | file_name | type_id | > +---------+-----------+---------+ > | | | | > | | | | > | | | | > | | | | > +---------+-----------+---------+ > > here is "types": > > +---------+-----------+-----+ > | type_id | type_name | ext | > +---------+-----------+-----+ > | | | | > | | | | > | | | | > | | | | > +---------+-----------+-----+ > > You can probably figure out what I'm doing here. file_id and type_id > are INTEGER-based primary keys which simply give me a nice reference > number to give each row. file_name and type_name are VARCHAR(36) > columns. files.type_id is really the same as types.type_id, and > types.ext is a VARCHAR(5) column. Queries will look like this: > > SELECT files.file_name > FROM files, types > WHERE types.ext LIKE "txt" > AND files.type_id = types.type_id ; > > So that a user can enter "txt" as a file's extension and all the files > that are .txt files will be returned. > > First of all, I hope I'm doing this right. > > Second of all -- some files types (file formats) have more than one > extension. For instance, I write HTML files and use JPEGs. But > sometimes I'll use a graphics program that automatically renames the > file ".JPG" and I won't change it because it's too much of a pain. Or > someone I work with might have use Windows, and instead of writing a > .html file, they may have their extension as .htm (the "l" is missing). > > What is the best way to accommodate all of this? I would like to make > the "types" table a comprehensive list of all file formats with their > associate extensions so that when a filename comes up, the user can > easily see what format that file is in (and there would be other > columns, such as "open_in" with the name of an application to open that > file with; e.g.: Photoshop for ".psd" or Illustrator for ".ai"). > > Any advice? > > Thank you, > > Erik Price > > --------------------------------------------------------------------- > 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 -- Etienne Marcotte Specifications Management - Quality Control Imperial Tobacco Ltd. - Montreal (Qc) Canada 514.932.6161 x.4001 --------------------------------------------------------------------- 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