Взаимосвязь таблиц MySQL и использование хеша md5 - PullRequest
2 голосов
/ 24 марта 2012

У меня есть MySQL DB с 2 таблицами:

  • sample_name (хранит имя файла, несколько имен для одного и того же sample_hash);
  • sample_hash (хранит хэши файла, не будет хранить дубликаты md5);

(все таблицы имеют id int без знака NOT NULL auto_increment)

Мой первый вариант связать эти две таблицы - создать столбец md5 в обеих таблицах и связать их. Однако, похоже, у этого есть недостаток, так как я буду дублировать varchar (32), который может быть пустой тратой пространства с миллионами записей.

Мой второй вариант - сначала вычислить хэши файлов, взять mysql_insert_id() таблицы sample_hash и вставить в таблицу sample_name. Это имеет смысл, если хэш в таблице sample_hash является новым, поэтому в моем распоряжении есть переменная mysql_insert_id().

Но если хеш уже существует в samples_db, я не хочу снова хранить хеш, поэтому у меня не будет mysql_insert_id().

Есть ли альтернатива, кроме поиска идентификатора данного md5, чтобы сохранить его в таблице samples_name в случае, если md5 уже существует? Если так, как я могу это сделать?

1 Ответ

1 голос
/ 28 марта 2012

Исходя из описанных вами требований, таблица sample_hash вообще не нужна.

Вы можете хранить хэши в таблице sample_name и выполнять поиск значений хешей в этой таблице.

...