[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вопрос по разделению таблиц
maximka787
Ребят, привет. Подскажите пожалуйста, правильно ли я сделал. Очень для меня важно, тк я часто делал все в одной". У меня 3 таблицы в базе.

id,user,passwd
id,lastname,firstname,databirth и тд.
id,clubs,kafe,kino и тд.

id везде одинаковый.
Правильно ли будет при создании аккаунта (заполенение первой таблицы) автоматически заполнить сразу вторую и третью таблицу (нулями например) и одинаковым id с помощью скрипта?

insert into tab1 ($id,0,0,...,0);
insert into tab2 ($id,0,0,...,0);
insert into tab3 ($id,0,0,...,0);

или это по-другому делается?

я мог хранить свю информацию в одной, но разделил на 3 таблицы. И мне надо понять как [ПРАВИЛЬНО] чтобы mysql сама создала три строки (с помощью тригеров каких то) или это вообще по-другому делается?



Спустя 24 минуты, 29 секунд (8.08.2010 - 19:35) waldicom написал(а):
Вопросы:
- зачем Вы разделили первую и вторую таблицы
- что должно храниться в третьей?

Спустя 2 минуты, 54 секунды (8.08.2010 - 19:38) maximka787 написал(а):
Цитата (waldicom @ 8.08.2010 - 16:35)
Вопросы:
- зачем Вы разделили первую и вторую таблицы
- что должно храниться в третьей?

очень большой обьем информации.

1 таблица содержит 4 поля (логин пароль и тд)
2 - 6 полей (информация более подробная)
3- 62 поля (тестирование) (ответ одна цифра от 1 до 5-ти)

это тестирование порсонала smile.gif

Спустя 20 минут, 15 секунд (8.08.2010 - 19:58) maximka787 написал(а):
Вопрос в том, чтоб id во всех таблицах пренадлежали одному человеку..
Человек после регистраии получит ЛОГИН ПАРОЛЬ и соответственно id.
Потом внесет более подробную инфу (вторая таблица) и потом тестирование пройдет (третья таблица)

Я реализовал пока так:
Первая таблица заполнчется вручную (логин пароль и автоинкремент ИД)

insert into tab1 ('', $username, $password,$mail);

Делее идет запрос на наличие одинакового e-mail

// получаем ИД который только что получился
// может это и нелепо но кроме как по уникальному мылу проверить не могу smile.gif
а делать запрос на last_insert_id не могу (вдруг второй юзер втиснеться и увеличит id на 1
// Я представил что регистрация у меня идет по несколько человек в секунду)) это прикол но хочу систему чтоб была рассчитана и на это.

select * from tab1 where email = $email; .....
$myID = $row['id'];

insert into tab2 ($myID ,0,0,0,0,0,0,0);
insert into tab3 ($myID ,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);


вот, умней ничего не придумал)

Спустя 34 минуты, 59 секунд (8.08.2010 - 20:33) waldicom написал(а):
О, Вы же уже открывали подобную тему? Или нет? Там не пришли к единому мнению?

Спустя 1 минута, 58 секунд (8.08.2010 - 20:35) maximka787 написал(а):
Цитата (waldicom @ 8.08.2010 - 17:33)
О, Вы же уже открывали подобную тему? Или нет? Там не пришли к единому мнению?

Я сейчас работаю над этой частью проекта. И я запутался. Вот и хотелось бы услышать мнение специалистов.
А в прошлый раз я не о том говорил. да и всеравно там никто не помог.

Спустя 12 минут, 11 секунд (8.08.2010 - 20:47) waldicom написал(а):
Итак: первую и вторую таблицы объеденить, ибо отношение 1 к 1 в данном случае не нужно.
Затем. После того как пользователь зарегистрировался, он получает определенный ID. После тестрования вставляются поля в таблицу ответов и userId текущего пользователя. last_inserted_id() не нужен.

Поясните, в каком моменте конкретно не понятно?

Спустя 11 минут, 23 секунды (8.08.2010 - 20:58) maximka787 написал(а):
Цитата (waldicom @ 8.08.2010 - 17:47)
После тестрования вставляются поля в таблицу ответов и userId текущего пользователя. last_inserted_id() не нужен.
Поясните, в каком моменте конкретно не понятно?


Меня сам механизм смутил свой же. По моей логике надо чтобы когда человек зарегится то небыло таблиц пустых.

сначала создается 1 пользователь и автоматически остальные 3 таблицы тоже сразу заполняются, например нулями но поле ИД принадлежит строго одному человеку.

А уж когда юзер ответил на вопросы то они не вставляются INSERT-ом
а UPDATE происходит.



//примечание
"по моей логике" - важно чтобы все таблицы сразу заполнились. без этого чудо система не будет работать если в какой то из таблиц не окажется ИД.

это 100% СВЯЗАННАЯ ТАБЛИЦА ПОЛУЧАЕТСЯ.

Спустя 6 минут, 28 секунд (8.08.2010 - 21:05) maximka787 написал(а):
Была бы моя воля я бы все 90 полей сделал в одной таблице, да говорят так не делается, логически надо разделить. (АВТОРИЗАЦИЯ, ИНФОРМАЦИ О ЧЕЛОВЕКЕ, ВОПРОСЫ)
И поэтому получается что я рассчитываю чтобы эта связка таблиц работала как единая.
Это прям горизонтальное масштабирование какое-то))

Спустя 1 час, 33 минуты, 28 секунд (8.08.2010 - 22:38) waldicom написал(а):
Цитата (maximka787 @ 8.08.2010 - 19:58)
"по моей логике" - важно чтобы все таблицы сразу заполнились. без этого чудо система не будет работать если в какой то из таблиц не окажется ИД.

Это неправильные пчелы и они делают неправильный мед
Не думаю, что это правильное проектирование и его лучше заменить. Но если уж так хочется ипспользовать систему, с которой Вы в будущем получите много головной боли, то используйте mysql_insert_id()


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.