Составление таблиц: один ко многим и один к одному одновременно? - PullRequest
1 голос
/ 09 января 2011

Я не уверен, правильно ли я моделирую этот тип отношений, возможно, кто-то может дать некоторое представление о том, является ли это звуком:

Скажем, у нас есть типичные отношения типа «родители-дети», гдеу каждого родителя может быть много детей, но нам нужно следить за единственным (задыхающимся) любимым ребенком родителя ...


Table Parent

- FavoriteChildID

и


Таблица Child

- ParentID

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

Спасибо.

Ответы [ 2 ]

1 голос
/ 09 января 2011

Как насчет дополнительного стола?

table favourite(
  ,parent_id
  ,child_id
  ,primary key(parent_id)
);

Это помогло бы, если бы для всех фаворитовых запросов.

1 голос
/ 09 января 2011

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

Если вам нужен только один фаворит для родителя, возможно, родитель долженстолбец FavoritesChildId.

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

Если вы подозреваете, что в будущем у вас может быть более одного фаворита, то дополнительная работа, конечно, может стоить.

Дизайн действительно зависит от отношений и от того, могут ли быть изменения вбудущее с возможностью различных «любимых» отношений.

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