Есть ли проблема с вышеуказанным набором?
Нет, в классическом значении слова нет «проблемы». Вы можете придерживаться своего дизайна, и у него не будет проблем. Но, стандартно? это то, что я буду обсуждать в следующем разделе.
что (нормализация?) Или требуется больше информации ...?
Да, как я подразумевал выше, есть информация, которую я могу предоставить, чтобы стандартизировать или «нормализовать» ваш дизайн. К сожалению, ваша цель создания этой базы данных не совсем ясна. Знание этой цели необходимо для того, чтобы достаточно ответить на вопрос.Однако я остановлюсь на двух возможных целях, которые, я полагаю, у вас есть один из них.
Назначение 1: каждый трек может иметь одно действие максимум: В этом случае вам не нужны две таблицы. Вы можете иметь:
TrackID PK
random columns
random columns of actions /*(will stay null if no action takes place)*/
Цель 2: каждая дорожка может иметь ноль или несколько действий: В этом случае вам необходимо две таблицы в следующем:
Таблица 1:
TrackID PK
random columns
Таблица 2:
ActionID PK
random columns
CreateDate /*(search for creating a DateTime column with default to current date)*/
TrackID FK
Итак, если вы хотите получить последнюю или текущую арендная плата, вы выбираете топ 1 с заказом от CreateDate desc
по отношению к треку.
Да, у вас есть проблема точно. Как вы можете добавить строку в таблицу? Способ создания этих ключей означает, что вы не можете добавить новую строку в любую таблицу, если значение для внешнего ключа уже существует в другой таблице. Это очень плохой дизайн. –
Не должно быть необходимости в том, чтобы обе таблицы имели FK для другого. Вам нужно только показать связь. –
Таблица треков (TrackID) является основной таблицей. Когда «действие» принимается относительно дорожки (строки), таблица действий получает строку, а таблица треков обновляется с помощью ActionID. ActionID в таблице треков не требуется. Однако требуется идентификатор TrackID таблицы действий ... – Suge