Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие-ко-многим, какой выбрать PK в таблице? / 11 сообщений из 11, страница 1 из 1
13.02.2006, 12:54
    #33540577
Kezya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
Всем здравствуйте.
необходимо создать связь многие ко многим. релизуется на трёх таблицах, но в четвёртую таблицу необходим внешний ключ на это отношение. есть два варианта:
1. в связующей таблице первичный ключ сделать составным из внешних ключей на исходные таблицы, соответственно в четвёртую таблицу тоже нужны будут эти два значения. Вот так:
Table1
ID
Table2
ID
Table1_2
ID_Table1
ID_Table2
AnotherTable
ID
ID_Table1
ID_Table2
2. в связующей таблице первичный ключ сделать суррогатным(identity) и соответственно в четвёртой таблице будет всего одно поле. Вот так:
Table1
ID
Table2
ID
Table1_2
ID
ID_Table1
ID_Table2
AnotherTable
ID
ID_Table1_2
как лучше сделать?
Заранее большое спасибо
...
Рейтинг: 0 / 0
13.02.2006, 13:01
    #33540605
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
Kezyaкак лучше сделать?
В основном я бы улучшил ситуацию, удачнее назвав поля :)

На "лучше" здесь нет однозначного ответа. Если Вам в четвертой таблице будут полезны ключи первых двух - делайте первый вариант, сможете писать прямые join-ы без третьей таблицы. Если не нужны - суррогатный ключ сэкономит место и время и снизит вероятность ошибки. Наконец, может быть ситуация, в которой оптимумом будет объединить третью и четвертую таблицы (расширить третью дополнительными полями).
...
Рейтинг: 0 / 0
13.02.2006, 13:09
    #33540634
Azamat
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
Почему бы просто не сделать так:

Table1
ID

Table2
ID

AnotherTable
ID
ID_Table1
ID_Table2
...
Рейтинг: 0 / 0
13.02.2006, 13:10
    #33540638
Kezya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
softwarer Kezyaкак лучше сделать?
В основном я бы улучшил ситуацию, удачнее назвав поля :)

Почему мои названия Вам кажутся неудачными? :)
...
Рейтинг: 0 / 0
13.02.2006, 13:18
    #33540670
Kezya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
AzamatПочему бы просто не сделать так:

Table1
ID

Table2
ID

AnotherTable
ID
ID_Table1
ID_Table2
Да, я уже так и сделал. В четвертой таблице будет суррогатный ключ, чуть длинне запросы (доп. объединение).
...
Рейтинг: 0 / 0
13.02.2006, 13:34
    #33540747
ModelR
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
С тчки зрения контроля изменения данных, варианты отличаются ограничениями, которые накладываются внешним ключом AnotherTable -- Table1_2. Внешний ключ на составной ключ (вариант 1) приводит к ограничению таблицей AnotherTable изменений в Table1_2. Вариант 2 от этого свободен.
Что лучше естественно зависит от приложения.
...
Рейтинг: 0 / 0
13.02.2006, 13:42
    #33540783
Visitor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
Kezya softwarer Kezyaкак лучше сделать?
В основном я бы улучшил ситуацию, удачнее назвав поля :)

Почему мои названия Вам кажутся неудачными? :)

хороший вопрос... я бы не знал как ответить

есть более менее общие принципы и подходы к наименованию таблиц и полей...

с вашим подходом вы в них не укладываетесь... кстати - схема и шаблоны которыми руководствуется разработчик при именовании объектов БД - один из первых косвенных признаков оценки качества разработки...

субуго ИМХО
...
Рейтинг: 0 / 0
13.02.2006, 13:48
    #33540807
Kezya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
Объясните, пожалуйста, чем неудачна данная, скажем так, "нотация" :)
...
Рейтинг: 0 / 0
13.02.2006, 14:08
    #33540901
Visitor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
KezyaОбъясните, пожалуйста, чем неудачна данная, скажем так, "нотация" :)


дело Ваше, конечно...
...
Рейтинг: 0 / 0
13.02.2006, 14:12
    #33540919
Kezya
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
Спасибо!
...
Рейтинг: 0 / 0
13.02.2006, 15:11
    #33541112
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Связь многие-ко-многим, какой выбрать PK в таблице?
KezyaПочему мои названия Вам кажутся неудачными?
По опыту работы с системами, использовавшими разные варианты нотаций. Не готов к пространному обсуждению, просто подкину факт для размышления: в Вашей нотации слова "ID" и "ID" означают совершенно разные вещи (например, Goods.ID и Accounts.ID) и в то же время слова "ID" и "ID_Goods" могут означать одно и то же.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Связь многие-ко-многим, какой выбрать PK в таблице? / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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