Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / использование PrimaryKey / 25 сообщений из 41, страница 1 из 2
01.08.2002, 08:45:02
    #32040139
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
Проясните, пожалуйста !
У меня в таблице в состав PK должны входить две даты, но по логике работы, таких запросов не существует, т.к. эти даты суть границы диапазона. Если я не буду декларировать наличие PK у таблицы, что я нарушу, или в чем здесь ошибка ?
P.S. Индексы существуют. У значений дат время сброшено в нуль.
...
Рейтинг: 0 / 0
01.08.2002, 08:50:33
    #32040140
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
в состав PK входят только эти два поля с датами? или еще что-то?
...
Рейтинг: 0 / 0
01.08.2002, 08:56:50
    #32040141
Alexandr Kapustin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
Главное, чтобы у таблицы был бы хотя бы один уникальный индекс... Все остальное - от лукавого :)
а обзовете ли вы его РК или нет, дело ваше...
...
Рейтинг: 0 / 0
01.08.2002, 09:03:25
    #32040142
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
физически все работать будет. А вот концептуально... Это называется "слабая сущность" вроде
...
Рейтинг: 0 / 0
01.08.2002, 09:26:53
    #32040148
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
to AVL
в состав PK кроме пары дат входят и другие атрибуты.
А чем мне грозит использование "слабой сущности" ?
...
Рейтинг: 0 / 0
01.08.2002, 09:36:01
    #32040150
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
Вдогонку:
Согласен, что PK - это выбранный из всех возможных. Меня смущает, что Codd, кажется говорил, что для каждого базового отношения PK должен быть выбран.
Или я путаю ?
...
Рейтинг: 0 / 0
01.08.2002, 09:40:59
    #32040152
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
слабая сущность - когда на нее не сделать references, т.е. если на эту таблицу нигде не будет ссылок.
Иногда для обеспечения именно ссылочной целостности применяют суррогатный первичный ключ.
...
Рейтинг: 0 / 0
01.08.2002, 09:43:54
    #32040154
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
если эта таблица используется как справочник, то наличие PK обязательно. Иначе - достаточно уникального индекса
...
Рейтинг: 0 / 0
01.08.2002, 10:27:49
    #32040163
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
Многострадальная таблица - это так называемая таблица связи "работник" - "бригада":
table kadrdept(idKadr, idDept, dbeg, dEnd),
она хранит принадлежность работника к подразделению предприятия. Ссылки на нее конечно есть. По idKadr и idDept.

1.Правильно ли я понял, что объявлять для этой таблицы
PK as {idKadr, idDept, dbeg, dEnd} не обязательно ?
2. Думаю в данном случае и формирование PK как некий суррогатный ключ также не нужно.
...
Рейтинг: 0 / 0
01.08.2002, 10:45:45
    #32040174
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
Таблица без ключа говорит об ошибках проектирования.
Суррогатный ключ дает возможность более быстрого объединения таблиц. В случае наличия суррогатного ключа, в таблице должен быть альтернативный ключ.
...
Рейтинг: 0 / 0
01.08.2002, 11:07:12
    #32040180
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
to Genady
1. Я считаю также.
2. Следовательно, в таблицу
table kadrdept(idKadr, idDept, dbeg, dEnd) требуется добавить поле idSurrogate ?
...
Рейтинг: 0 / 0
01.08.2002, 11:20:03
    #32040183
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
:) да. и еще уникальный индекс по 4 полям
...
Рейтинг: 0 / 0
01.08.2002, 11:22:54
    #32040185
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
2 sql

Я не могу давать Вам совет добавлять атрибут в отношение или нет, т.к. из Вашего описания трудно понять задачу. Я не знаю что значит у Вас таблица связи, таблица которая обеспечивает отношение многие ко многим?
Что касается суррогатного ключа, то надо изначально решить использовать его или нет и в дальнейшем однообразно проектировать все сущьности.
...
Рейтинг: 0 / 0
01.08.2002, 11:38:57
    #32040196
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
to Genady
Да, таблица
table kadrdept(idKadr, idDept, dbeg, dEnd)
связана с table kadr(idKadr, ...) как (M:1) и с таблицей
table dept(idDept, ...) как (N:1).
А суррогатные ключи я использую не редко.
Однако, (к моему сожалению) не вижу, чем грозит отказ от объявления PK для таблицы kadrdept ?
...
Рейтинг: 0 / 0
01.08.2002, 12:07:56
    #32040213
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
В таком случае, для Вашей таблицы РК будет состоять из двух полей idKadr, idDept и дополнительно ничего добавлять не нужно.

А суррогатные ключи я использую не редко.
Суррогатные ключи надо либо использовать либо не использовать. Если используете, то используете во всех таблицах, не забывая определять альтернативные ключи, которые были бы первичными если бы не использовались суррогатные.
...
Рейтинг: 0 / 0
01.08.2002, 12:11:48
    #32040215
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
И еще один совет - давайте таблицам и столбзам осмысленные названия, это поможет при проектировании и в дальнейшем при сопровождении.

Например, Ваш Dept лучше назвать Department, сущьность должна соответствовать какому то реальному объекту, дав правильное название сущности Вы можете проверить себя, правильно ли эту сущность определили.
...
Рейтинг: 0 / 0
01.08.2002, 12:18:53
    #32040217
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
to Genady
1. Если использовать только два поля idKadr и idDept, то где хранить "историю данных" ? Например, как отследить изменени численности работников подразделения за период (месяц, квартал, год) ?
2. У меня большинство ключей - суррогатные ключи, но
на чем основано приведенное Вами правило "Суррогатные ключи надо либо использовать либо не использовать." ?
...
Рейтинг: 0 / 0
01.08.2002, 12:21:31
    #32040219
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
pk: либо все 4 поля, либо суррогатный
...
Рейтинг: 0 / 0
01.08.2002, 12:22:05
    #32040220
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
pk: либо все 4 поля, либо суррогат
...
Рейтинг: 0 / 0
01.08.2002, 12:22:58
    #32040221
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
прошу прощения за повтор - глюки с нашей прокси
...
Рейтинг: 0 / 0
01.08.2002, 12:26:10
    #32040226
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
1. Если использовать только два поля idKadr и idDept, то где хранить "историю данных" ? Например, как отследить изменени численности работников подразделения за период (месяц, квартал, год) ?

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

на чем основано приведенное Вами правило "Суррогатные ключи надо либо использовать либо не использовать." ?

Ну скажем так, это не правило а совет, Вам просто будет проще работать с таблицами созданными по одним и тем же правилам.
...
Рейтинг: 0 / 0
01.08.2002, 12:27:22
    #32040229
Genady
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
pk: либо все 4 поля, либо суррогат

Почему?
...
Рейтинг: 0 / 0
01.08.2002, 12:40:56
    #32040237
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
сорри. Конечно от постановки задачи зависит :)
...
Рейтинг: 0 / 0
01.08.2002, 12:46:55
    #32040241
sql
sql
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
to Genady
1. Согласен со всеми Вашими замечаниями (короткие наименования типа "dept" я просто использую для форума).
2. Если мое решение ошибочно (как часть проекта), то рискну предложить вариант:
вместо таблицы kadrdept(idKadr, idDept, dbeg, dEnd)
использовать
новаю таблицу kadrdept(idKadr, idDept, idSurrogate) и
дополнительную таблицу history(idSurrogate, dBeg, dEnd).
При этом нет вопросов о PK.
Это - решение ?
...
Рейтинг: 0 / 0
01.08.2002, 12:48:47
    #32040243
AVL
AVL
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
использование PrimaryKey
я бы сделал все в одной таблице, зачем усложнять базу?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / использование PrimaryKey / 25 сообщений из 41, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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