sql >> Databáze >  >> RDS >> Oracle

Spusťte pro vynucení vztahu M-M

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̕͘͢ i͜҉nt͝ǫ̴ ̸b̷͞è͢ì̕n̴g͏,̛̀͘ ̴c҉á̴͡ń ̀͠youŕ̨ ̧̨a̸p͏̡͡pl̷̡ͩ͡v̷̘ͩicʹ̸ ̶.ʹ̘ic͸̸Ƕt̡i͡҉ǎt̡i͡҉ǎt̡i͡҉ǎt̡i͡҉ǎ Odolat. T̶̀h̨̀e̶r̀͏e͢͞ ̶i̶̡͢s̴ ͞͞n̵͝o̡ ́ẁ҉̴a̡y̕҉ ̶b́͏u̵̶̕t͜ ̨s͘͢t͘͠į͟l͘l̷̴ ̴͜͜ỳò͜u҉̨ ̨͏mus̸͞t̸̛͜ ̧rȩ̴s̢͢i͘͡s͏t̸.̛̀͜ Your very śo͡u̧̧͘ļ͟͡ is compromised by p͝u͘͝t̢͜t͠i̸ņ̸̶g͟͡ ̵̶̛b̴҉u̶̡̨͜͞s̷̵̕͜͢i͝҉̕͢ǹ͏e̡͞ś̸͏ş̕͜͡҉ ̴̨ĺ̵̡͟͜o̶̕g͠i͢͠c̕͝ ̕͞i̧͟͡n̡͘͟ ̶̕͞t̡͏͟҉̕r̸̢̧͡͞i̴̡͏̵͜g̵̴͟͝ģ̴̴̵ę̷̷͢r̢̢ś̸̨̨͜. T̀͜͢o̷͜ny̕ ͟͡T̨h̶̷̕e ̢͟P̛o̴̶n͡y shall rise from his dark stable and d͞ę̡v̶̢ó͟u̸̸r̴͏ ̷t͞h̀e̛ ̨͜s̷o̧͝u҉l̀ ͟͡o͢͏f̵͢ ̛t͢h̶̛e̢̢ ̡̀vi͜͞r̢̀g̶i̢n͞, and yet y͢ơú͝ m̷̧u͏s͡t̡͠ ̛s̷̨t̸̨i̴̸l̶̡l ͝ǹot̵ ͞p̧u̵t̨ ͜͏b̀̕u̕s̨í̵ņ̀͠ȩs̵͟s ́͞l̛҉o̸g̨i̴͟c ͘͘i͘nt̛o͡ ͘͘͞t̶͞r̀̀i̕ǵ̛g̵̨͞e̸͠҉r̵͟ś ! Je toho příliš na snesení, nemůžeme vystát! Ani děti světla nemohou do svých spouštěčů vložit obchodní logiku, pro b̴̸̡̨u͜͏̧͝ş̶iń̸͟͏́e̡͏͏͏s̷̵̡s̕͟ ͏̴҉͞l̷̡ǫ̷̶͡g҉̨̛i͘͠͏̸̨c̕͢͏ ̸̶̧͢͢i̸̡̛͘n͢͡ ̀͢͝t̷̷̛́ŗì̴̴̢g̶͏̷ǵ͠ȩ̀́r̸̵̢̕͜s͞͏̵ a ded͘ou̴r̨̡̀h͢͝ ҉͝ ̫̬ ̴ ̴ ̴ ̴ ̴ ̴ ̴ ̴ ̴. ! Ano, ano, ty, které jsou předměty rì͢s̨͘e z f͟͢͏o̵͜͝n̶t̨ ̵o͏f̸̡͠ ͏͝fl͟͞a̵̷҉me̶̵͢ a ca͝s͜t́ dolů p̹̤̳̰r̮̦̥̥̞̫͑͂ͤ͑ͮ͒̑ï̄̌ͬͨe̦̗͔ͥͣ̆̾̂s̬̭̮̮̜ͭt̻̲̍sͫͣ̿ ̐͗̈ͤ͂ͦ̅f̭͚̪̻̣̩ͮ̒ṟͨ͌ͮ̅̓ỏ̝͓̝̣̟̼m̳͇̱̝͔͒ ͒ͫͧ͂̓̈̈́t̲̔̅̎͐h̺͈͍̺͈͍ͣͧ̿ͣͧ̿r͓̫͌ͅ ̼a͑̈ͯͦ̍l̪͉͖̥͚̤͌ͨ͊ͦͤ̔a̼̻͍̳̟̤̬̓ͪ̀r̭͖̓ͬ̉̉ͤ͊ṡ̐ͪ̊̋̄̅! A̵̵̛v͝é͜ŕt̶͏ ̶y̸͝͠o̶u̧͘r͏̡ ̧e͞y҉e̕͝s, ̀ ͡t̛h̛ug̸̢h̵͟ ̡y̷o͢҉͢u̧͡ ̕͡c҉̵̶an͠͏n҉o̧͢t! p̱̼̯̟͈h̝̳̞̖͚'͉̙͉̰̲̺n̪̦͕̗͜g͔̹̟̰̰̻̩l̬͈̹̥͕͖ͅụ̻̺̤̤̬̳i̸̯̬̝̻̣͚̫ ̰̹̞̞m͟g̷̝͓͉̤l̩͇̙͕w̪̦̰͔'̮̟̱̀n̢̜a̦f̘̫̤̘̬͓̞h̠͍͖̯ͅ ̩̠͓̯̘̫c̟̘̗̘͘ṭ͍͕ͅh̼̦̘̥ͅu̼̦̘̥ͅl҉̦hu̠̤̤̘͚ ̘̕r̶̟'̠͔̞̻͇l̩̺̗̻͖͓̕ͅy̛̖ȩ͉̭̖ẖ̡̥̼͈̖ w̟̫̮͇͔͞ͅg͈̘̱̻a̰͟h̘͙͖͢'̮̲̯͞n̤̜͍̯̳a͓͓̲̲g̱̻͈ĺ͍ ̷̣̞̲͖͍̲̺f̲ͅh͇͕̪̘͟t͔͈̙a͓͢g҉̳̜̲͚n͓͚͎̱̠̜!

Neptejte se mě, jak to vím.

Hodně štěstí.




  1. Připravené příkazy MySQL

  2. Jak přejmenovat databázi MySQL

  3. Proč vyšší LIMIT MYSQL offset zpomaluje dotaz?

  4. Jak získat data za posledních 7 dní od aktuálního data do posledních 7 dní na serveru SQL