Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 21:06   #1
silwerhof
 
Регистрация: 01.10.2012
Сообщений: 3
По умолчанию как создать ссылку(внешний ключ)

Подскажите пожалуйста как сделать ссылку на станцию отправления итд на разные типы?

1. Создать базу данных со следующей структурой:
1.1. Таблица "ЖД Станции". Структура: суррогатный первичный ключ,
название станции, количество путей, длина пути (кол-во вагонов,
устанавливающихся на пути)
1.2. Таблица "Поезда". Структура: номер поезда (естественный первичный
ключ), количество вагонов, ссылки на станцию отправления и станцию
назначения, время отправления и время прибытия

CREATE TABLE STATION (
ST_ID INTEGER NOT NULL,
ST_NAME VARCHAR(40) CHARACTER SET WIN1251 NOT NULL,
ST_WAY INTEGER NOT NULL,
ST_TRUCK INTEGER NOT NULL);

/* Primary key */

ALTER TABLE STATION ADD CONSTRAINT PK_STATION PRIMARY KEY (ST_ID);

CREATE TABLE TRUCK (
TR_NAME VARCHAR(10) CHARACTER SET WIN1251 NOT NULL,
TR_WAGON INTEGER NOT NULL,
TR_ST_DEP VARCHAR(40) CHARACTER SET WIN1251 NOT NULL,
TR_ST_DES VARCHAR(40) CHARACTER SET WIN1251 NOT NULL,
TR_DEP_TIME TIMESTAMP NOT NULL,
TR_DES_TIME TIMESTAMP NOT NULL);

/* Primary key */

ALTER TABLE TRUCK ADD CONSTRAINT PK_TRUCK PRIMARY KEY (TR_NAME);
silwerhof вне форума Ответить с цитированием
Старый 06.10.2012, 22:32   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Меня забавляет такая вот структура таблицы:
Цитата:
Структура: суррогатный первичный ключ, название станции, количество путей, длина пути
Допустим, в одной из записей таблицы зафиксировано что на такой-то станции есть 4 пути.
Длину какого пути нужно указывать в этой записи? Первого, 2-го, а может четвертого?

P.S. Автор темы, не мешало бы рассказать о какой СУБД речь идет.
P.P.S. А на кой ляд нужны эти внешние ключи?
Скандербег вне форума Ответить с цитированием
Старый 06.10.2012, 22:37   #3
silwerhof
 
Регистрация: 01.10.2012
Сообщений: 3
По умолчанию

длина пути - это количество вагонов которые могут уместиться на станции, СУБД FireBird
silwerhof вне форума Ответить с цитированием
Старый 06.10.2012, 22:47   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

http://firebirdsql.su/doku.php?id=constraint
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 06.10.2012, 22:59   #5
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

Что "количество вагонов" - это понятно из первого поста, но недоумение вовсе не поэтому поводу. Почему в структуре таблицы, где хранится количество путей, есть поле длины ОДНОГО пути (или, если хотите, количества вагонов на ОДИН путь)?
Ведь в первом посте ясно и не двусмысленно сказано: "количество путей, длина пути". Вот и возникает вопрос: длина какого из нескольких путей, если они разной длины, мы укажем в поле "Длина пути"?

Если запись в таблице должна содержать длину всех путей на станции, то так и надо говорить: "количество путей, длина всех путей".

И все же, можно узнать зачем нужны внешние ключи? Просто интересно знать какими путями (надо же, какое совпадение) идет мысль разработчика БД.

Последний раз редактировалось Скандербег; 06.10.2012 в 23:38.
Скандербег вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Добавить внешний ключ в ibexpert Kreadlling БД в Delphi 1 01.04.2012 14:11
Внешний ключ Access Lazio Microsoft Office Access 0 07.12.2011 23:25
Как создать ссылку в редакторе Джек Бентон HTML и CSS 1 14.11.2010 16:58
Как создать внешний файл kostello Общие вопросы C/C++ 2 29.08.2009 23:26
Дайте ссылку или объясните как создать html help Волк Общие вопросы Delphi 4 07.02.2009 10:04