Я пытаюсь выбрать один из двух вариантов для моих табличных проектов.Реляционная база данных - лучший вариант при разработке полей
В двух таблицах «CLASS» и «SECTION», перечисленных ниже, для каждой комбинации «YEAR-CLIENT_ID-CLS_SEQ» в таблице «CLASS» в таблице «SECTION» будет одна или несколько записей.
Информация: Обе таблицы CLASS и СЕКЦИЯ являются основными данными, то есть, настройка выполняется вручную, и никакие программные обновления не выполняются. Существуют другие дочерние таблицы транзакций, в которых используются CLS_SEQ и SEC_SEQ; и все таблицы транзакций также имеют столбцы YEAR и CLENT_ID.
Вопрос: Что касается дизайна таблицы, какой вариант лучше для CLS_SEQ и SEC_SEQ?
Поскольку это основная настройка данных, я предпочитаю вариант 1, поскольку он обеспечивает ясность данных и упрощает их обслуживание год за годом. Также в Варианте 1 данные в дальнейших таблицах транзакций также можно получить, передав YEAR и CLIENT_ID (которые всегда доступны в приложении) вместе с CLS_SEQ и/или SEC_SEQ.
Вопрос в том, будет ли это иметь какое-либо существенное влияние на производительность при извлечении данных & в соединениях с использованием варианта 1? Поскольку всякий раз, когда мне нужно вытаскивать «некоторые данные» из таблиц CLASS или SECTION, используя соединение из любой из таблицы child/transaction, мне всегда нужно использовать поля YEAR и CLIENT_ID.
Также обратите внимание, что только за последние 4 года записи будут храниться во всех основных и транзакционных таблицах, а остальные будут заархивированы.
Спасибо и оцените ваше время на этом. Не могли бы вы подробнее рассказать о «необходимости поддерживать дополнительный ключ в вашей памяти». Я уже реализовал Option-2 уже, но не чувствую себя комфортно с этим. В таблицах CLASS и SECTION я ожидаю, что количество записей будет работать в 1000 (максимум 10000), но другие таблицы транзакций могут иметь миллион записей. Тем не менее, я тоже считаю, что вариант-1 был бы лучше, поскольку эти таблицы поддерживаются вручную, это может быть кошмар с Option-2. – user5281896
Мое предположение заключается в том, что при использовании других таблиц, которые вы не использовали, вы будете использовать ключ последовательности разделов. Поскольку это производный ключ, вам нужно будет его где-то сохранить или извлечь из главной таблицы каждый раз, когда вам нужно получить доступ к другим таблицам, где, как и в случае с параметром 1, вы можете всегда обращаться к другим таблицам, если у вас есть входы. –
Еще раз спасибо. Другие дочерние таблицы похожи на «Экзамен», «Марк» и т. Д., Где CLS_SEQ (OR) SEC_SEQ будет внешним ключом. Все необходимые поля ввода, Year, Client_id, Cls_seq/Sec_seq всегда будут доступны в качестве входных данных для чтения/объединения таблиц. – user5281896