Кросс-таблица или он-лайн-поиск

general

Новичок
Кросс-таблица или он-лайн-поиск

Добрый день,

Наш институт планирует выложит свою базу по биохим. соединениям. База это - 9 таблиц по 100-200 тысяч строк (MySQL-PHP), 5 полей (VARCHAR 255).


Все таблицы однотипны - т.е. поля совпадают. Но у каждого соединения есть родственные в 8-ми других таблиц. Эта родственность уже заключена в названии, так что найти их через LIKE очень просто.

Вопрос у нас следующий. Стоит ли искать родственные соединения на лету (при загрузке), либо построить какую-либо кросс-таблицу?

Есть ли у кого опыт подобной работы, поделитесь, пожалуйста.
 

Panchous

Павел
отношения между сущностями, хранящимися в БД принято описывать соответствующе:
для этого есть внешние ключи.
в Вашем случае связь будет МНОГИЕ-КО-МНОГИМ, что подразумевает отдельную таблицу с соответствиями....
 

ForJest

- свежая кровь
general
Вообще задачу можно решить по разному.
I способ
1. Все данные запихать в одну таблицу - ведь поля же совпадают? И сделать лишь поле
ENUM('Type1', 'Type2', 'Type3'...)
2. Сделать табличку Family (id, MainTitle)
3. Добавить в первуют таблицу поле id_family
-----------------------------
II способ
1. Оставляем как есть
2. Сделать табличку Family (id, MainTitle)
3. Добавить таблицу - связку
id_family, id_table1, id_table2, id_table3 ....
----------------------------
 

general

Новичок
Спасибо.

Сразу не указал свои опасения. Если делать выборку "на лету" простым перебором, через Like - это критично для MySQL ?
 

ForJest

- свежая кровь
general
Если есть индекс на поле, по которому производится LIKE
и маска поиска 'something%' - т.е. % не стоит первым символом - то поиск будет идти довольно быстро.
Если же нет индекса или маска '%something' то поиск будет идти полным перебором.
Подробнее:
http://dev.mysql.com/doc/mysql/ru/mysql-indexes.html
 
Сверху