Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как называется такое связывание таблиц?  [new]
Alexei772
Member

Откуда: Россия
Сообщений: 224
Ниже я опишу строение БД, которое используется у нас на работе в корпоративной базе. Пользователи имею возможность создавать связи между всеми таблицами. Это конечно удобно ("наверное") для работы через уже созданный кем-то интерфейс. Работать с программой очень удобно. Но мне предстоит ее поддерживать. Иногда происходит торможение отображения связей между колонками, я думаю, это из-за неверно построенных запросов.

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

Итак у меня есть несколько отдельных таблиц.

Таблицы с данными:
- таблица USERS с колонками users_id (PrimaryKey, AutoIncrement), users_name, users_password, status
- таблица GOODS с колонками goods_id (PK, AI), goods_name, goods_comment
- и прочие таблицы

Есть две таблиц через которые связываются все возможные таблицы из этой БД:
- таблица LINKS (связи) с колонками links_id(PK, AI), links_markdel
- таблица LinksObj (что связывается) с колонками LinksObj_id(PK, AI), LinksObj__links_id (связь с колонкой links_id из таблицы LINKS), table_name, table_id, type

При добавлении связей между значениями таблиц делается некая операция состоящая из трех действий. Примером связи возьмем связь между пользователем (USERS, пользователь alex, id=2) и товаром (GOODS, товар cherry, id=3). И так действия будут такие:
- в первую очередь добавляем в таблицу LINKS новую строку и получаем значение счетчика AutoIncrement, приравняем это значение перменной AILINKS, например, значение "4".
- во вторую очередь добавляем в таблицу LinksObj строку со следующими значения:
* LinksObj__links_id = значение AILINKS = "4"
* table_name = название таблицы = USERS
* table_id = номер счетчика у alex = 2
- в третью очередь добавляем в таблицу LinksObj строку со следующими значения:
* LinksObj__links_id = значение AILINKS = "4"
* table_name = название таблицы = GOODS
* table_id = номер счетчика у alex = 3

Таким образом у нас получилась связь между двумя таблицами. Можно было бы в эту связь добавить и еще одну таблицу, если в этой связи это нужно. Например к такой связи можно добавить тип цвета товара, его размер и проче... Соответсвенно, таблица цветов будет COLORS (colors_id, colors_name) и таблица размером SIZES (sizes_id, sizes_name), а связи это будет выглядеть так:
* LinksObj__links_id = значение AILINKS = "4"
* table_name = название таблицы = COLORS
* table_id = номер счетчика у цвета
и
* LinksObj__links_id = значение AILINKS = "4"
* table_name = название таблицы = SIZES
* table_id = номер счетчика у цвета

Пример таблиц:

Содержание таблицы USERS
users_id, users_name, users_password
1, none, none, blocked
2, alex, 123, active
3, mari, 321, active

Содержание таблицы GOODS (товары)
goods_id, goods_name, goods_comment
1, none, none
2, apples, NULL
3, cherry, NULL

Содержание таблицы LINKS
links_id, links_markdel
1, markdel
...
...
4, NULL

Содержание таблицы LinksObj
LinksObj_id, LinksObj__links_id, table_name, table_id
1, 1, NULL, NULL
...
...
...
...
5, 4, USERS, 2
6, 4, GOODS, 3


Есть ли у такого типа связей какое-то название? Где про него можно почитать?
29 янв 12, 12:57    [11991148]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить