Отношения между таблицами - PullRequest
0 голосов
/ 15 декабря 2009

У меня есть 3 таблицы: A, B и C. Таблица A связана (n: 1) с B и с C. Обычно я сохраняю в B. B.Id (или C.Id) и имя таблицы.

, например

A.ParentId = 1
A.TableName = "B"

A.ParentId = 1
A.TableName = "C"

A.ParentId = 2
A.TableName = "B"

Это хорошее решение? Есть ли другие решения?

Ответы [ 2 ]

1 голос
/ 15 декабря 2009

Почему бы не 2 парентидных столбца?

A.ParentIdB = 1
A.ParentIdC = 3

0 голосов
/ 15 декабря 2009

Другая возможность состоит в том, чтобы представить другую таблицу Content (D), которая служит «супертипом» для сообщений и изображений. Затем строка в комментариях (A) будет ссылаться на первичный ключ в контенте, как каждая строка в сообщениях (B) и изображениях (D). Любые общие поля в сообщениях и изображениях будут перемещены в содержимое (возможно, «заголовок» или «дата»), и эти исходные таблицы будут содержать только информацию, относящуюся к сообщению или изображению (возможно, «тело» или «разрешение»). Это упростит выполнение объединений, чем наличие имен таблиц в поле, но это означает, что реальная сущность может быть как постом, так и комментарием (или даже умножить пост или комментарий!). Правда, это зависит от ситуации, которую вы пытаетесь смоделировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...