SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.11.2012 21:35:25

alexander666
Участник
Зарегистрирован: 28.01.2009
Сообщений: 7

Делема с таблицей

Здравствуйте!

Иерархия такая: Марка->Модель->Модификация->Тачка
Пишу в самом простом пимере:

1. Таблица МАРКИ // напр., Mercedes
CREATE TABLE Marks(
  mark_id int(10) auto_increment,
  mark_name varchar(32),
  PRIMARY_KEY(mark_id);
)

2. Таблица МОДЕЛИ // напр., E-240
CREATE TABLE Models(
  model_id int(10) auto_increment,
  model_name varchar(32),
  mark_id int(10), // указывает, к какой марке привязана данная модель
  PRIMARY_KEY(model_id);
)

3. Таблица МОДИФИКАЦИИ // напр., W210, W211, W212 и т.д.
CREATE TABLE Modfs(
  modf_id int(10) auto_increment,
  modf_name varchar(32),
  model_id int(10), // указывает, к какой моделе привязана данная модификация
  mark_id int(10), // указывает, к какой марке привязана данная модификация
  // или здесь лишь model_id достаточно, ведь по ней мы можем и марку определить?
  PRIMARY_KEY(modf_id);
)

4. Таблица ТАЧКИ // конечное звено, напр., Mercedes E240 (W212)
CREATE TABLE Cars(
  car_id int(10) auto_increment,
  ........ здесь идуи характеристики, цена, цвет, пробег и т.д.........
  modf_id int(10), // указывает, к какой модицикации привязана данная тачка
  model_id int(10), // указывает, к какой моделе привязана данная тачка
  mark_id int(10), // указывает, к какой марке привязана данная тачка
  // или здесь лишь modf_id достаточно, ведь по ней мы можем модель, а по модели и марку определить?
  PRIMARY_KEY(car_id);
)

Если бы всё обстояло именно так, то запрос на выборку всех тачек был бы:

SELECT t1.car_id, t2.mark_name, t3.model_name, t4.modf_name FROM Cars as t1, Marks as t2, Models as t3, Modf as t4 WHERE t1.mark_id=t2.mark_id AND t1.model_id=t3.model_id AND t1.modf_id=t4.modf_id

Если кто запутался, напишу вкратце (без модификации, в 3 таблицах):
Marks:
mark_id | mark_name

Models:
model_id | model_name | mark_id

Cars:
car_id | mark_id | model_id
или
car_id | model_id

Как грамотнее и быстродейственнее?

Отредактированно alexander666 (21.11.2012 21:37:52)

Неактивен

 

#2 21.11.2012 22:51:38

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Делема с таблицей

Вопрос в том нужны ли отдельные модификаторы для марки/модели  (// или здесь лишь modf_id достаточно, ведь по ней мы можем модель, а по модели и марку определить) ?

Зависит от ваших запросов. Например, если вы будете искать все мерседесы зеленого цвета, то нужны.

Неактивен

 

#3 22.11.2012 01:17:05

alexander666
Участник
Зарегистрирован: 28.01.2009
Сообщений: 7

Re: Делема с таблицей

vasya написал:

Вопрос в том нужны ли отдельные модификаторы для марки/модели  (// или здесь лишь modf_id достаточно, ведь по ней мы можем модель, а по модели и марку определить) ?

Зависит от ваших запросов. Например, если вы будете искать все мерседесы зеленого цвета, то нужны.

http://sqlinfo.ru/forum/viewtopic.php?pid=35374#p35374 - вам не подойдёт?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson