[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с архитектурой БД (MySQL)
GET
Такая вот главная таблица

CREATE TABLE `i_k` (
`id_k`mediumint(5) NOT NULL auto_increment,
`tvr` varchar(50) default NULL,
`odr` mediumint(4) default NULL,
`sks` mediumint(4) default NULL,
PRIMARY KEY (`id_kats`)
)
ENGINE=MyISAM AUTO_INCREMENT=519 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=519 ;


К ней привязаны таблицы:

К полю sks:

CREATE TABLE `i_suf` (
`id_sks` mediumint(4) NOT NULL auto_increment,
`suf` varchar(50) NOT NULL,
PRIMARY KEY (`id_suf`)
)
ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;


К полю odr

CREATE TABLE `i_odr` (
`id_odr` mediumint(4) NOT NULL auto_increment,
`razdel` varchar(50) NOT NULL,
`glava` tinyint(2) NOT NULL,
PRIMARY KEY (`id_oder`)
)
ENGINE=MyISAM AUTO_INCREMENT=62 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=62 ;


К полю glava таблицы i_odr:

CREATE TABLE `i_glava` (
`id_glava` smallint(2) NOT NULL auto_increment,
`glava` varchar(30) NOT NULL,
PRIMARY KEY (`id_glava`)
)
ENGINE=MyISAM AUTO_INCREMENT=15 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=15 ;


Как мне кажется все сделано правильно. Т.е. таблицы связаны через индексы (INT), со своими строковымим значения(VARCHAR) и нигде не повторяются. Построенно древо из таблиц, и на нем видно, как, скажем поле sks главной таблицы является полем ключей для таблицы i_suf.

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


1. Вытащить все из главной i_k
2. Вытащить нужное из i_suf
3. Вытащть нужное из i_odr
4. Вытащить все из i_glava

Т.е. составить 4 запроса, чтоб обладать полной инфой по нужной мне строчке из главной таблицы.

Вопрос такой.

Все ли так делают??? Или я перемудрил с нормализацией???



Спустя 1 час, 9 минут, 34 секунды (13.12.2010 - 10:57) ABC написал(а):
И еще вот ругается на строчку:

$mod=mysql_query("SELECT COUNT(`p_m`) FROM `".mysql_real_escape_string ($baz)."` WHERE `p_m`='".=mysql_real_escape_string ($_GET['model'])."'",$a_db) or die ("BD site dimage!".mysql_error());


пишет

Parse error: syntax error, unexpected T_CONCAT_EQUAL in Z:\home\localhost\www\Itr\Trs\port.php on line 109

Почему?

Спустя 24 минуты, 32 секунды (13.12.2010 - 11:21) SlavaFr написал(а):
Цитата (A.B.C. @ 13.12.2010 - 06:47)
CREATE TABLE `i_suf` (
`id_sks` mediumint(4) NOT NULL auto_increment,
`suf` varchar(50) NOT NULL,
PRIMARY KEY (`id_suf`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=2 ;

чето с id_suf непонятно.
2)
".=

Спустя 54 минуты, 2 секунды (13.12.2010 - 12:15) sergeiss написал(а):
Цитата (A.B.C. @ 13.12.2010 - 11:57)
Parse error: syntax error, unexpected T_CONCAT_EQUAL in Z:\home\localhost\www\Itr\Trs\port.php on line 109

Почему?

Потому что найди в строке, где у тебя идет '.=', и оставь только точку.

Спустя 25 минут, 41 секунда (13.12.2010 - 12:41) ABC написал(а):
sergeiss
Точно!!! Блин....



Цитата
чето с id_suf непонятно.


...там просто опечатка
`id_suf` mediumint(4) NOT NULL auto_increment,

Спустя 3 минуты (13.12.2010 - 12:44) ABC написал(а):
SlavaFr
Спасибо...

а по архитектуре самой????

Спустя 1 час, 44 минуты, 29 секунд (13.12.2010 - 14:29) SlavaFr написал(а):
Цитата (A.B.C. @ 13.12.2010 - 09:44)
а по архитектуре самой????

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



_____________
Не тот велик, кто не падал, а тот кто падал и поднимался.
Быстрый ответ:

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