Тема: Организация БД

Добрый вечер друзья! Прошу совета/помощи/подсказки, Передо мной следующая задача:
Нужно сделать базу данных по всем организациям-поставщикам России, с возможностями
1) Добавление анкеты нового поставщика(если вы поставщик)
2) Поиск поставщика по нескольким критериям типа город, виды товаров и т.д.(соответственно если вы ищите поставщика для своей организации)
Как я это пока себе представляю:Грубо говоря человек заходит на сайт, перед ним две кнопки -

2

Re: Организация БД

Ограничение что-ли? не дали досказать...

3

Re: Организация БД

Вообщем если в крации - Человек заполняет анкету, эти переменные передаются в БД в ОДНУ единственную таблицу под названием - anketa(она получается большая). Как сделать так что-бы данные отправлялись в несколько таблиц котрые между собой связаны, и что бы потом их можно достать обратно в виде цельной заполненной анкеты? Мозгов у меня не хватает...растолкуйте кто-нибудь пожалуйста данный момент.

4

Re: Организация БД

Ну подскажите друзья

5

Re: Организация БД

Гриша сказал:

Как сделать так что-бы данные отправлялись в несколько таблиц котрые между собой связаны, и что бы потом их можно достать обратно в виде цельной заполненной анкеты?

Все таблицы можно связать через единый идентификатор, поле, которое во всех таблицах будет иметь одно значение. Например, если у основной таблицы анкеты есть идентификатор 1, то у остальных связанных таблиц должно быть поле такого же типа данных и строка с тем же значением - 1. Объединяются такие таблицы в единую, через SQL запрос с помощью метода JOIN.

Пример запроса на объединение 4 таблиц:

SELECT * FROM t1 LEFT JOIN (t2, t3, t4)
                 ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)

6

Re: Организация БД

Уважаемый Hanut благодарю вас за ответ. Теперь немного становится понятно. Можно уточнить? То есть в моем случае, как я понял, нужно создать несколько таблиц с одинаковым НАЗВАНИЕМ первичного ключей и и их ПАРАМЕТРОВ(INT и автоинкремент)??

То есть к примеру: таблица города - id(код города), name_gor(название города), таблица товары - id(код товара), name_tov(название товара) и т.д. То есть эти самые id будут в итоге совпадать? Вот я не пойму в чем разница? ведь все тоже самое я могу сделать одной ЕДИНСТВЕННОЙ большой таблицей под названием - анкета.

7

Re: Организация БД

которая включала бы в себя все поля.В чем недостаток такого способа?. С уважением, благодарю.

8

Re: Организация БД

Гриша сказал:

То есть в моем случае, как я понял, нужно создать несколько таблиц с одинаковым НАЗВАНИЕМ первичного ключей и и их ПАРАМЕТРОВ(INT и автоинкремент)?

Не совсем так. Поле идентификатора строки должно быть у каждой таблицы свое, обычно оно называется id; поле связи - это идентификатор основной таблицы. Например, есть основная таблица анкеты (anketa) с полем идентификатора id, тогда связанные таблицы будут иметь вид: таблица города - id(первичный ключ с автоувеличением), name_gor(название города), anketa_id (идентификатор из таблицы анкеты); таблица товары - id(первичный ключ с автоувеличением), name_tov(название товара), anketa_id (идентификатор из таблицы анкеты).

Делать отдельные связанные таблицы надо только в том случае, если у основной таблицы может быть несколько связанных строк. Например, у анкеты может быть поле фотографии; если фотография только одна, то данные можно сохранить в основной таблице, но если фотографий у анкеты может быть несколько, то сохранить их можно только в связанной таблице, связав ее с основной через поле идентификатора основной таблицы анкеты.

9

Re: Организация БД

Благодарю.Будем пробовать.