Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выскажите свои замечания по табличке, дайте совет...
 
 автор: mr.artek   (07.12.2009 в 12:05)   письмо автору
 
 

Есть несколько таблиц, главная:

CREATE TABLE `user`(
    `id` INT(10) UNSIGNED NOT NULL auto_increment, 
    `login` VARCHAR(25) NOT NULL,
    `pass` VARCHAR(14) NOT NULL,
    PRIMARY KEY (`id`, `login`)    
)ENGINE=MyISAM
DEFAULT CHARSET=utf8
AUTO_INCREMENT=1 
COMMENT = "Таблица юзеров";


Осталные:

CREATE TABLE `info`(
    `id` INT(10) UNSIGNED NOT NULL,         
    `name` VARCHAR(20) DEFAULT '',            
    `surn` VARCHAR(25) DEFAULT '',    
    PRIMARY KEY (`id`)    
)ENGINE=MyISAM
DEFAULT CHARSET=utf8
COMMENT = "Инфа";


и так несколько штук....

CREATE TABLE `.....`(
    `id` INT(10) UNSIGNED NOT NULL,         
.......
.......
.......    
    PRIMARY KEY (`id`)    
)ENGINE=MyISAM
DEFAULT CHARSET=utf8
COMMENT = "......";

собственно думаю смысл понятен, в главной хранятся регистрационны даные, в остальных прочая инфа. Во всех таблицах обязательно должны быть записи по конкретному id.
Мне подсказали что нужно сделать связи таблиц или внешние ключи.. но я новичек, не знаю как сделать лучше и правельнее.
Вобщем буду рад любым советам и замечаниям по поводу этой схемы.

  Ответить  
 
 автор: Trianon   (07.12.2009 в 12:14)   письмо автору
 
   для: mr.artek   (07.12.2009 в 12:05)
 

Если связь в таблицах жестко 1:1 , то отдельных полей для чужого ключа делать не нужно.
Единственное, что имеет смысл снять признак автоинкремента с подчиненных таблиц. Собственно, у Вас он и не стоит.

  Ответить  
 
 автор: mr.artek   (07.12.2009 в 12:21)   письмо автору
 
   для: Trianon   (07.12.2009 в 12:14)
 

спасибо за ответ.
А не подскажите можно как нибудь за один запрос добавить записи во все таблицы?

И прочие операциии, я щас делаю так:
SELECT .... FROM user, info, ... WHERE user.id = info.id AND user.id = `.....`.id AND еще много таблиц. Получается длинное перечисление, можно как либо от этого избавиться?

  Ответить  
 
 автор: Trianon   (07.12.2009 в 12:25)   письмо автору
 
   для: mr.artek   (07.12.2009 в 12:21)
 

1. да простым способом - никак, собственно.
Из сложных можно попробовать хранимой процедурой.

2. Я бы предпочел цепочку LEFT JOIN ... ON ... но смысл особо не изменится - только наглядность.

  Ответить  
 
 автор: mr.artek   (07.12.2009 в 12:30)   письмо автору
 
   для: Trianon   (07.12.2009 в 12:25)
 

А что скажите насчет типа innodb?
Есть смысл в данном случае использовать её?

  Ответить  
 
 автор: Trianon   (07.12.2009 в 12:31)   письмо автору
 
   для: mr.artek   (07.12.2009 в 12:30)
 

в каком - данном?

  Ответить  
 
 автор: mr.artek   (07.12.2009 в 12:37)   письмо автору
 
   для: Trianon   (07.12.2009 в 12:31)
 

Ну при таком построении таблиц 1:1 )

  Ответить  
 
 автор: Trianon   (07.12.2009 в 12:39)   письмо автору
 
   для: mr.artek   (07.12.2009 в 12:37)
 

никак не связанные вещи.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования