Консультация № 29430
12.11.2005, 19:03
0.00 руб.
0 9 2
Здравствуйте,
подскажите как поступают умные?

Есть несколько таблиц-справочников с полями ID, NAME.
Как называть Primary Key, чтобы по его названию было понятно что это за Primary Key?
Может так PK_ID_TABLENAME? Я так понимаю, что создать несколько Primary Key в базе данных с названием PK_ID не получится...

Обсуждение

Неизвестный
12.11.2005, 19:20
общий
это ответ
Здравствуйте, Vitava!
Реально, СУБД позволяет иметь одинаковые названия полей в двух разных табицах, но чисто для человеческого понимания лучше чтобы в каждом поле был признак таблицы.
Например я делаю трех-буквенное сокращение названия таблицы и добавляю его в начало названия поля. При этом все поля, которые имею одинаковую функцию имеют одинаковые имена с учетом трехбуквенного префикса.
давно
Мастер-Эксперт
425
4118
13.11.2005, 07:45
общий
это ответ
Здравствуйте, Vitava!
Индекс относится не ко всей базе данных, а к каждой конкретной таблице. Так что не парьте голову и назовите все ID. :)
Вот только зря Вы не пишете формат Вашей базы. Ответ был бы более приближен к реальности. :)
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
13.11.2005, 16:15
общий
Уточняю вопрос. База Interbase. Создать для разных таблиц с полями ID, NAME Primary индексы с названием PK_ID не получается. Поэтому хотелось и узнать как лучше именовать индексы в таком случае.
давно
Мастер-Эксперт
425
4118
13.11.2005, 17:02
общий
Если речь идет об Interbase, то вообще непонятно, с какого бодуна у Вас мог возникнуть вопрос об имени Primary key. :)Давайте обратимся к синтаксису его создания:CREATE TABLE Table1 (Id INT NOT NULL PRIMARY KEY, Name VARCHAR(30))Это при условии, что в первичный ключ входит одно поле. Если два, то синтаксис будет выглядеть так:CREATE TABLE Table1 (Id INT NOT NULL, Name VARCHAR(30) NOT NULL, PRIMARY KEY (Id, Name))Если обобщить, то первичный ключ вообще НИКАК не называется. :)У меня создалось впечатление, что Вы путаете первичный ключ и индекс. Это разные вещи. Если я угадал, то уточните вопрос.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
13.11.2005, 17:18
общий
Для полного понимания, привожу скриптCREATE TABLE TOVAR_NAME ( ID DOUBLE PRECISION NOT NULL, NAME VARCHAR(100) CHARACTER SET NONE NOT NULL);ALTER TABLE TOVAR_NAME ADD CONSTRAINT PK_ID_TOVAR_NAME PRIMARY KEY (ID);Насколько я понимаю PK_ID_TOVAR_NAME - это имя Primary Key.Вот о нем то и идет речь.
давно
Мастер-Эксперт
425
4118
13.11.2005, 17:33
общий
Теперь я понял о чем идет речь. PK_ID_TOVAR_NAME - это не название первичного ключа. :)Я, если честно, затрудняюсть перевести слово CONSTRAINT, но это именно его название. Ориентировочно (но возможно не точно) это означает ОГРАНИЧЕНИЕ.Покопаюсь в документации, если что-нибудь найду по этому поводу, я Вам напишу.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
давно
Мастер-Эксперт
425
4118
13.11.2005, 17:49
общий
Да, CONSTRAINT - это именно секция определнных ограничений, которая относится ко всей таблице. Каждая такая секция должна иметь уникальное название. У primary key, еще раз повторю, никакого названия нет.
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Неизвестный
13.11.2005, 18:37
общий
И что в этом случае это ограничение обозначает?
давно
Мастер-Эксперт
425
4118
13.11.2005, 19:12
общий
Теперь уж Вы и сами можете понять:ограничение с именем PK_ID_TOVAR_NAME означает добавление первичного ключа по полю ID.Правда не понятно, зачем такое изуверство. Более понятно сделать бы так, как я Вам написал. У Вас руководство по языку есть? Загляните по этой ссылке:http://www.ibase.ru/develop.htmузнаете много интересного. :)
Об авторе:
Я только в одном глубоко убеждён - не надо иметь убеждений! :)
Форма ответа