Проблемы с дизайном ER-модели
Я пытаюсь разработать модель для нашей будущей базы данных наших игрушек и некоторых измерений, которые должны быть сделаны после производства. У меня проблемы с пониманием, как смоделировать это. Я пробовал несколько способов, но ни один из них не кажется оптимальным, и в итоге я всегда терял связь между сущностями.
Чего мне нужно добиться, так это какого-то осмысленного отношения между следующим:
- Игрушка (с некоторыми тривиальными свойствами).
- Серия игрушек (несколько игрушек могут относиться к одной серии, а игрушка может принадлежать только одной серии).
- Шаги измерения. В настоящее время есть 6 из этих шагов. Каждый шаг имеет свои входные параметры, которые различаются по типу и количеству (например, только 3 параметра для шага измерения 1 и 10 параметров для шага измерения 2).
- Для каждой серии определяется последовательность этих этапов измерения. Допускаются дубликаты тестов (например, шаг измерения 1 > шаг измерения 4 > шаг измерения 1 является допустимой последовательностью). Последовательность вместе с параметрами должна храниться где-то для дальнейшего использования.
- Каждая игрушка проходит последовательность измерений, которая определяется ее серией. Все результаты должны храниться где-то (для каждой отдельной игрушки).
Если я разделю шаги измерения на их собственные таблицы, я не смогу условно связать их (как внешние ключи) с какой-либо другой таблицей. Если я пытаюсь сериализовать часть данных, я теряю способность устанавливать связи между отдельными этапами измерения, результатами измерения (по крайней мере, с помощью запросов) и т. Д.
Я знаю, что люди здесь, как правило, ненавидят / не отвечают на подобные "дискуссионные" вопросы, но я бы попросил вас, по крайней мере, указать, что является хорошей практикой в системе, где мне нужно хранить это локально на машина, но нужна база данных для хранения данных - чтобы перейти к последовательным данным и просто установить общие отношения там, где это легко сделать, или продолжать пытаться максимально их нормализовать?
1 ответ
Если шаги измерения имеют большинство атрибутов (или имеют одинаковый тип, например, то, что вы называли ПАРАМЕТРАМИ), и я правильно понял ваши определения, я бы сделал что-то подобное.
Это может быть отправной точкой.
+----------------------------+ +------------------------------+
| TOYS | | TOY_SERIES |
+-----+----------------------+ +---------+--------------------+
| PK | ID_TOY | +----------+ PK, FK1 | ID_S +--------+
| | | | +------------------------------+ |
| FK1 | ID_S +---------+ | | ... | |
+----------------------------+ | | | |
| | ... | | | | |
| | | | | | |
+-----+----------------------+ +---------+--------------------+ |
|
|
|
|
+------------------------------+ |
| BR_SER_MEAS | |
+---------+--------------------+ |
| PK, FK1 | ID_S +--------+
| | |
| PK, FK2 | ID_M +--------+
| | | |
| PK | ID_SEQ | |
| | | |
+---------+--------------------+ |
|
|
+------------------------------+ |
| MEASURE_STEPS | |
+------------------------------+ |
| PK ID_M +--------+
+------------------------------+
| PARAM_01 |
| ... |
| PARAM_10 |
| |
| |
+------------------------------+