@Myma

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

Например есть пользователь, у него есть заказы, у заказов есть подзаказы, у подзаказов есть логи итд.
Иногда нужно понять какой лог относится к какому заказу или пользовтелю, могут быть ситуации, когда нужно понять чей подзаказ итд. В общем заранее всех нужных вариантов не предусмотришь. Как в таком случае поступаете вы и как можно считать что сделано правильно?
1. Сразу перепривязать все таблицы друг с другом. То есть в каждой таблице есть внешний ключ к 3 другим.
2. Доставать данные через таблицу или две, если это возможно.
3. Связывать по мере необходимости.
Ну или какие-то другие варианты может?
  • Вопрос задан
  • 92 просмотра
Пригласить эксперта
Ответы на вопрос 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
CREATE TABLE [Performer](
  [ID] [int] NOT NULL,
… [Key]  AS ('P'+CONVERT(varchar,ID])),

CREATE TABLE [Album](
  [ID] [int] NOT NULL,
… [Key]  AS ('A'+CONVERT(varchar,ID)),

CREATE TABLE [Internet](
  [ID] [int] NOT NULL,
  [Kind] [char](1) NOT NULL,
  [Object] [int] NOT NULL,
  [URL] [varchar](250) NOT NULL,
  [Key]  AS ([Kind]+CONVERT([varchar],[object])),

То есть в нужных таблицах делается вычисляемое поле [Key], которое есть и в общих таблицах для объектов, а также в представлениях. Ссылочная целостность поддерживается триггерами.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы