Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Автомобиль -> Марка -> Модель - как связать? / 13 сообщений из 13, страница 1 из 1
11.05.2005, 00:42
    #33056367
grundic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
Доброго времени суток.

Разрабатываю приложение для страховой коспании. Работаю с FB 1.5, FibPLUS и EhLib.

Есть таблица с автомобилями, с марками и с моделями. Связи такие:

Автомобиль -> Марка
Автомобиль -> Модель,
(так сделано сейчас... )

т.е. приходится отдельно выбирать марку, затем модель. Марки с моделями не связаны :(
Пытался делать так:

Автомобиль -> Марка <- Модель,

т.е. у Марки много моделей и много автомобилей с одной и той же маркой. Получается замечательно: когда пользователь выбрал модель Audi, то в списке моделей стоят, например, A4, A6, A8.

Но выходит, что тогда необходимо связывать Автомобиль и модель ! Но у меня закольцованность получается.... Почитал книжки, ничего такого не нашел и все-таки, думаю что так нельзя....

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
-----------------------------------
CAR
  CARID       INT
  CMARKAID    INT
  CMODELID    INT

MARKA
  MARKAID     INT
  TITLE       STR[ 16 ]

MODEL
  MODELID     INT   
  MMARKAID    INT
  TITLE       STR[ 16 ]
-----------------------------------

Т.е. автомобиль ссылается и на марку и на модель.... С lookup полями пытался при такой схеме сделать приложение, но тогда в CMODELID заипсывалось значение Lookup поля, а не ID.


Вопрос: можно ли так делать(закольцованность таблиц)?
Если так делать нельзя, то подскажите пожалуйста, как организовать таблицы и связи.

Заранее благодарен.
...
Рейтинг: 0 / 0
11.05.2005, 02:19
    #33056401
папа Карло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
Auto -> Model -> Make.
...
Рейтинг: 0 / 0
11.05.2005, 02:50
    #33056409
grundic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
У марки несколько моделей м.б.
...
Рейтинг: 0 / 0
11.05.2005, 03:00
    #33056413
Urri
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
Можно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
-----------------------------------
CAR -- WIN QWERTY12345, for example
  CARID     INT PK
  ----------------
  MAKEID    INT FK

MODEL -- Audi A6, for example
  MODELID   INT PK
  ----------------
  MAKEID    INT FK

MAKE -- Audi, for example
  MAKEID    INT PK
  ----------------
-----------------------------------
А можно и эдак
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
-----------------------------------
CAR -- WIN QWERTY12345, for example
  CARID     INT PK
  ----------------
  MODELID   STR[ 16 ] FK
  MAKEID    STR[ 16 ] FK

MODEL -- Audi A6, for example
  MAKEID    STR[ 16 ] PK FK
  MODELID   STR[ 16 ] PK
  ----------------

MAKE -- Audi, for example
  MAKEID    STR[ 16 ] PK
  ----------------
-----------------------------------
Я не понял, что есть марка, а что - модель, вот и выбрал, как придется.

А Ваши проблемы, как я их понял, есть проблемы даже не проектирования БД, а создания приложения. В общем случае, не приложение определяет структуру таблиц. Таблицы проектируются сами по себе, а уже потом пишут приложение для работы с ними.
...
Рейтинг: 0 / 0
11.05.2005, 03:20
    #33056415
папа Карло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
то, что там наверху я написал......

table cars:
===============
car_id <pk>
model_id <fk>
....

table models
================
model_id <pk>
brand_id <fk>

table brands
=================
brand_id


exampel:

car 1 -> altima 2.5 SL -> nissan
car 2 -> altima 3.5 SE -> nissan
car 3 -> Protege -> mazda
car 4 -> G35 Coupe -> infiniti
car 5 -> G35 Sedan -> infiniti

При таком подоходе, когда чел выберет infiniti он получит две модели в списке итд.... удачи,
...
Рейтинг: 0 / 0
11.05.2005, 03:28
    #33056417
grundic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
Urri , спасибо за советы.

Вообще, имелось ввиду, что МАРКА - это Audi, Opel, Ford, ВАЗ, ГАЗ и т.д а МОДЕЛИ - это A4, A6, A8(для Audi), Vectra, Corsa(для Opel)...

Видимо, подходит вторая схема.


1. Только я не понял, зачем у модели составной первичный ключ?

2. И еще: все-таки получается, что все три таблицы связаны между собой(в IBExpert'e получается треугольник - закольцованность). Это ничему не противоречит? У меня по поводу этого сомнения были.
...
Рейтинг: 0 / 0
11.05.2005, 03:32
    #33056419
grundic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
папа Карло ,

если я правильно поянл, пользователю сначала надо выбрать из кучи разнообразных МОДЕЛЕЙ нужную, а потом выбрать МАРКУ этой модели?

Нет, думаю, это нелогично.
...
Рейтинг: 0 / 0
11.05.2005, 03:39
    #33056421
папа Карло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
так нелогично работают несколько всемиро признанных автомобильных сайтов... наверное там тормоза работают

http://www.edmunds.com/ -- на первой же странице....
http://www.1010tires.com/ -- на первой же странице....
http://shop.oktire.com/SearchTire.aspx?LCID=en-ca

еще ссылок надо или вопрос про логику закроем? :)
...
Рейтинг: 0 / 0
11.05.2005, 03:41
    #33056423
папа Карло
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
сначала выбираешь Бренд машины.... Nissan, BMW, Benz, etc.... потом выбираешь модель машины.... Altima, Maxima, G500, G35, etc..... смотри внимательн она схему что я наверху привел.
...
Рейтинг: 0 / 0
11.05.2005, 09:14
    #33056563
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
При выборе однозначно сначала выбор марки, а потом модели.
Дополнительно можно сделать специальный поиск по модели.

Table Auto
id_auto primary key
id_model foreign key references Model.id_model
(здесь можно добавить инвентарный номер,
регистрационный номер в автоинспекции и т.д.)

Table Brand
id_brand primary key
brand_name

Table Model
id_model primary key
id_brand foreign key references Brand.id_brand
model_name

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

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.05.2005, 09:18
    #33056568
Va1entin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
P.S. 2papaCarlo

Это я понятнее постарался написать.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
11.05.2005, 09:52
    #33056632
grundic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
Вчера вечером лежал и переваривал....
Прошу прощения - воткнул :)


Большое спасибо!!!
...
Рейтинг: 0 / 0
11.05.2005, 11:04
    #33056833
grundic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Автомобиль -> Марка -> Модель - как связать?
Получилось сделать так: выбираем модель, автоматически выбирается бренд... Ну, это на самом деле лучше, чем отдельно и то и другое.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Автомобиль -> Марка -> Модель - как связать? / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]