Datentechnisch gesehen ist das ja, wie schon bemerkt, eine n:m Beziehung. Und dafür brauchst du eine Relationstabelle. Du hast also neben den Tabellen Modules und Parts dann noch das Bindeglied ModulePart.
Auf
Gui Ebene würde ich das mit 2 Listboxen lösen, und einer Combobox (als Beispiel). In der Combobox wählst du das Module aus. In der ersten Listbox die Parts, die nicht zum selektiertem Module gehöre, und die 2. Listbox mit den selektierten Parts im Module. Alternativ zu den 2 Listboxen geht natürlich auch eine TCheckListBox, wo du dann die Parts einfach durch einen Haken markierst. Persönlich finde ich erste Variante eleganter, ist aber Geschmackssache... Aber automatisiert kriegst du das wohl nicht hin. Ich denke, du wirst bei jedem Modulwechsel deine Relationstabelle abfragen müssen und dann die entsprechenden Listboxen bzw. CheckListBox manuell füllen.