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-ти)
это тестирование порсонала

Спустя 20 минут, 15 секунд (8.08.2010 - 19:58) maximka787 написал(а):
Вопрос в том, чтоб id во всех таблицах пренадлежали одному человеку..
Человек после регистраии получит ЛОГИН ПАРОЛЬ и соответственно id.
Потом внесет более подробную инфу (вторая таблица) и потом тестирование пройдет (третья таблица)
Я реализовал пока так:
Первая таблица заполнчется вручную (логин пароль и автоинкремент ИД)
insert into tab1 ('', $username, $password,$mail);
Делее идет запрос на наличие одинакового e-mail
// получаем ИД который только что получился
// может это и нелепо но кроме как по уникальному мылу проверить не могу
а делать запрос на 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);
вот, умней ничего не придумал)
Человек после регистраии получит ЛОГИН ПАРОЛЬ и соответственно id.
Потом внесет более подробную инфу (вторая таблица) и потом тестирование пройдет (третья таблица)
Я реализовал пока так:
Первая таблица заполнчется вручную (логин пароль и автоинкремент ИД)
insert into tab1 ('', $username, $password,$mail);
Делее идет запрос на наличие одинакового e-mail
// получаем ИД который только что получился
// может это и нелепо но кроме как по уникальному мылу проверить не могу

а делать запрос на 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() не нужен.
Поясните, в каком моменте конкретно не понятно?
Затем. После того как пользователь зарегистрировался, он получает определенный 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()
_____________
..Работает - не трогай!