|
|
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
Проясните, пожалуйста ! У меня в таблице в состав PK должны входить две даты, но по логике работы, таких запросов не существует, т.к. эти даты суть границы диапазона. Если я не буду декларировать наличие PK у таблицы, что я нарушу, или в чем здесь ошибка ? P.S. Индексы существуют. У значений дат время сброшено в нуль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 08:45:02 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
в состав PK входят только эти два поля с датами? или еще что-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 08:50:33 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
Главное, чтобы у таблицы был бы хотя бы один уникальный индекс... Все остальное - от лукавого :) а обзовете ли вы его РК или нет, дело ваше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 08:56:50 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
физически все работать будет. А вот концептуально... Это называется "слабая сущность" вроде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 09:03:25 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
to AVL в состав PK кроме пары дат входят и другие атрибуты. А чем мне грозит использование "слабой сущности" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 09:26:53 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
Вдогонку: Согласен, что PK - это выбранный из всех возможных. Меня смущает, что Codd, кажется говорил, что для каждого базового отношения PK должен быть выбран. Или я путаю ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 09:36:01 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
слабая сущность - когда на нее не сделать references, т.е. если на эту таблицу нигде не будет ссылок. Иногда для обеспечения именно ссылочной целостности применяют суррогатный первичный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 09:40:59 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
если эта таблица используется как справочник, то наличие PK обязательно. Иначе - достаточно уникального индекса ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 09:43:54 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
Многострадальная таблица - это так называемая таблица связи "работник" - "бригада": table kadrdept(idKadr, idDept, dbeg, dEnd), она хранит принадлежность работника к подразделению предприятия. Ссылки на нее конечно есть. По idKadr и idDept. 1.Правильно ли я понял, что объявлять для этой таблицы PK as {idKadr, idDept, dbeg, dEnd} не обязательно ? 2. Думаю в данном случае и формирование PK как некий суррогатный ключ также не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 10:27:49 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
Таблица без ключа говорит об ошибках проектирования. Суррогатный ключ дает возможность более быстрого объединения таблиц. В случае наличия суррогатного ключа, в таблице должен быть альтернативный ключ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 10:45:45 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
to Genady 1. Я считаю также. 2. Следовательно, в таблицу table kadrdept(idKadr, idDept, dbeg, dEnd) требуется добавить поле idSurrogate ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:07:12 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
:) да. и еще уникальный индекс по 4 полям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:20:03 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
2 sql Я не могу давать Вам совет добавлять атрибут в отношение или нет, т.к. из Вашего описания трудно понять задачу. Я не знаю что значит у Вас таблица связи, таблица которая обеспечивает отношение многие ко многим? Что касается суррогатного ключа, то надо изначально решить использовать его или нет и в дальнейшем однообразно проектировать все сущьности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:22:54 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
to Genady Да, таблица table kadrdept(idKadr, idDept, dbeg, dEnd) связана с table kadr(idKadr, ...) как (M:1) и с таблицей table dept(idDept, ...) как (N:1). А суррогатные ключи я использую не редко. Однако, (к моему сожалению) не вижу, чем грозит отказ от объявления PK для таблицы kadrdept ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 11:38:57 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
В таком случае, для Вашей таблицы РК будет состоять из двух полей idKadr, idDept и дополнительно ничего добавлять не нужно. А суррогатные ключи я использую не редко. Суррогатные ключи надо либо использовать либо не использовать. Если используете, то используете во всех таблицах, не забывая определять альтернативные ключи, которые были бы первичными если бы не использовались суррогатные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:07:56 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
И еще один совет - давайте таблицам и столбзам осмысленные названия, это поможет при проектировании и в дальнейшем при сопровождении. Например, Ваш Dept лучше назвать Department, сущьность должна соответствовать какому то реальному объекту, дав правильное название сущности Вы можете проверить себя, правильно ли эту сущность определили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:11:48 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
to Genady 1. Если использовать только два поля idKadr и idDept, то где хранить "историю данных" ? Например, как отследить изменени численности работников подразделения за период (месяц, квартал, год) ? 2. У меня большинство ключей - суррогатные ключи, но на чем основано приведенное Вами правило "Суррогатные ключи надо либо использовать либо не использовать." ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:18:53 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
pk: либо все 4 поля, либо суррогатный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:21:31 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
pk: либо все 4 поля, либо суррогат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:22:05 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
прошу прощения за повтор - глюки с нашей прокси ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:22:58 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
1. Если использовать только два поля idKadr и idDept, то где хранить "историю данных" ? Например, как отследить изменени численности работников подразделения за период (месяц, квартал, год) ? Не вникнув в Вашу задачу и не проанализировав исходные данные я не могу дать ответ, если Вы заметили все мои советы это рекомендации к методологии, а правильно определить сущьности это уже Ваша забота как разработчика. на чем основано приведенное Вами правило "Суррогатные ключи надо либо использовать либо не использовать." ? Ну скажем так, это не правило а совет, Вам просто будет проще работать с таблицами созданными по одним и тем же правилам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:26:10 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
pk: либо все 4 поля, либо суррогат Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:27:22 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
сорри. Конечно от постановки задачи зависит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:40:56 |
|
||
|
использование PrimaryKey
|
|||
|---|---|---|---|
|
#18+
to Genady 1. Согласен со всеми Вашими замечаниями (короткие наименования типа "dept" я просто использую для форума). 2. Если мое решение ошибочно (как часть проекта), то рискну предложить вариант: вместо таблицы kadrdept(idKadr, idDept, dbeg, dEnd) использовать новаю таблицу kadrdept(idKadr, idDept, idSurrogate) и дополнительную таблицу history(idSurrogate, dBeg, dEnd). При этом нет вопросов о PK. Это - решение ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2002, 12:46:55 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32040150&tid=1821412]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 414ms |

| 0 / 0 |
