Podmínky many-to-many by neměly být vynucovány pomocí spouštěče. Podmínky many-to-many jsou vynuceny vytvořením spojovací tabulky obsahující příslušné klíče, které jsou pak cizím klíčem převedeny zpět do příslušných nadřazených tabulek.
Pokud je vaším záměrem umožnit mnoha zaměstnancům být v oddělení a umožnit zaměstnanci, aby byl členem mnoha oddělení, bude dotyčná spojovací tabulka vypadat nějak takto:
CREATE TABLE EMPLOYEES_DEPARTMENTS
(DEPARTMENTNAME VARCHAR2(99)
CONSTRAINT EMPLOYEES_DEPARTMENTS_FK1
REFERENCES DEPARTMENT.DEPARTMENTNAME,
EMPLOYEENUMBER NUMBER
CONSTRAINT EMPLOYEES_DEPARTMENTS_FK2
REFERENCES EMPLOYEE.EMPLOYEENUMBER);
To předpokládá, že DEPARTMENT.DEPARTMENTNAME
a EMPLOYEE.EMPLOYEENUMBER
jsou buď primární nebo jedinečné klíče v příslušných tabulkách. Zbavte se sloupce EMPLOYEE.DEPARTMENT
protože už to není potřeba. Nyní vytvořením řádků v EMPLOYEES_DEPARTMENTS
tabulky můžete spojit více zaměstnanců s oddělením a jednoho zaměstnance můžete spojit s více odděleními.
Obchodní logika vyžadující, aby mohla být odstraněna pouze oddělení s jedním nebo méně zaměstnanci, by neměla být vynucována spouštěčem. Obchodní logiku by měl provádět kód aplikace, NIKDY spouštěče. Vložení obchodní logiky do spouštěčů je vstupní branou k nekonečným relacím ladění. M̫̣̗̝̫͙a̳͕̮d̖̤̳̙̤n̳̻̖e͍̺̲̼̱̠͉ss̭̩̟ leží takto. Nevzdávejte se. Nevzdávejte se. ̬̦B҉usi͢n̴es̡s logic ̶in spouštěče otevírá hluboké rány ve tkanině světa, skrze které bezbožní bytosti neurčité formy překročí bariéru mezi sféra Nevkládejte, jak jsem řekl, b´u͜siness͞ ̸log̛i͘ç ̵do͢ ͞trigge͠rs͞.̡ Buďte pevní. Odolávejte. Musíte odolat. T̷he ̢tem͟p͞t̶at͏i͝o̶n҉s͘ ̢m͘a̶y ́śing hymns̷ ́o͢f̴ ̸un͘hol̵y r̶ev͢ęla͠t̡ion̴ ͢buţ ́yo͠u̵ mu͏s͝t ͝n͜͏͟o҉t̶͡͏ ̷l̶͡͏t̶͡͏n̶̴̵̢̕n̶̴̵̶̴̵̢̢̕̕n̶̴̵̢̕n̶̴̵̢̕n̶̴̵̢̕n̶̴̵̢̕. Pouze tím, že stojí pevně ve dveřích mezi světy a blokováním odporného záře odhozeného Bú̧s̷i̶̢n̵̵̵̕̕s ́l̴ó̢g̛͟i̕͏c i͞n̕ ͏t̵͜r͢͝i̸̢̛ģ͟ge̸̶͟r̶s͢͜, která zvrátí ve velmi formě ąnd̴̀͝ ç͞a̧͞l͟͜l͟͜s̕͘͢
Neptejte se mě, jak to vím.
Hodně štěstí.