A gyárak és a vetőmagok egyaránt az adatbáziskezelésben használt eszközök, különösen a szoftverfejlesztés összefüggésében, hogy a tesztet vagy az eredeti adatokat adatbázisokba hozzák és kitöltsék. Segítik az adatok létrehozásának vagy az alkalmazások teszteléséhez vagy beállításához szükséges adat létrehozásának automatizálását és korszerűsítését. Megkülönböztetett céljaik és mechanizmusuk miatt azonban a modellek közötti kapcsolatokat meglehetősen eltérően kezelik.
A gyárak elsősorban az egy- vagy kapcsolódó modell példányok generálására összpontosítanak randomizált vagy előre meghatározott attribútumokkal, gyakran hamis könyvtárak használatára. A vetőmagok viszont inkább egy sor utasítás futtatásáról szólnak az adatbázis kitöltésére bármilyen szükséges adatokkal, amelyek több modellt és kapcsolatukat is tartalmazhatnak.
Meghatározás és cél
A gyárakat úgy tervezték, hogy az egyéni vagy kapcsolódó modell példányokat hamis adatokkal könnyen és következetesen hozzák létre. Ezek lehetővé teszik a fejlesztők számára, hogy meghatározzák a modellek tervrajzát, meghatározva, hogy az attribútumokat hogyan kell kitölteni, és lehetővé téve a modell számos példányának kialakulását a tesztelés vagy az adatbázis -vetés céljából. A gyárak gyakran elszigetelten vagy nagyon világos kapcsolatokkal működnek a modellek között, összpontosítva a modellpéldányok tulajdonságaira és létezésére.
A vetőmagok szkriptekként vagy osztályokként szolgálnak, amelyek gyárakat hívhatnak, vagy közvetlen adatbázis -behelyezéseket hívhatnak az adatbázis kitöltésére. A vetőmagok holisztikusabbak és eljárások, ellenőrzik az adatok létrehozásának sorrendjét és logikáját. Gondoskodnak arról, hogy az adatpopuláció a megfelelő sorrendben történik az adatok integritásának fenntartása érdekében, különösen akkor, ha több egymástól függő táblázatban van.
A kapcsolatok kezelése gyárakban
A modellgyárakban a kapcsolatokat általában úgy kezelik, hogy meghatározzák a kapcsolatokat a gyár meghatározásán belül. Például, ha egy felhasználói modellnek egy-egy kapcsolata van egy profilmodelltel, akkor a felhasználói gyár meghatározhatja, hogy "van" profilja relációs módszerekkel vagy visszahívásokkal, amelyek a felhasználók létrehozásakor kapcsolódó profilokat generálnak és társítanak a kapcsolódó profilokhoz.
A gyárak beágyazhatják a relációs logikát úgy, hogy amikor egy modellgyárat egy példány létrehozására használnak, automatikusan létrehozza és társítja a kapcsolódó modell példányokat ugyanabban a műveletben. Ezt gyakran olyan módszerekkel hajtják végre, mint a „HAS ()`, `for ()”, vagy a kapcsolódó modelleket generáló egyedi kapcsolati visszahívások. Ez a megközelítés megkönnyíti a tesztelést, mivel a kapcsolódó adatokat átláthatóan hozzák létre a fő modell adatok mellett.
A kapcsolatok kezelése magokban
A vetőmagok gyárakat használnak, de megszervezik a teremtés általános áramlását és sorrendjét. Mivel a vetés magában foglalhatja a komplex kapcsolatokat, a vetőmagok általában úgy kezelik a kapcsolatokat, hogy biztosítják a szülői modellek létrehozását a gyermekmodellek előtt, hogy megfeleljenek az adatbázis -korlátozásoknak (például külföldi kulcsok). Például egy olyan kapcsolatban, ahol a felhasználó egy szervezethez tartozik, a Seeders először létrehozza a szervezetet, majd létrehozza a felhasználót egy megfelelő külföldi kulcshoz, amely visszatér a szervezethez.
A vetőmagok bármilyen sorrendben manipulálhatják vagy összehangolhatják az adatok létrehozását, és az egyszerű vagy összetett adatkészleteket kombinálhatják, néha az idegen kulcsok vagy a pivot táblák kifejezett kezelésével sok-sok kapcsolatokban. Gyakran kezelik azokat a zenekarokat, amelyekért a gyárak nem felelősek, például a vetés sorrendjének eldöntése az adatintegritási szabályok teljesítése érdekében több táblázatban.
A kapcsolat bonyolultsága és mintái
A gyárak általában az egyszerű vagy beágyazott modellkapcsolatot határozzák meg beépített módszerekkel, amelyek a kapcsolódó nyilvántartást igény szerint generálják. Az atomteremtés műveleteire összpontosítanak egy modell létrehozására és annak közvetlen kapcsolataira egy hívásban. Például egy felhasználó gyárának meghatározhat egy kapcsolatot a több hozzászólás automatikus létrehozásával, vagy egy olyan profilt, amely a felhasználóhoz tartozik, és a modellpéldányok beágyazott JSON-szerű szerkezetét generálva zökkenőmentesen.
A vetőmagoknak kifejezetten meg kell határozniuk, hogy az esetlegesen sok modellhez kapcsolódó adatok hogyan hoznak létre megfelelő sorrendben. Előfordulhat, hogy először létrehoznak minden szervezetet, majd az összes felhasználót (a felhasználókat a szervezetekkel társítják), majd hozzászólásokat hoznak létre a felhasználókhoz kapcsolódó. Ezt a megrendelést fenntartani kell a külföldi kulcsfontosságú korlátozások kielégítése érdekében. A vetőmagok olyan összetett forgatókönyveket is kezelnek, mint a feltételes vetés, a környezet-alapú vetés vagy az adatok létrehozása csak akkor, ha még nem létezik.
sok-sok kapcsolat
A sok-sok kapcsolat kezelése inkább részt vesz. A gyárak elvonták ezt azáltal, hogy lehetővé teszik a kapcsolatok kialakítását a Pivot Table gyárakkal, vagy olyan módszerekkel, mint a „Csatlakozás ()” Laravel -ben, gyakran a gyár meghatározásában vagy a gyár létrehozása után. Ez megkönnyíti a kapcsolódó modellek generálását, és automatikusan összekapcsolja azokat a Pivot -adatokkal.
A vetőmagok eközben kifejezetten összehangolják a sok-sok összeköttetést azáltal, hogy először mindkét modell példányát hozták létre, majd a Pivot táblázat betéteket meghívják, akár ékesszóló kapcsolati módszerekkel, akár közvetlen adatbázis-lekérdezésekkel. A vetőmagok a pivot táblák populációját az ID-k összekapcsolásával kezelik, és esetleg extra pivot adatmezőket adnak hozzá, biztosítva, hogy az adatbázis tükrözze a helyes modellkapcsolatokat.
idegen kulcsfüggőségek
A gyárak gyakran kezelik a külföldi kulcsfüggőségeket meghatározásaikon belül. Amikor egy gyár létrehoz egy olyan modellt, amely egy másiktól függ, akkor fészkelheti a kapcsolódó gyárakat, hogy a szülő vagy a kapcsolódó modelleket automatikusan előállítsa. Ez a megközelítés csökkenti a nem létező rekordok hivatkozásának kockázatát, és ésszerűsíti az érvényes adatkészletek tesztelésére szolgáló érvényes adatkészletek létrehozását.
A magoknak kifejezetten kezelniük kell a külföldi kulcsfüggőségeket, gyakran szükség van az asztali populáció gondos rendezésére, hogy tiszteletben tartsák ezeket a korlátokat. A vetőmagokban általában a szülő vagy a hivatkozott modellek létrehozása, majd az elsődleges kulcsaik segítségével összekapcsolják a függő modelleket. A vetőmagok tehát zenekarként működnek, amely az adatbázis -populáció áramlását kezeli a relációs integritás szempontjából.
újrafelhasználhatóság és összetétel
A gyárak nagyon újrafelhasználhatók és összetettek. Egyszer meghatározhatók és felhasználhatók önálló és kapcsolódó példányok létrehozására meghatározott kapcsolatokkal többször, támogatva a munkafolyamatok tesztelését vagy a variánsok ismételt vetőmag -adatainak előállítását.
A vetőmagok általában több eljárási szkript, kevésbé használhatóak elkülönítve, gyakran egy adott adatpopuláció forgatókönyvére vagy a környezeti beállításra összpontosítva. Ugyanakkor építőelemekként hívják fel a gyárakat, és értelmes sorrendben állítják össze ezeket a hívásokat egy összetett adatkörnyezet létrehozására.
Tranzakciók és elszigeteltség
A gyárak általában elszigetelten vagy egyetlen gyári hívás részeként hoznak létre példányokat, amelyeket esetleg be lehet csomagolni a tesztek tranzakciójába, de általában nem. Összpontosítanak a modell és annak kapcsolatainak egyszerre történő előállítására.
A vetőmagok gyakran a nagy adatpopulációs szekvenciákat az adatbázis -tranzakciókba csomagolják annak biztosítása érdekében, hogy a teljes vetési művelet sikeres legyen, vagy meghibásodjon, megakadályozva a kapcsolódó táblázatok részleges vagy sérült adatokat. Ez a tranzakciós megközelítés elengedhetetlen, ha a vetőmagok több egymástól függő modellt és kapcsolatot kezelnek.
Előnyök és használati esetek
A gyárak kapcsolatokhoz való használata előnyös a forgatókönyvekben, amelyek megkövetelik a teszt adatok gyors és elkülönített generálását vagy maguk a teszteket. Egyszerűsítik a kapcsolódó modellek létrehozását kézi beavatkozás nélkül, és hagyják, hogy a fejlesztők a kézi adatbeállítás helyett a tesztekre összpontosítsanak.
A vetőmagokat részesítik előnyben a környezeti beállítás, a kezdeti adatpopuláció vagy az összetett vetési forgatókönyvek esetében, ahol az adatbázis-populáció megrendelése és logikája számít, ideértve a többmodellfüggőségeket és az üzleti logikai megfelelést. A Seeders gyárakat és közvetlen adatbázis -műveleteket hív fel, hogy teljes mértékben készen álljon az adatbázis -állapotra a fejlesztéshez vagy a színpadon.
Gyakorlati példa
Fontolja meg a felhasználók és hozzászólásaik létrehozását:
.
- A vetőmagokkal a Seeder először a felhasználókat hoz létre a felhasználói gyár használatával. Ezután külön -külön a postgyár segítségével hozzászólásokat hozzon létre, kifejezetten társítva őket a felhasználókkal egy hurokban vagy kötegben, biztosítva a referenciális integritást.
A gyárak a kapcsolati logika beágyazására összpontosítanak a modell létrehozási folyamatában. A vetőmagok a zenekarra és a rendelésre összpontosítanak, amely biztosítja a következetes általános adatbázisállapotot.
Összegzés
A gyárak a kapcsolatokkal kezelik a relációs teremtés logikájának beágyazását a gyárdefiníciókba, lehetővé téve a kapcsolódó modellek automatikus, beágyazott létrehozását. Elősegítik az egyszerűséget és az újrafelhasználhatóságot, ha egy vagy kis kapcsolódó modellkészletet generálnak, tökéletesen a teszteléshez és a gyors hamis adatok előállításához.
A vetőmagok a kapcsolatokat a teljes adatbázis -populációs folyamatok rendezésének és áramlásának összehangolásával kezelik, biztosítva a kapcsolódó modelleket következetes sorrendben és érvényes idegen kulcsokkal. A gyárakat építőelemekként használják, de kiterjesztik a felelősséget a komplex intermodell-függőségek, a környezet-specifikus adatok és a tranzakciós konzisztencia kezelésére az egész vetés során.
A különbség az absztrakciós szintben rejlik: a gyárak az egyéni modellekre és annak közvetlen relációs adatainak generálására összpontosítanak, míg a vetőmagok koordinálják az adatbázis teljes adatai inicializálását, a modellfüggőségek és a kapcsolatok szélesebb körben történő kezelését. Ez a megkülönböztetés az oka annak, hogy a gyárak deklaratív módon határozzák meg a kapcsolatokat, és a vetőmagok végrehajtják azt az eljárási logikát, hogy ezeknek a kapcsolatoknak megbízhatóan feltöltődnek egy valós adatbázis -környezetben.